absacc.h
LeeAn 2005-07-21 12:17:06 介绍是说这个头文件主要用来访问“绝对地址”。
绝对宏:
在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括:
CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
具体使用可看一看absacc.h便知
例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD [0x0002];指向外RAM的0004h地址
这些都还好理解。
但是最近读到一程序:
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define COM8255 XBYTE[0x007F] //命令口地址
#define PA8255 XBYTE[0x00FC] //A口地址
#define PC8255 XBYTE[0x00F] //C口地址
void printchar(uchar *p);
void main(void) //主函数
{
uchar idata chara[]="HELLO"; //测试用的字符串
COM8255=0x8E; //输出方式选择命令字
printchar(chara); //打印字符串
}
void printchar(uchar *p) //打印字符串子函数
{
while(*p!='\0')
{while((0x80&PC8255)!=0); //查询等待打印机的BUSY状态
PA8255=*p; //输出字符
COM8255=0x00; //模拟STB脉冲
COM8255=0x01;
p++;
}
}
是《单片机C语言编程与实例》中的例程(其实书中还有许多这种程序,另有这种程序的书也不只这一本,我在书城看见很多),就是通过《absacc.h》定义访问的“外部绝对地址”不是在程序/数据存储芯片中,如上例,是将C51与外围并行接口8255芯片连接。PA8255,PC8255就是8255芯片的PA(8个)口,PC(8个)口。
从“访问存储芯片内部地址”到“将并行接口8255芯片的外部接口用起来像C51自身接口一样方便”,我实在不明白。
要电路的大侠们请留下信箱,我会将这个电路图发过去。(电路很简单)