本文主要是介绍ATmega16中断程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本例子中使用CVAVR进行程序编写。
1、初始化中断IO口程序。设置为输入,不适用上拉电阻。
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
从图中可以看出,PD2,PD3为中断引脚。
2、中断初始化
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: On
// INT1 Mode: Falling Edge
// INT2: Off
GICR|=(1<<INT1) | (1<<INT0) | (0<<INT2); //INT0和INT1使能
MCUCR=(1<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);//设置中断出发方式
MCUCSR=(0<<ISC2);
GIFR=(1<<INTF1) | (1<<INTF0) | (0<<INTF2);//中断标志位清零
3、写中断程序
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
}
注意:中断出发方式一定要正确。
这篇关于ATmega16中断程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!