我这样定义以下三个变量:
data unsigned char AAAAA;
xdata unsigned char BBBB;
data unsigned char MyTmp;
我这样使用:
MyTmp=55; //随便一个小于255的数据
AAAAA = MyTmp;
BBBB = MyTmp;
只要MyTmp是个确定写死的数据,如这里,程序中就固定为55,则这段程序放在任何地方,
执行都正确。
----------------------------------------------------------
如果MyTmp是个从串口接收到的数据,这段程序放在串口中断服务程序中:
则
AAAAA = MyTmp; //执行正确,因为AAAAA定义为片内
BBBB = MyTmp; //执行错误,因为AAAAA定义为片外
我看了汇编代码:
BBBB = MyTmp; 这里2中情况下,竟然完全相同:
mov dptr,#0063
mov A,#MyTmp
movx @dptr,A
但不知道:BBBB我定义为片外:怎么会分配到,#0063呢?
-------------------------
另外
MyTmp 我定义成 data unsigned char 和 xdata unsigned char
情况也不相同!
究竟什么原因呢?
急死我了,盼指点!