进入中断后,关闭中断,执行中断程序里的代码完后,再打开,还是可以进入中断的.
但是一般不这么写,更多的是某中断执行完其代码后,将自身使能位关闭,然后再其他中断或者main函数里根据需要条件触发再打开,如.
void main(void)
{
.....
......
while(1)
{
....
.....
if(xxxx&&ex0==0)
{
ex0 = 1;
}
............
............
}
}
void ex0_ISR() interrupt 0
{
.............
...............
.................
ex0 = 0;
}
建议中断程序里尽量不要写循环,更加不应该写DELAY,完全可以通过写IF来判断,然后设置标志位,main函数再根据标志位来执行对应的功能.如:
bit flag_1;
void main(void)
{
while(1)
{
if(flag_1==1)
{
while(xxx)
{
.............
...........
}
delay(xxxx);
flag_1 = 0;
ex0 = 1;
}
}
}
void ex0_ISR() interrupt 0
{
ex0 = 0;
flag_1 = 1;
} |