是不是KEIL软身的问题

[复制链接]
2696|5
 楼主| soch 发表于 2010-3-24 17:00 | 显示全部楼层 |阅读模式
void write_byte(uchar bdat)
{

uchar i,j;

for(i=0;i<8;i++)

{



j=(bdat>>i)&0x01;

//j=bdat>>i;

//j=j&1;

write_bit(j);


}

}大家看一下程序,这程序的原意是分离出一个字节每一位,可调试j 每次循环都是0,而j=bdat>>i;j=j&1;这两条语句代替调正常,可奇怪的把程序仿真还正常用运行

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
zhaoyu2005 发表于 2010-3-25 09:17 | 显示全部楼层
你在汇编窗口看下就知道咋回事了,一般是显示刷新咋成的,前一个语句执行完了,但是j的数值还没有刷新,在write_bit(j)之前加个nop语句好像就可以了;
 楼主| soch 发表于 2010-3-28 10:53 | 显示全部楼层
好像不是那么回事啊,单步运行,八次for循环,j都直是0
zhaoyu2005 发表于 2010-4-2 13:11 | 显示全部楼层
别的地方有没有j这个变量?
原野之狼 发表于 2010-4-2 13:55 | 显示全部楼层
调试时先不优化程序
lhj200304 发表于 2010-4-2 15:41 | 显示全部楼层
keil的版本要用新一点的,我以前遇到的情况和你是一样的 ,后来换了个新版本就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

41

帖子

1

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