导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:请问高手:C51编程的一个简单“赋值异常”问题:[KeyBoard]

 *第6200篇: C51编程:请问高手:C51编程的一个简单“赋值异常”问题:急切,盼指导!

  
楼 主:KeyBoard 2002年11月12日11:16
 C51编程:请问高手:C51编程的一个简单“赋值异常”问题:急切,盼指导!
我用C51:  EasyPack仿真器,用keil的编译器,其他的编译器也出现过这种“赋值异常”的
情况:

我这样定义以下三个变量:

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  
情况也不相同!

究竟什么原因呢?
急死我了,盼指点!


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:硬件:关于无线发送模块PTR2000,在他的数据输入端可以监测到电平信号跳变,而输出端没有任何信号,

[下一篇主题]:硬件:请问设计pcb板的时候如何清楚地知道每一个器件的封装形式?