欢迎来到天天文库
浏览记录
ID:37708790
大小:35.50 KB
页数:5页
时间:2019-05-29
《AVR单片机四个定时器同时工作》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、定时器1和3使用溢出中断方式,定时0和定时器2使用CTC模式比较输出中断。其中的寄存器相关说明:定时器/计数器中断屏蔽寄存器TIMSKOCIE2TOIE2TICE1OCIE1AOCIE1BTOIE1OCIE0TOIE0定时器/计数器2Bit7OCIE2和状态寄存器的全局中断使能位I都为“1”时,T/C2的输出比较匹配中断使能。当T/C2的比较匹配发生,即TIFR中的OCF2置位时,中断服务程序得以执行。Bit6TOIE2溢出中断使能当TOIE2和状态寄存器的全局中断使能位I都为“1”时,T/C2的溢出中断使能。当T/C2发生溢出,即TIF
2、R中的TOV2位置位时,中断服务程序得以执行。定时器/计数器1TICE1输入捕捉中断使能OCIE1A输出比较A匹配中断使能OCIE1B输出比较B匹配中断使能TOIE1溢出中断使能定时器/计数器0OCIE0输出比较匹配中断使能TOIE0溢出中断使能扩展的定时器/计数器中断屏蔽寄存器ETIMSKTICE3OCIE3AOCIE3BTOIE3OCIE3COCIE1C定时器/计数器3TICE3输入捕捉中断使能OCIE3A输出比较A匹配中断使能OCIE3B输出比较B匹配中断使能TOIE3溢出中断使能OCIE3C输出比较C匹配中断使能定时器/计数器3O
3、CIE1C输出比较C匹配中断使能#include#include#defineuintunsignedint#defineucharunsignedcharuchardogtime,dog=1,doggtime;uchartime2,time0;//定时器0初始化函数voidtime0_init(){TCCR0=0x0b;//配置CTC模式64分频器OCR0=0XFF;//设定输出比较寄存器的值}//定时器2初始化函数voidtime2_init(){TCCR2=0x0b;//配置CTC模式64分
4、频器OCR2=100;//设定输出比较寄存器的值}//定时器1初始化函数voidtime1_init(){DDRC
5、=0xff;PORTC
6、=0xff;TIMSK=0X86;//配置定时器/计数器2输出比较匹配中断使能,定时器/计数器1溢出中断使能。定时器/计数器0输出比较匹配中断使能。TCNT1H=0XE9;//计算的公式(65536-X)*64/7372800(中断计数)TCNT1L=0X80;TCCR1A=0X00;TCCR1B=0X03;//配置普通模式64预分频器SEI();//开启总中断}//定时器3初始化函数voidtime
7、3_init(){ETIMSK=0X04;//使能定时器/计数器3溢出中断TCNT3H=0XE9;TCNT3L=0X80;TCCR3A=0X00;TCCR3B=0X03;//配置普通模式64预分频器}//50msinterruptoncetime#pragmainterrupt_handlertimer1_ovf_isr:15voidtimer1_ovf_isr(void){TCNT1H=0XE9;TCNT1L=0X80;dogtime++;if(dogtime>20){dogtime=0;PORTC
8、=(1<<5);}else{if(d
9、ogtime>2)PORTC&=~(1<<5);}if(dog==1){dog=0;if((PINC&0x04)==0x04){PORTC&=~(1<<2);//kickdog}else{PORTC
10、=(1<<2);//kickdog}}}//50msinterruptoncetime#pragmainterrupt_handlertimer3:30voidtimer3(void){TCNT3H=0XE9;TCNT3L=0X80;doggtime++;if(doggtime>20){doggtime=0;PORTC
11、=(1<<7);}el
12、se{if(doggtime>2)PORTC&=~(1<<7);}if(dog==1){dog=0;if((PINC&0x04)==0x04){PORTC&=~(1<<2);//kickdog}else{PORTC
13、=(1<<2);//kickdog}}}//4.5msinterruptoncetime#pragmainterrupt_handlertimer2:10voidtimer2(void){OCR2=100;time2++;if(time2>250){time2=0;PORTC
14、=(1<<4);}else{if(time2>25
15、)PORTC&=~(1<<4);}}//4.5msinterruptoncetime#pragmainterrupt_handlertimer0:16voidtimer0(void){OCR0
此文档下载收益归作者所有