打印
[51单片机]

c8051f系列mcu问题排故,谢谢各位

[复制链接]
1029|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
alsort|  楼主 | 2016-2-15 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家新年快乐

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

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

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

带仿真器跑一切正常

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

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

各位帮忙分析下

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

但治标不治本,请大神帮忙!

相关帖子

沙发
我也出现过类似的情况,一个标志位莫名其妙地被修改了。我也找了好久的原因,后来我重复编译 下载就突然自己好了。我怀疑是不是编译的问题

使用特权

评论回复
板凳
alsort|  楼主 | 2016-2-15 15:31 | 只看该作者
蒙面男@蒙面女王 发表于 2016-2-15 15:25
我也出现过类似的情况,一个标志位莫名其妙地被修改了。我也找了好久的原因,后来我重复编译 下载就突然自 ...

我这个情况在每次上电时有一定概率出现,一开始也怀疑编译器问题

使用特权

评论回复
地板
ningling_21| | 2016-2-15 16:15 | 只看该作者
蒙面男@蒙面女王 发表于 2016-2-15 15:25
我也出现过类似的情况,一个标志位莫名其妙地被修改了。我也找了好久的原因,后来我重复编译 下载就突然自 ...

变量需初始化后才能使用,还要注意变量的类型,有时把变量声明为volatile ...

使用特权

评论回复
5
wape271| | 2016-2-17 08:45 | 只看该作者
我遇到的一个现象,若变量定义为xdata,在使用串口的时候某个数据会发生变化,将xdata删除就好了。楼主试试看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

86

帖子

0

粉丝