请问高手 单片机编程中#define ZXK XBYTE[0xfeff]中XBYTE[0xfeff]是什么意思 能讲详细点吗?

谢谢各位。可能我问得不是很清楚
我们这学期教单片机,C语言版,老师教得有点快,有些地方没弄懂
我重新问下:是否可以理解为 定义P2口的地址为0xfe,P0口的地址为0xff,然后用一个自定义的符号ZXK来表示它们合起来的地址,即ZXK=0xfeff.那0xfeff的二进制为1110111111111111,是说P2.4端口起作用吗?还有,在接下来的语句中,能给ZXK重新赋值吗?能的话,要怎么知道给它赋的是高位,还是低位呢?如我若再进行操作:ZXK=0xbf,是改变P2口地址的值?那如何改变P1口地址的值呢,这样可以吗:ZXK=0x00bf?
附:以下是代码
#include<reg51.h>
#include<absacc.h>
#define ZXK XBYTE[0xfeff]
#define ZWK XBYTE[0xfdff]
void delay()
{
unsigned int i=40000;
while(i--);
}
void main()
{
unsigned char i,j,a;
while(1)
{ ZXK=0xbf;
for(i=4;i<8;i++)
{
ZXK=1<<i;
delay();
}
for(j=4;j>0;j--)
{ a=j-1;
ZXK=1<<a;
delay();
}
}
}

你还没听懂楼上几位的意思。其实这个定义就是定义了一个字节的外部RAM,其地址为0xfeff。即将外部RAM中地址为0xfeff的字节定义为了ZXK这个名字。对它赋值即是对片外RAM的地址为0xfeff的字节赋值。这个和P0、P2没有关系,只是在程序执行过程中,访问这个外部RAM字节的时候P0口是0xff,P2口是0xfe。(根据这个地址来确定RAM中的哪个单元被选中)
比如ZXK=0x00bf这条赋值是不行的,因为ZXK是字节变量,ZXK=0xbf这条赋值是对的,作用是将片外RAM的地址为0xfeff的字节赋值为0xbf。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-26
哥们你懂不懂汇编吗
这用汇编来解释最好
这两条指令时
MOV DPTR,#FEFF
MOVX A,@DPTR

通俗点就是:
就是定义了外部RAM的地址是0xfeff,是定义了P0口和P2口高位时0xfe低位是0xff。
在给他赋值时是给你定义好的地址赋值,与你之前的#define定义的没有关系了,ZXK的值可以用平P0口来读数据或者是写数据。
第2个回答  2010-11-26
xbyte 代表的是外部存储器的一个字节。具体的可以查看keil C编程,上面对内部外部的存储器都有专门的保留字来指示。
第3个回答  2010-11-26
表述ZXK这个IO或者端口的地址是0xFEFF。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网