将按键接到P3.2(INT0)或P3.3(INT1)
main(){
EA=1; //EA总中断控制,EA=0关,EA=1开
EX0=1;//INT0中断控制。0关1开,按键接P3.2用这个
EX1=1;//INT1中断控制。0关1开,按键接P3.3用这个
//默认情况下,直接使EX0=1或EX1=1来打开中断,INT0、INT1中断是电平触发的
while(1){
//主程序写这里
}
}
/** 外部中断0服务程序,按下接P3.2的开关k=0下面程序被执行 **/
int0()interrupt 0
{
//程序代码写这里面
}
/** 外部中断1服务程序,按下接P3.3的开关k=0下面程序被执行 **/
int1()interrupt 2
{
//程序代码写这里面
}
注意,上面的中断程序,如果执行完后,按键k还没有放开,则中断程序会再次被执行。为了防止这种情况发生,有以下几种处理办法以:
(1)可以在中断程序中进行判断,只有放开了按钮k=1了中断函数才返回。
(2)可以在进入中断后关闭中断,让EX0或EX1=0。然后在主程序中,需要的时候再开起。
允许中断,那就在这条语句中EA = 1;不允许中断了,则EA=0;
当然前提是对应的具体的中断使能是打开的。
从你的描述看,可以使用外部中断0,也就是始终令EX0=1,同时将按键K连接到单片机的外部中断0引脚上。