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,就执行不了相关的中断程序。也就没有达到扩展中断的效果。求解释?
此帖出自
小平头技术问答
2、个人感觉:你可以把 if(P12==0)后的两个判断语句改成
else if(P13==0)
else if(P14==0) 试试看
3、上面提到【中断一直在触发】,说明你的外部中断电路可能有问题,因为不知道是什么MCU,所以我也不敢揣测。不过推荐你看看 中断IO 的信号波形。
4、触发中断后,MCU会先保存断点,跳到相应的中断函数入口处,从上到下,按【顺序】执行中断函数里的指令,中断函数里的指令执行完毕后,会自动跳回到断点处,继续执行正常指令。
一周热门 更多>