ATMEGA16单片机外部中断问题!!!大家看一下
利用atmega16单片机的外部中断INT0,设置中断管脚为输入带上拉,下降沿触发,当给中断管脚一个低电平时,就会触发中断,执行中断程序,在中断程序中是PB5口由低变高,持续2s,但现在当给INT0一个下降沿时,PB5口会又低变高,持续4s,也就是变为原来两倍了,我加了一个延时函数观察了一下,是中断程序执行了两遍,我用示波器测得,INT0只触发了一次,低电平时间大约是120ms左右,这种情况有是有,有时候没有,将程序代码贴出来大家看一下/*******************************************函数名称: Init_kb参 数: 无返回值 : 无/********************************************/void Init_kb(void){ MCUCR =2; //设置INT0为下降沿触发中断 DDRD&=~BIT(2); //配置中断管脚为输入 PORTD|=BIT(2); //使能中断管脚的上拉 GICR|=BIT(EXTINT0);}/*********************************函数名称:迥Int0参数: 无返回值:无/***********************************/void Int0(){SREG&=~BIT(7); GICR&=~BIT(6); PORTB|=BIT(5); delay_ms(2000); PORTB&=~BIT(5); GICR|=BIT(6); SREG|=BIT(7);}