學單片機的第二條檻:中斷,每次我都選最簡單的中斷——外部中斷。
*****************************************************************
//CPU:mega32
//編譯器:iar
#include <ioavr.h>
void eint0_init(void);
int main(void)
{
DDRD |= (1 << 7); //PD7置為輸出
eint0_init(); //外部中斷0初始化
asm("sei"); //開中斷
while(1);
}
#pragma vector = INT0_vect //預編譯指令,聲明中斷向量
__interrupt void eint0(void) //外部中斷0中斷例程
{
PORTD ^= 1<<7; //PD7取反
}
void eint0_init(void)
{
DDRD &= ~(1 << 2); //INT0腳輸入
PORTD |= (1 << 2); //INT0腳內部上拉電阻有效
MCUCR |= (1 << ISC01) | (1 << ISC00); //INT0下降沿觸發
GICR |= (1 << INT0); //使能INT0
}
******************************************************************
|