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

[复制链接]
 楼主| 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)

编译之后(无错误、无警告),但是红色语句还是被跳过不执行!
奇怪了!
ma1986 发表于 2009-11-5 17:14 | 显示全部楼层
被优化了,是不是么有添加 volatile
原野之狼 发表于 2009-11-5 18:31 | 显示全部楼层
编译优先级 设置为 不优化 然后再DEBUG
xlsbz 发表于 2009-11-6 08:03 | 显示全部楼层
//还是用volatile 好点        

volatile unsigned char  i;

        i = 1;
        i = 2;
        i = 3;
 楼主| lb0577 发表于 2009-11-6 08:17 | 显示全部楼层
:)谢谢ls各位老师。稍后我再按照你们提供的思路进行。:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

346

帖子

2

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