在IAR debug模式下使用option优化MSP430代码

[复制链接]
 楼主| gaochy1126 发表于 2012-7-22 20:56 | 显示全部楼层 |阅读模式
IAR debug模式 默认option选择 low,release模式下默认选择 high,代码在选择low时运行正常,设置为high就出错 ,如下

data[] ={0xAA,0x11};
if ((data[0]&0x0f) == 0x00)
{
..............
}

low设置下可以进入,high设置下程序首次运行可以进入,以后就不能进入了。debug调试发现运行时判断条件值竟然为data[0]的值,也就是0xAA

分析原因,data[0]值已赋值,如果期间未被改变时,判断条件也会变成确定值会被优化掉。
由于data[0]的值已确定,判断的条件的值也已确定,所以会被优化。可以改为如下进行测试
volatile char a;
a=1;
data[0]=a;//保证data[0]的值不是确定的
uint8 tmp;

tmp = data[0]&0x0f;

if(tmp == 0x00)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1148

主题

11651

帖子

26

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

1148

主题

11651

帖子

26

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