stc12c5a60s2的外部中断 为什么会执行两次外部中断函数???
void Int0_interrupt() interrupt 0
{
LED = ~LED;
while(Direc
tion_Middle == 0);
}
当外部中断触发,LED翻转。等待Direction_Middle == 1时,不是应该跳出中断函数吗?
而现实情况是等到Direction_Middle == 1后,LED再次翻转。这不就是外部中断一次,执行了两次外部中断函数??
测试程序
#include "stc12c5a60s2.h"
sbit LED = P2^3;
sbit KEY2 = P2^0;
void main()
{
IT0 = 1;
EX0 = 1;
EA = 1;
LED = 1;
while(1);
}
void INTO_interrupt(void) interrupt 0
{
LED = ~LED;
while(KEY2 == 1);
}
现象:按下KEY1触发外部中断,灯翻转。按下KEY2,灯也跟着翻转,这是为什么?而且有时有翻转有时没有。
我做智能小车,外部中断函数中的while是为了使小车转到一定的位置。所以需要使用while
一周热门 更多>