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

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

   KeyBoard 
KeyBoard发表的帖子 

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

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

发表时间:2002年11月12日11:16:00

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:硬件:关于无线发送模块PTR2000,在他的数据输入端可以监测到电平信号跳变,而输出端没有任何信号,
[下一篇帖子]:硬件:请问设计pcb板的时候如何清楚地知道每一个器件的封装形式?那位大虾知道关于IC封装形式着方面知