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中断资料看看