资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,定时,/,计数器资源介绍与应用,0 xF5,计数原理(,1,),计数,对外部事件进行统计,外部事件以输入有效,脉冲来表示,。,计数器,溢出标志,TF,初 值,中断请求,外部脉冲,0 xF5,0 xF5,1,S1,S2,0 xF6,0 xF7,0 xF8,0 xF9,0 xFA,0 xFB,0 xFC,0 xFD,0 xFE,0 xFF,0,中断开放,中断响应后溢出标志清“,0”,当检测到有有效脉冲输入时,计数寄存器加,1,启动计数器工作,当计数器计数溢出时的标志,初值寄存器作为计数器回,0,时的初始值,单片机的计数器用户是可以控制的(可编程的),包括计数器的,启动、计数脉冲的有效方式、计数器的初值、计数溢出中断请求开放或禁止,等。,0 xFD,0 xFF,0 xFE,计数器,0 xFA,0 xF8,0 xF9,0 xFB,0 xFC,初 值,计数原理(,2,),比值寄存器,比较器,S1,S2,溢出标志,TF,外部脉冲,比较匹配标志,S3,0 xF8,计数器输出,OC,触发,0 xFC,0 xF8,1,0 xF9,1,0 xFA,0 xFB,中断请求,2,中断请求,1,0,定时原理,定时,当计数器的计数脉冲频率恒定时,计数器所,记录的数值及代表了时间的概念。,定时功能是通过计数器的计数来实现的。,计数器,溢出标志,TF,初 值,中断请求,外部时钟源,S1,S2,S0,用于选择内部,/,外部时钟源,S0,内部时钟源,定时器的工作原理与计数器相同,只是要求用于计数的脉冲,其频率恒定。,单片机的定时器用户是可以控制(可编程)的。,ATmega16,定时,/,计数器资源,T/C,的预分频器,8,位定时,/,计数器,T/C0,、,T/C2,T/C2,的异步操作,PWM,模式下的,T/C0,、,T/C2,16,位定时,/,计数器,T/C1,PWM,模式下的,T/C1,T/C1,、,0,的预分频器,10,位,T/C,预分频器,CK/8,CK/64,CK/256,CK/1024,Clear,clk,I/O,PSR10,T0,T1,CS10,CS11,CS12,CS00,CS01,CS02,0,0,T/C1,时钟源,clk,T1,T/C0,时钟源,clk,T0,CS10,CS11,。,预分频器的作用,是将系统时钟(如系统时钟为,4.000MHz,)按设定的比例进行,分频,,以产生不同周期的时钟,clk,T0,、,clk,T1,,分别作为时钟源提供给,T/C0,和,T/C1,使用,8,位定时,/,计数器,T/C0,、,T/C2,(,1,),ATmega16,的定时,/,计数器共有,3,个:,1,个,16,位的定时,/,计数器,定时,/,计数器,1,(简称,T/C1,),2,个,8,位定时,/,计数器,定时,/,计数器,0,(简称,T/C0,)、,定时,/,计数器,2,(简称,T/C2,),这,3,个定时,/,计数器各具特点:,T/C0,功能,普通,(,8,位二进制),计数,、,定时,、,PWM,T/C1,功能,多,(,16,位二进制),计数,、,定时,、,PWM,、,输入捕获,T/C2,功能,少,且,特殊,(,8,位),定时,(有异步定时功能,可,作为实时时钟,RTC,)、,PWM,8,位定时,/,计数器,T/C0,、,T/C2,(,2,),ATmega16,的,8,位定时,/,计数器用户可以控制:,TCCR0T/C0,控制寄存器,TCCR2T/C2,控制寄存器,TIMSKT/C,中断屏蔽寄存器,TIFRT/C,中断标志寄存器,TCNT0T/C0,计数寄存器,TCNT2T/C2,计数寄存器,OCR0T/C0,输出比较寄存器,OCR2T/C2,输出比较寄存器,ASSR,异步模式状态寄存器,位,6,、位,3,:计数器计数模式,用于控制,T/C0,的计数和工作方式。,CS02,CS01,CS00,T/C0,时钟选择,0,0,0,无时钟源,,T/C0,停止,0,0,1,clk,I/O,(不经过分频器),0,1,0,clk,I/O,/8,(来自分频器),0,1,1,clk,I/O,/64,(来自分频器),1,0,0,clk,I/O,/256,(来自分频器),1,0,1,clk,I/O,/1024,(来自分频器),1,1,0,外部,T0,引脚,下降沿驱动,(用于计数),1,1,1,外部,T0,引脚,上升沿驱动,(用于计数),位,7,:强制输出比较,该位只在,WGM,位被置为非,PWM,模式下有效。,T/C0,控制寄存器,TCCR0,7,6,5,4,3,2,1,0,WGM00,COM01,COM00,WGM01,CS02,CS01,CS00,FOC0,位,54,:比较匹配输出模式,决定,T/C0,比较匹配发生时,输出引脚,OC0,(,PB3,)的行为方式。这是,I/O,的第二功能,相应的方向控制位要置“,1”,,以便将其配置为输出。,位,20,:,T/C0,的时钟选择位,用于定义,T/C0,的时钟源。,COM01,COM00,T/C0,比较输出模式,(非,PWM,模式),0,0,T/C0,与输出引脚,OC0,断开,0,1,比较匹配发生时,OC0,触发,1,0,比较匹配发生时清零,OC0,1,1,比较匹配发生时置位,OC0,模式,WGM01,WGM00,T/C0,工作模式,计数上限值,OCR0,更新,TOV0,置位,0,0,0,一般模式,0 xFF,立即,0 xFF,1,0,1,PWM,,相位可调,0 xFF,0 xFF,0 x00,2,1,0,CTC,模式,OCR0,立即,0 xFF,3,1,1,快速,PWM,0 xFF,0 xFF,0 xFF,T/C2,控制寄存器,TCCR2,7,6,5,4,3,2,1,0,WGM20,COM21,COM20,WGM21,CS22,CS21,CS20,FOC2,TCCR2,的位,73,与,TCCR0,位,73,的作用完全相同。,位,20,:,T/C2,的时钟选择位,用于定义,T/C2,的时钟源。,其功能与,T/C0,有不同点,,无外部计数功能,的选项。,CS22,CS21,CS20,T/C2,时钟选择,0,0,0,无时钟源,,T/C,2,停止,0,0,1,clk,T2S,(不经过分频器),0,1,0,clk,T2S,/8,(来自分频器),0,1,1,clk,T2S,/32,(来自分频器),1,0,0,clk,T2S,/64,(来自分频器),1,0,1,clk,T2S,/128,(来自分频器),1,1,0,clk,T2S,/256,(来自分频器),1,1,1,clk,T2S,/1024,(来自分频器),T/C,中断屏蔽寄存器,TIMSK,7,6,5,4,3,2,1,0,TOIE2,TICIE1,OCIE1A,OCIE1B,TOIE1,OCIE0,TOIE0,OCIE2,位,7,:,T/C2,输出比较匹配,中断使能,为“,1,”,时,允许中断,,为“,0,”,时,禁止中断,。,位,6,:,T/C2,溢出,中断使能,为“,1”,时允许中断,为“,0”,时禁止中断。,位,5,:,T/C1,输入捕获,中断使能,为“,1”,时允许中断,为“,0”,时禁止中断。,位,4,:,T/C1,输出比较,A,匹配,中断使能,为“,1”,时允许中断,为“,0”,时禁止中断。,位,3,:,T/C1,输出比较,B,匹配,中断使能,为“,1”,时允许中断,为“,0”,时禁止中断。,位,2,:,T/C1,溢出,中断使能,为“,1”,时允许中断,为“,0”,时禁止中断。,位,1,:,T/C0,输出匹配,中断使能,为“,1”,时允许中断,为“,0”,时禁止中断。,位,0,:,T/C0,溢出,中断使能,为“,1”,时允许中断,为“,0”,时禁止中断。,T/C,中断标志寄存器,TIFR,7,6,5,4,3,2,1,0,TOV2,ICF1,OCF1A,OCF1B,TOV1,OCF0,TOV0,OCF2,位,7,:,T/C2,输出比较匹配,标志。当,T/C2,计数器,TCNT2,与,OCR2,的值匹配时,该位,由硬件置“,1”,。中断响应后,,由硬件清“,0”,,或通过对该位,写“,1”,来清“,0”,。,位,6,:,T/C2,溢出,中断标志。当,T/C2,计数器,TCNT2,溢出时,该位由硬件置“,1”,。中断响应后,由硬件清“,0”,,或通过对该位写“,1”,来清“,0”,。,位,5,:,T/C1,输入捕获,中断标志。当,T/C1,输入捕获事件发生时,该位置“,1”,。,位,4,:,T/C1,输出比较,A,匹配,中断标志。,位,3,:,T/C1,输出比较,B,匹配,中断标志。,位,2,:,T/C1,溢出,中断标志。,位,1,:,T/C0,输出比较匹配,中断标志。,位,0,:,T/C0,溢出,中断标志。,ATmega16,的定时,/,计数器共有,8,个中断源,对应,8,个中断标志位,这些标志位当条件满足后,由硬件置,“,1,”,,中断响应后由硬件清,“,0,”,,也可以对这些位通过软件写,“,1,”,清,“,0,”,。,T/C0,计数寄存器,TCNT0,7,6,5,4,3,2,1,0,LSB,MSB,T/C2,计数寄存器,TCNT2,7,6,5,4,3,2,1,0,LSB,MSB,T/C0,、,T/C2,是可以进行读,/,写访问的,向上计数,(加法计数)的计数器。,只要有有效脉冲输入,,TCNT0,、,TCNT2,就会在写入值(初值)的基础上开始计数。一旦,TCNT,达到,0 xFF,,下一个计数脉冲到来时便回到,0 x00,,并继续向上开始计数。,在,TCNT0,、,2,回“,0”,的同时,溢出标志,TOV0,、,2,置“,1”,。,TOV0,、,2,标志置“,1”,可以用于申请中断,也可以作为计数器的第“,9”,位使用。,T/C0,输出比较寄存器,OCR0,7,6,5,4,3,2,1,0,LSB,MSB,T/C2,输出比较寄存器,OCR2,7,6,5,4,3,2,1,0,LSB,MSB,OCR0,、,OCR2,中的,8,位数据用于同,TCNT0,、,TCNT2,寄存器中的计数值进行连续的匹配比较。,如果,TCNT0,、,TCNT2,的值与,OCR0,、,OCR2,相等,则比较匹配发生,(比较匹配发生时,对应的定时,/,计数器输出引脚,OC0,、,OC2,会产生触发事件),。,比较匹配发生后,置“,1”,相应的中断标志,OCF0,、,OCF2,。,异步模式状态寄存器,ASSR,7,6,5,4,3,2,1,0,AS2,TCN2UB,OCR2UB,TCR2UB,位,3,:,T/C2,异步设定位。,当,AS2=0,时,,T/C2,使用系统,I/O,时钟,clk,I/O,作为时钟源(,同步方式,);当,AS2=1,时,,T/C2,使用连接在,TOSC1,引脚上的晶振作为时钟源(,异步方式,)。,通常连接在,TOSC1,引脚上的晶振频率为,32.768KHz,。,位,2,:,TCNT2,更新忙,,TCN2UB=0,表明,TCNT2,可以被更新。,位,1,:,OCR2,更新忙,,OCR2UB=0,表明,OCR2,可以被更新。,位,0,:,TCCR2,更新忙,,TCR2UB=0,表明,TCCR2,可以被更新。,位,74,:保留位。,T/C2,的异步操作,T/C2,的,异步,操作,当,AS2=1,时,,T/C2,的计数时钟直接取自于外部引脚,TOSC1,及,TOSC2,所接的外部石英晶振,,计数时钟与系统时钟不同步,。,在使用异步方式时注意以下几点:,在同步与异步方式之间切换时,,TCNT2,、,OCR2,和,TCCR2,的内容会受到破坏;,ATmega16,芯片已经对,32.768kHz,的晶振进行了优化,加一个其它频率的外部时钟到,TOSC1,引脚可能会导致,T/C2,工作不正常;,在对,TCNT2,、,OCR2,和,TCCR2,寄存器进行写入时,,ASSR,寄存器的位,2,、,1,和,0,会自动置“,1”,。在,ASSR,寄存器的位,2,、,1,和,0,置“,1”,期间,不能对相应位所指的寄存器进行操作。,3.8,位定时,/,计数器应用举例,T/C0,作定时器,T/C2,用作实时时钟,T/C0,作定时器,应用课题,2,:使用定时器,T/C0,的内部,时钟晶振,产生,1ms,中,断,并扩展成,1s,定时信,号,每秒钟使,PA,口的状,态改变,1,次。,设计思想,定时器时间常数的计算:,系统时钟,4.000MHz,,,64,分频,62.5kHz,作为定时器计数脉冲频率。,定时计数器加,1,的时间为,1/62.5=0.016ms,,定时,1ms,,需要计数,1/0.016=62.5,。使用定时器,CTC,工作方式,比较值应置为,62,即,0 x3E,或,63,即,0 x63,。,1ms,的定时有误差。,从,1ms,到,1s,:,1s=1000ms,,在,1ms,的中断程序中设计一计数器,jishu,,当,jishu=1000,时,时间即为,1s,。,程序设计与分析,#include#pragma interrupt_handler zhixing:20,int jishu=0;,void,zhixing(,void,),jishu+;,if,(,jishu=1000,),PORTA=PORTA;,jishu=0;,void main(void),PORTA=0 x00;,DDRA=0 xFF;,TCCR0=0 x0B;,TCNT0=0 x00;,OCR0=0 x3E;,TIMSK=0 x02;,SREG|=0 x80;,while,(,1,),;,/,应该定义成,int,,不能定义成,char,/,计数器,jishu,加,1,/,当,jishu=1000,,表明,1s,时间到,/,按课题要求输出,/,jishu,清“,0”,,很重要,/,定义,PA,口输出,/CTC,模式,系统频率,64,分频,,OC0,引脚断开,/1ms,定时的比较值,/T/C0,比较匹配中断开放,/,总中断开放,SREG|=0 x80,;,T/C2,用作实时时钟,应用课题,1,:利用定时器,T/C2,的实时,时钟晶振,产生,1s,中断,,并在,PD7,引脚输出,0.5Hz,的方波。,T/C2,的时钟源,PC6,(,TOSC1,)、,PC7,(,TOSC2,)的,32.768kHz,的晶振;,32.768kHz,的晶振,128,分频,分频后的晶振频率为,256Hz,,周期为,1/256,秒,计录,256,个脉冲时,所需时间为,1,秒;,32.768kHz,的晶振,256,分频,分频后的晶振频率为,128Hz,,周期为,1/128,秒,记录,128,个脉冲所需时间也正好为,1,秒。,为什么将,32.768kHz,称为“,手表晶振,”或“,实时时钟晶振,”,,T/C2,为什么可用作“实时时钟,RTC,R,eal,T,ime,C,lock”,,其道理就在如此。,设计思想,使用定时器的比较匹配工作方式、计数频率,256,分频,比较匹配值应为,128,即,0 x80,;,引脚,PD7,为,T/C2,输出,OC2,,,1s,反转一次,输出波形频率为,0.5Hz,。,OC2,设置为,T/C2,比较匹配后触发。,程序设计与分析,#include#pragma interrupt_handler zhixing:4,void,zhixing(,void,),void main(void),PORTD=0 x00;,DDRD=0 xFF;,TCCR2=0 x1E;,ASSR=0 x08;,TCNT2=0 x00;,OCR2=0 x80;,TIMSK=0 x80;,SREG|=0 x80,;,while(1),;,/,定义,PD,口为输出,/,定时器,2,比较匹配中断服务程序,/,定时器,2,定时频率为外部,32768HZ,/,0 x1E=,0b 0 0 0 1 1 1 1 0,CTC,模式,比较匹配后,OC2,触发,计数频率,256,分频,/,比较匹配值为,128,/T/C2,比较匹配中断开放,/,全局中断开放,
展开阅读全文