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,灯也跟着翻转,这是为什么?而且有时有翻转有时没有。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
蔡聪
1楼-- · 2019-07-15 23:13
自顶
前门扫地
2楼-- · 2019-07-16 04:18
你使用外部中断,中断函数里面都不需要while了
蔡聪
3楼-- · 2019-07-16 06:52
前门扫地 发表于 2017-5-23 20:26
你使用外部中断,中断函数里面都不需要while了

我做智能小车,外部中断函数中的while是为了使小车转到一定的位置。所以需要使用while
前门扫地
4楼-- · 2019-07-16 08:41
蔡聪 发表于 2017-5-23 20:37
我做智能小车,外部中断函数中的while是为了使小车转到一定的位置。所以需要使用while

那那个while也没意义
蔡聪
5楼-- · 2019-07-16 12:26
 精彩回答 2  元偷偷看……
radiodetection
6楼-- · 2019-07-16 14:23
按键需要消抖处理。不消抖容易误触

一周热门 更多>