[51单片机] c8051f系列mcu问题排故,谢谢各位

[复制链接]
 楼主| alsort 发表于 2016-2-15 15:10 来自手机 | 显示全部楼层 |阅读模式
大家新年快乐

最近调试时突然出现一种奇怪的现象(bug)

定义全局变量flag(char类型)声明时赋值为0

串口通信接收一串数据成功后flag变为1,主程序中轮询if(flag)。

带仿真器跑一切正常

上电自己跑的时候会出现没有串口通信也会执行if(flag)条件内语句

通过IO监测,出现上述情况时flag并未在串口中断中被赋值为1

各位帮忙分析下

有避免的方法就是if(flag==0x55……)加强判断复杂性!

但治标不治本,请大神帮忙!
蒙面男@蒙面女王 发表于 2016-2-15 15:25 | 显示全部楼层
我也出现过类似的情况,一个标志位莫名其妙地被修改了。我也找了好久的原因,后来我重复编译 下载就突然自己好了。我怀疑是不是编译的问题
 楼主| alsort 发表于 2016-2-15 15:31 来自手机 | 显示全部楼层
蒙面男@蒙面女王 发表于 2016-2-15 15:25
我也出现过类似的情况,一个标志位莫名其妙地被修改了。我也找了好久的原因,后来我重复编译 下载就突然自 ...

我这个情况在每次上电时有一定概率出现,一开始也怀疑编译器问题
ningling_21 发表于 2016-2-15 16:15 | 显示全部楼层
蒙面男@蒙面女王 发表于 2016-2-15 15:25
我也出现过类似的情况,一个标志位莫名其妙地被修改了。我也找了好久的原因,后来我重复编译 下载就突然自 ...

变量需初始化后才能使用,还要注意变量的类型,有时把变量声明为volatile ...
wape271 发表于 2016-2-17 08:45 | 显示全部楼层
我遇到的一个现象,若变量定义为xdata,在使用串口的时候某个数据会发生变化,将xdata删除就好了。楼主试试看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

86

帖子

0

粉丝

12

主题

86

帖子

0

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