第1个回答 2010-01-02
这个问题阁下可以仔细看一看keil c51使用方法,尤其是absacc.h、reg51.h这两个头文件。
reg51.h头文件里已经包括的常用的特殊功能寄存器的定义,在使用时把它包括进去就行了。
例如:C文件里加了#include<reg51.h>,
程序里就可以直接写:P0=0x43;这样的语句。
对于一般的寄存器,要在前面加上:#include<absacc.h>,
要注意这些关键字的含义:
CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
分别代表:程序区、片外数据区、可分页数据区、片内数据区....
使用时可以这样定义:
#define ASW XBYTE[0x8012]
#define ASR DBYTE[0x0032]
ASW就代表片外数据存储区 ,地址是0x8012;
ASR就代表片内数据存储区 ,地址是0x0032;
另外:用_at_关键字
idata ASW _at_ 0x40;指定list结构从40h开始。
xdata char text[25b] _at_0xE000;指定text数组从0E000H开始
但是在具体使用时还有一些要求和限制,这个阁下自己看资料吧。