拓展中断设计思路:外部中断由P3.2或者P3.3引脚输入,通过IT0位来决定是低电平有效还是下降有效,一旦输入信号有效,即向CPU发出申请中断,并建立中断标志位。所以只要能让K1、K2、K3的按键变为低电平的时候能够触发触发P3.2或者P3.3引脚,中断就会发出请求。 硬件实现电路如下图所示:这里按键K1、K2、K3三个按键状态通过一个逻辑与门接到P3.2引脚,这样只要有其中一个按键按下与门都会输出低电平,即P3.2引脚被接地,中断信号有效,则中断成功。 按键软件处理:当K1、K2、K3的按键变为低电平的时候能够触发触发P3.2或者P3.3引脚,中断就会发出请求。但是具体是那个按键按下的这个就需要中断服务函数中,根据P1.5、P1.6、P1.7的高低电平状态来判断。当P1.5的为低电平时,表示按键K1按下;当P1.6的为低电平时,表示按键K2按下;当P1.7的为低电平时,表示按键K3按下。具体处理代码如下: //-----------------------------------------------------------------
// INT0中断函数处理
//-----------------------------------------------------------------
void INT0_ISR() interrupt 0
{
if(K1==0)
{
delay_ms(10);
if(K1==0) if(LED_1==1)
{ F_IN1=1;F_IN2=1;LED_1=0;}else
{ F_IN1=1;F_IN2=0;LED_1=1;}
}
if(K2==0)
{
delay_ms(10);
if(K2==0) if(LED_2==1)
{ F_IN3=1;F_IN4=1;LED_2=0;}else
{ F_IN3=1;F_IN4=0;LED_2=1;}
}
if(K3==0)
{
delay_ms(10);
if(K3==0) if(LED_3==1)
{ RELAY=1;LED_3=0;}else
{ RELAY=0;LED_3=1;}
}
}
|