单片机用外部中断0实现:一个亮的LED灯,当按下按键后,闪烁2下,继续恢复原来状态。

如题所述

main()
{

// CLK_CKDIVR=0x00;
CLK_Init();
IO_Init();
led_on=0;
//timer1_init();
EXTI_DeInit();?/初始化外部中断IO口
_asm("rim");

while(1)
{
cbi(PA_ODR,4);
}

}

@far @interrupt void TIM1_UPD_OVF_IRQHandler(void)
{

TIM1_SR1 = 0x00; // 清除更新标志

}
@far @interrupt void EXTI0 (void)//外部中断子函数
{
if(PA_on)
{ sbi(PA_ODR,4);PA_on=0;}//PA4为灯亮
else
{ cbi(PA_ODR,4);PA_on=1;}//PA4为灯灭

EXTI_CR1=0x00 ;
}
不懂再追问,你只需要把主程序里面的灯定为一个状态,外部中断里面再定一个状态。要亮2次,加个延时,就行了。追问

这个我看不懂额,你看看我这个程序有问题么

#include
sbit K1=P1^0;
void main()
{
EA=1;EX0=1;IT0=1;
P2=0xf0;}
void key_int() interrupt 0
{
if(K1==0)
P2=0xff;}

我就想知道中断为什么不出来

追答

你把51中断资料看看

温馨提示:答案为网友推荐,仅供参考