stc12c5a60s2的外部中断 为什么会执行两次外部中断函数???

2019-07-15 10:42发布

stc12c5a60s2的外部中断 为什么会执行两次外部中断函数???

void Int0_interrupt() interrupt 0
{
    LED = ~LED;
    while(Direction_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,灯也跟着翻转,这是为什么?而且有时有翻转有时没有。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。