芯片 : ATMega16
晶振 : 7.3728 MHz
外部中止0 ,下降沿触发。
关于硬件:要想安稳的运用外部中止,最好要在管脚处上拉一个电阻(一般上拉10K,当然上拉仍是下拉也要看你的触发条件),如果是按键的话应该再并一个电容(一般为104),这样作用会比较好,有用的避免颤动。
代码:
#include
#include
#include
voidint0_init()
{
_CLI(); //disable all interrupts//关总中止
MCUCR = 0x02;//下降沿触发 外部中止0
GICR = 0x40; //使能 外部中止0
GIFR_INTF0 = 1;//铲除 外部中止0 标志位
_SEI(); //re-enable interrupts//开总中止
}
voidmain(void)
{
DDRB_Bit0 = 1; //界说一个led
int0_init();
while(1);
}
#pragma vector = INT0_vect //外部中止0进口地址
__interrupt voidex_int0(void)
{
PORTB_Bit0 = ~PORTB_Bit0; //每次进入中止让一个led 由亮变灭,由灭变亮
}