打印

keil在debug中有些程序语句无法跑到的问题

[复制链接]
6628|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lb0577|  楼主 | 2009-11-5 16:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在用 keil调试C51程序时,发现有些语句无法跑到,但编译都没问题,逻辑也没问题,正常理解来说肯定会跑到的,但keil却把那几句语句跳过了,而且更奇怪的是,同样的语句放在其他的字程序确可以跑。这是为什么啊?有没有遇到同样情况?


如图上圈的语句,在调试中被无情的跳过不执行,为什么啊??

相关帖子

沙发
lb0577|  楼主 | 2009-11-5 16:01 | 只看该作者
先谢谢各位大侠!:handshake

使用特权

评论回复
板凳
xlsbz| | 2009-11-5 16:14 | 只看该作者
说明这些东邪没用啊  或者是 以前有过这种句子啊!! 比如说startup里面有啊

优先级搞最低就能运行到了!!

使用特权

评论回复
地板
lb0577|  楼主 | 2009-11-5 16:37 | 只看该作者
谢谢ls!再举个例子:(很简单矩阵key扫描程序)
P1 = 0x0f; keybmp = P1;
a2= (keybmp & 0x0f)^0x0f;
switch(a2) .. ... ..

这里的a2的值不会随着端口P1变化而变化。造成switch语句正确选择!

刚才,我人为地在 a2= (keybmp & 0x0f)^0x0f;和switch(a2)语句之间增加一些赋值语句!

如:
a2= (keybmp & 0x0f)^0x0f;
a2=0x0f;
_nop_();
a2=a2++;
switch(a2)

编译之后(无错误、无警告),但是红色语句还是被跳过不执行!
奇怪了!

使用特权

评论回复
5
ma1986| | 2009-11-5 17:14 | 只看该作者
被优化了,是不是么有添加 volatile

使用特权

评论回复
6
原野之狼| | 2009-11-5 18:31 | 只看该作者
编译优先级 设置为 不优化 然后再DEBUG

使用特权

评论回复
7
xlsbz| | 2009-11-6 08:03 | 只看该作者
//还是用volatile 好点        

volatile unsigned char  i;

        i = 1;
        i = 2;
        i = 3;

使用特权

评论回复
8
lb0577|  楼主 | 2009-11-6 08:17 | 只看该作者
:)谢谢ls各位老师。稍后我再按照你们提供的思路进行。:handshake

使用特权

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

本版积分规则

30

主题

345

帖子

2

粉丝