您的位置 首页 数字

51单片机keilC中头文件absacc.h效果

当51单片机通过8255和锁存器74LS273来扩展IO时,经常用到头文件absacch。在程序中,用#includeabsacch>即可使用其中定义的宏来访问绝对

51单片机经过8255和锁存器74LS273来扩展IO时,常常用到头文件absacc.h。

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

例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD [0x0002];指向外RAM的0004h地址

KEIL 中ABSACC.H 界说如下:

#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

再如:

#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组端口寄存器)

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部