大家有没有遇到过全局位变量(bit)被篡改的情况???

[复制链接]
3384|8
 楼主| mcuatcn 发表于 2007-7-29 18:27 | 显示全部楼层 |阅读模式
谁动了我的全局BIT(位)变量????
大家有没有遇到过全局位变量(bit)被篡改的情况???

我在我的代码中定义的全局位变量发现在某些情况下会被修改,但是我仔细分析过我的代码,我没有主动修改过它,可是不知道为什么有时会被改变??

我在猜测会不会是这种情况:是不是我的DATA空间不足?当有大量事件触发时函数多次入栈导致占用大量的DATA空间,而我的全局位变量就被牺牲掉了???可是我觉得不因该,既然是全局变量,编译器不会释放它占用的空间的啊!有点晕呼,呵呵,希望有高手指点一二,不胜感激!

环境说明:
51类单片机,256B DATA
我已经使用了181.1(好像有点多)
全局BIT(位)变量修改之后全部变为1
lbx_00 发表于 2007-7-29 20:06 | 显示全部楼层

181已经超出了128,有寻址方式的问题

直接寻址找到的是特殊寄存器,间接寻址找到的是RAM
 楼主| mcuatcn 发表于 2007-7-29 20:15 | 显示全部楼层

哦,我忘了说了,这个单片机是52类单片机,idata范围是256B

ayb_ice 发表于 2007-7-30 07:39 | 显示全部楼层

位变量也是字节变量的一部分...

肯定是被指针或字节方式改变了...
古道热肠 发表于 2007-7-30 10:17 | 显示全部楼层

楼上说得对,查找指针趆界

  检查数组的使用是否出界,可以打乱全局变量定义的顺序,或许会出现异常现象的,这时查起来就好查了。
qingqiu647 发表于 2007-7-30 15:55 | 显示全部楼层

试试部分全局变量定义用idata方式

AIRWILL 发表于 2007-7-30 18:00 | 显示全部楼层

答非所问

除了"野指针"会干这样的事情, 不会出现这样的问题. 好好检查你的程序吧
 楼主| mcuatcn 发表于 2007-7-31 17:36 | 显示全部楼层

谢谢大家

那我明白了,估计是被指针的尾巴扫掉了。。。
我知道问题在哪了
非常感激阿。。
wayner 发表于 2007-8-1 06:53 | 显示全部楼层

解决了问题,把经验与大家分享也是很好的

您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

22

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部