测试时两次都进入了中断

2019-07-18 13:41发布

为了简便说明问题,提取代码如下。
#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循环。
这是为什么,测试时两次都进入了中断。
申明:上述代码是简化后,表达出我的原来代码的意思。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
liliang9554
1楼-- · 2019-07-18 16:54
你判断的是B
zhaoxqi
2楼-- · 2019-07-18 18:46


你仿真一下,看b是否变为了0;还有就是把优化等级调为最低,减少其他因素。
huangchui
3楼-- · 2019-07-18 21:07
 精彩回答 2  元偷偷看……
jiajs
4楼-- · 2019-07-19 01:54
变量b加个volatile修饰吧
dengdc
5楼-- · 2019-07-19 06:21
解决了,一种是将IAR版本改为debug,(降低优化程度)另外就是各位说的加个VOLATILE.在单片机C语言书上找到的答案,谢谢诸位了
zhanghqi
6楼-- · 2019-07-19 08:38
 精彩回答 2  元偷偷看……

一周热门 更多>