重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你还没听懂楼上几位的意思。其实这个定义就是定义了一个字节的外部RAM,其地址为0xfeff。即将外部RAM中地址为0xfeff的字节定义为了ZXK这个名字。对它赋值即是对片外RAM的地址为0xfeff的字节赋值。这个和P0、P2没有关系,只是在程序执行过程中,访问这个外部RAM字节的时候P0口是0xff,P2口是0xfe。(根据这个地址来确定RAM中的哪个单元被选中)
成都创新互联公司是一家专业提供冷水江企业网站建设,专注与成都做网站、网站制作、成都外贸网站建设、HTML5建站、小程序制作等业务。10年已为冷水江众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
比如ZXK=0x00bf这条赋值是不行的,因为ZXK是字节变量,ZXK=0xbf这条赋值是对的,作用是将片外RAM的地址为0xfeff的字节赋值为0xbf。
首先说明:由于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。
不知道说明清楚了没有?
是单片机的C语言编程吗?
XBYTE[ ]是用来对一个外部的内存单元进行操作的宏,常常用在将单片机外设作为一个内存单元来访问的情形XBYTE[0x8000]=0x08的意思是对外部的内存单元0x8000写入0x80数据,而且会调用MOVX汇编指令,会产生WR/RD信号,例如你一个外设的使能端接在P2.7脚,在数据线以及WR都接好的情况下就可以给外设写入0x08数据