单片机里xbyte和xdata到底什么关系啊?

Python040

单片机里xbyte和xdata到底什么关系啊?,第1张

首先说明:由于C语言是字符大小写敏感的,所以没有xbyte,而只有XBATE!下面说一下,XBATE和xdata的意思。xdata是C51关键字,说明变量的存储区间,它是指单片机的扩展存储区域(也称外部存储、片外存储,尽管物理存储器也可能在单片机芯片内部),最大64kByte,在汇编语言中,需要通过用16位指针DPTR来访问。XBATE在ABSACC.H文件中为一个宏定义#define XBYTE ((unsigned char volatile xdata *) 0)也就是说,通过直接地址引用该位置的值。例如在xdata的04H单元内存放了一个字符'c',则XDATA[4]就是引用了04H的内容,也就是'c'。同样的还有DBYTE,CBYTE,PBYTE等单字节引用data、pdata,code空间的数据,还有XWORD,DWORD,CWORD,PWORD等双字节引用xdata,data,code,pdata空间的数据的,但要注意它们是以2字节为一个计数单元。例如 XWORD[4]是引用xdata空间中08H,09H两个单元构成的unsigned int。不知道说明清楚了没有?

指令接P2,数据接P0,如

#define COM XBYTE[0xdb00]

#define PA XBYTE[0xdb01]

#define PB XBYTE[0xdb02]

#define PC XBYTE[0xdb03]