您的位置 首页 软件

单片机头文件的效果

刚刚在看52单片机和GPS通信程序的时候,看到了一个函数,absacch,貌似从来没有遇到过,百度了一下,结合自己的理解,整理如下:http:bl

刚刚在看52单片机和GPS通讯程序的时分,看到了一个函数,absacc.h,形似从来没有遇到过,百度了一下,结合自己的了解,收拾如下:

http://blog.sina.com.cn/s/blog_4f8cdc9e0100g1qp.html《51单片机keilC中头文件absacc.h效果》

http://apps.hi.baidu.com/share/detail/716779《absacc.h库介绍》

http://blog.sina.com.cn/s/blog_5f0187c50100e0nt.html《#include的效果(转)》

就看这几个根本够了,应该能理解这个文件是什么了:

在程序中,用“#include”即可运用其间界说的宏来访问肯定地址,包含:
CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD

例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD [0x0002];指向外RAM的0004h地址 //WORD是一个字,两个字节,故为0004h

#define COM8255 XBYTE[0X060FF] //后边若呈现COM8255,则单片机端口P0和P2联合输出0X060FF肯定物理地址(地址指向82C55指令寄存器)
#define PA8255 XBYTE[0X000FF] //后边若呈现PA8255,则单片机端口P0和P2联合输出0X000FF肯定物理地址(地址指向82C55的A组端口寄存器)
#define PB8255 XBYTE[0X020FF] //后边若呈现PB8255,则单片机端口P0和P2联合输出0X020FF肯定物理地址(地址指向82C55的B组端口寄存器)
#define PC8255 XBYTE[0X040FF] //后边若呈现PC8255,则单片机端口P0和P2联合输出0X040FF肯定物理地址(地址指向82C55的C组端口寄存器)

同理,在GPS与单片机的通讯中,以下的宏界说就好了解了:

#define gps_LG0 XBYTE[0x0]
#define gps_LG1 XBYTE[0x1000]
#define gps_LG2 XBYTE[0x2000]
#define gps_LG3 XBYTE[0x3000]
#define gps_LAT0 XBYTE[0x4000]
#define gps_LAT1 XBYTE[0x5000]
#define gps_LAT2 XBYTE[0x6000]
#define gps_LAT3 XBYTE[0x7000]
#define UTC0 XBYTE[0xc000]
#define UTC1 XBYTE[0xd000]
#define UTC2 XBYTE[0xe000]
#define UTC3 XBYTE[0xf000]

#define SNum XBYTE[0xa000]

无非便是使用XBYTE来使得界说的宏指向一个实践的物理地址。

在keil中,能够直接看到关于这个文件的界说:

/*————————————————————————–
ABSACC.H

Direct access to 8051, extended 8051 and Philips 80C51MX memory areas.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
————————————————————————–*/

#ifndef __ABSACC_H__
#define __ABSACC_H__

#define CBYTE ((unsigned char volatile code *) 0)
#define DBYTE ((unsigned char volatile data *) 0)
#define PBYTE ((unsigned char volatile pdata *) 0)
#define XBYTE ((unsigned char volatile xdata *) 0)

#define CWORD ((unsigned int volatile code *) 0)
#define DWORD ((unsigned int volatile data *) 0)
#define PWORD ((unsigned int volatile pdata *) 0)
#define XWORD ((unsigned int volatile xdata *) 0)

#ifdef __CX51__
#define FVAR(object, addr) (*((object volatile far *) (addr)))
#define FARRAY(object, base) ((object volatile far *) (base))
#define FCVAR(object, addr) (*((object const far *) (addr)))
#define FCARRAY(object, base) ((object const far *) (base))
#else
#define FVAR(object, addr) (*((object volatile far *) ((addr)+0x10000L)))
#define FCVAR(object, addr) (*((object const far *) ((addr)+0x810000L)))
#define FARRAY(object, base) ((object volatile far *) ((base)+0x10000L))
#define FCARRAY(object, base) ((object const far *) ((base)+0x810000L))
#endif

#endif

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/255312.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部