关于中断程序的执行,求大神指教!

2019-03-24 18:13发布

void ex_int1() interrupt 2   
{
                if(P12==0)
                 {               
                        P17=1;                              
                delay(1000);   
                        P16=1;                                        
                        delay(1000);
                        P17=0;               
                }
                if(P13==0)
              {                                 
                        P20=1;               
                        delay(1000);                       
                }
                if(P14==0)               
                {
                         P20=0;                       
                        delay(1000);                       
                }
}

用二极管扩展的外部中断,现在有一个问题,当进入中断后,检测到P12==0;执行相关程序。但如果此时假如P13==0或P14==0,就执行不了相关的中断程序。也就没有达到扩展中断的效果。求解释?

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
HALO--117
2019-03-25 04:03
1、中断里最好不要有延时函数,尤其是忌讳在中断里长时间的delay。
2、个人感觉:你可以把 if(P12==0)后的两个判断语句改成
         else if(P13==0)   
        else if(P14==0)    试试看
3、上面提到【中断一直在触发】,说明你的外部中断电路可能有问题,因为不知道是什么MCU,所以我也不敢揣测。不过推荐你看看 中断IO 的信号波形。
4、触发中断后,MCU会先保存断点,跳到相应的中断函数入口处,从上到下,按【顺序】执行中断函数里的指令,中断函数里的指令执行完毕后,会自动跳回到断点处,继续执行正常指令。

一周热门 更多>