程序太简单啦,就不说啦,自己看吧
ATMEGA16用ICCAVR编译器
1、外部中断
#include #include unsigned char temp=0x80; void main() { DDRA=0xff; GICR|=0x40;//使能外部INT0 MCUCR|=0x01;//INT0下降沿触发 SEI();//总中断 while(1); } #pragma interrupt_handler int0_isr:iv_INT0 void int0_isr(void) { PORTA=temp; temp=temp>>7|temp<<1; } 2、定时器0--普通模式 #include #include unsigned char count; void main() { //TCCR0=0; TCNT0=12; //OCR0=244; TCCR0=0x05; TIMSK=0x01; SEI(); DDRA=0xff; PORTA=0; while(1); } #pragma interrupt_handler Timer0:iv_TIMER0_OVF void Timer0() { TCNT0=12; count++; if(count==2) { PORTA=~PORTA; count=0; } } 3、定时器0--匹配模式 #include #include void main() { //TCCR0=0; TCNT0=12;//设置计数初值,计数244后清零申请中断 OCR0=244;//从0计数到244,匹配申请中断 TCCR0=0x0d;//CTC模式,1024预分频 TIMSK=0x02;//使能输出比较匹配中断 SEI(); DDRA=0xff; PORTA=0; while(1); } #pragma interrupt_handler Timer0:iv_TIMER0_COMP void Timer0() { count++; if(count==2) { PORTA=~PORTA; count=0; } } 4、定时器1 #include #include void main() { TCCR1A=0;//WGM11、10清零 TCCR1B=0; TCNT1H=0x0b; TCNT1L=0xdb; TCCR1B=2;//WGM13、12清零,为普通模式,时钟选择CS02~00:8预分频 TIMSK=0x04; SEI(); DDRA=0xff; PORTA=0; while(1); } #pragma interrupt_handler timer1:iv_TIMER1_OVF void timer1() { TCNT1H=0x0b; TCNT1L=0xdb; PORTA=~PORTA; }
上一篇:Arduino+Avr libc制作Badusb原理及示例讲解
下一篇:CVAVR编译在proteus7.4中无法正确运行问题
推荐阅读最新更新时间:2024-11-07 01:40
设计资源 培训 开发板 精华推荐
- 具有突发模式操作的 LTC3130IUDC 宽输入电压范围 15V 转换器的典型应用
- 2相双极步进电机驱动IC —— TC78S600FNG
- MP1584EN(已经测试)
- AM2G-0512SZ 12V 2 瓦 DC-DC 转换器的典型应用
- DER-245 - 50 W 辅助/备用电源
- 使用 ROHM Semiconductor 的 BA80BC0WT 的参考设计
- LTM8052MPV ±5A、2.5V、2 象限稳压器的典型应用
- LT3091HDE 低噪声 4 象限电源的典型应用
- ATmega Development Board DIP
- 用于电信稳压器的 LT8705MPFE 同步降压-升压型 DC/DC 控制器的典型应用电路