C51单片机,为什么会出现变量值异常的情况?

我现在在用单片机做一个无线的角度测量显示,对其中一个静态全局变量,只在中断中修改其值为1或者0,别的子程序中都是调用,但是测试时发现它的值莫名其妙的变成了0x55,自己没有找到原因,希望有经验的帮忙分析一二,感谢!
单片机用的是STC12C5A60S2,编程用的KeilC51u4,用STC-ISP下载,如需其他信息可百度私信联系或Q118,1755,766

1,你这个别人比较难帮助,因为程式里面有哪些调用不是很清楚
2,你可以打开仿真逐步运行,然後看这个变量在哪里被改变了
3,Keil里面是可以看变量变化的,你这里找找这方面的资料看看追问

这个问题好像不能通过逐步运行找原因,因为是在中断接收到数据之后才会出现的。我在调试的时候不打开传感器,不发串口数据,这个变量就是正常的,打开之后这个变量就变成了0x55,感觉很奇怪。

追答

你查看改变这个变量的程序,只看可以改变的地方

追问

这个我查看过了,只有在某个按键中断里面,会将这个变量值改变,初始化这个值是0,改变的程序是a=1-a,别的就没有了。0x55这个东西串口数据里面倒是有,但是不知道为什么会赋给这个变量

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-13
申明变量的时候没初始化。我遇到过
第2个回答  2015-03-27
把变量声明为volatile试试追问

问题依旧,不过提供了一个思路

追答

借楼补充下:这个问题好像不能通过逐步运行找原因,因为是这个现象是在中断接收到数据之后才会出现的。我在调试的时候不打开传感器,不发串口数据,这个变量就是正常的,打开之后这个变量就变成了0x55,感觉很奇怪。

第3个回答  2015-03-27
全局变量还静态 你应该先弄清楚静态变量追问

变量声明加了static ,不应该叫静态吗?

追答

//tieba.baidu.com/i/sys/jump?un=%C1%D5%E6%A4SDBT" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%C1%D5%E6%A4SDBT" target="_blank" class="at">琳妞SDBT :全局变量都是静态变量

相似回答