打印

IAR编译问题

[复制链接]
1117|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
baidudz|  楼主 | 2012-8-8 17:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了简便说明问题,提取代码如下。
#include<msp430x14x.h>
#define uchar unsigned char
uchar b=1;
uchar a=5;
uchar c=10;
void main()
{
while(b)
{
a--;
}
c--;
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
b=0;
}
当上面while循环中语句为while(b)
{

}只有一个分号时,可以跳出while循环,但是当while(b)
{
a--;//或其他语句时
}跳不出while循环。
这是为什么,测试时两次都进入了中断。
求指教

相关帖子

沙发
pkat| | 2012-8-8 18:41 | 只看该作者
如果非要解释,从语法上解释不通
只能说是编译器的优化。。。

使用特权

评论回复
板凳
秋天落叶| | 2012-8-8 18:58 | 只看该作者
把优化级别调低一些
如果不愿意调低优化级别,试试在变量前面加上 volatile

使用特权

评论回复
地板
sinadz| | 2012-8-9 20:55 | 只看该作者
加上volatile试试

使用特权

评论回复
5
txcy| | 2012-8-9 21:04 | 只看该作者
建议调低优化级别

使用特权

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

本版积分规则

239

主题

2284

帖子

0

粉丝