学单片机的第二条槛:中断,每次我都选最简单的中断——外部中断。
*****************************************************************
//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
}
******************************************************************
|