您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 定时器计数器原理及应用2有设计题
定时/计数器资源介绍与应用0xF5计数原理(1)计数——对外部事件进行统计,外部事件以输入有效脉冲来表示。计数器溢出标志TF初值中断请求外部脉冲0xF50xF51S1S20xF60xF70xF80xF90xFA0xFB0xFC0xFD0xFE0xFF0中断开放中断响应后溢出标志清“0”当检测到有有效脉冲输入时,计数寄存器加1启动计数器工作当计数器计数溢出时的标志初值寄存器作为计数器回0时的初始值单片机的计数器用户是可以控制的(可编程的),包括计数器的启动、计数脉冲的有效方式、计数器的初值、计数溢出中断请求开放或禁止等。0xFD0xFF0xFE计数器0xFA0xF80xF90xFB0xFC初值计数原理(2)比值寄存器比较器S1S2溢出标志TF外部脉冲比较匹配标志S30xF8计数器输出OC触发0xFC0xF810xF910xFA0xFB中断请求2中断请求10定时原理定时——当计数器的计数脉冲频率恒定时,计数器所记录的数值及代表了时间的概念。定时功能是通过计数器的计数来实现的。计数器溢出标志TF初值中断请求外部时钟源S1S2S0用于选择内部/外部时钟源S0内部时钟源定时器的工作原理与计数器相同,只是要求用于计数的脉冲,其频率恒定。单片机的定时器用户是可以控制(可编程)的。ATmega16定时/计数器资源•T/C的预分频器•8位定时/计数器T/C0、T/C2•T/C2的异步操作•PWM模式下的T/C0、T/C2•16位定时/计数器T/C1•PWM模式下的T/C1T/C1、0的预分频器10位T/C预分频器CK/8CK/64CK/256CK/1024ClearclkI/OPSR10T0T1CS10CS11CS12CS00CS01CS0200T/C1时钟源clkT1T/C0时钟源clkT0CS10CS11预分频器的作用是将系统时钟(如系统时钟为4.000MHz)按设定的比例进行分频,以产生不同周期的时钟clkT0、clkT1,分别作为时钟源提供给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位二进制)计数、定时、PWMT/C1功能多——(16位二进制)计数、定时、PWM、输入捕获T/C2功能少且特殊——(8位)定时(有异步定时功能,可作为实时时钟RTC)、PWM8位定时/计数器T/C0、T/C2(2)ATmega16的8位定时/计数器用户可以控制:•TCCR0——T/C0控制寄存器•TCCR2——T/C2控制寄存器•TIMSK——T/C中断屏蔽寄存器•TIFR——T/C中断标志寄存器•TCNT0——T/C0计数寄存器•TCNT2——T/C2计数寄存器•OCR0——T/C0输出比较寄存器•OCR2——T/C2输出比较寄存器•ASSR——异步模式状态寄存器位6、位3:计数器计数模式,用于控制T/C0的计数和工作方式。CS02CS01CS00T/C0时钟选择000无时钟源,T/C0停止001clkI/O(不经过分频器)010clkI/O/8(来自分频器)011clkI/O/64(来自分频器)100clkI/O/256(来自分频器)101clkI/O/1024(来自分频器)110外部T0引脚,下降沿驱动(用于计数)111外部T0引脚,上升沿驱动(用于计数)位7:强制输出比较,该位只在WGM位被置为非PWM模式下有效。T/C0控制寄存器——TCCR076543210WGM00COM01COM00WGM01CS02CS01CS00FOC0位5~4:比较匹配输出模式,决定T/C0比较匹配发生时,输出引脚OC0(PB3)的行为方式。这是I/O的第二功能,相应的方向控制位要置“1”,以便将其配置为输出。位2~0:T/C0的时钟选择位,用于定义T/C0的时钟源。COM01COM00T/C0比较输出模式(非PWM模式)00T/C0与输出引脚OC0断开01比较匹配发生时OC0触发10比较匹配发生时清零OC011比较匹配发生时置位OC0模式WGM01WGM00T/C0工作模式计数上限值OCR0更新TOV0置位000一般模式0xFF立即0xFF101PWM,相位可调0xFF0xFF0x00210CTC模式OCR0立即0xFF311快速PWM0xFF0xFF0xFFT/C2控制寄存器——TCCR276543210WGM20COM21COM20WGM21CS22CS21CS20FOC2TCCR2的位7~3与TCCR0位7~3的作用完全相同。位2~0:T/C2的时钟选择位,用于定义T/C2的时钟源。其功能与T/C0有不同点,无外部计数功能的选项。CS22CS21CS20T/C2时钟选择000无时钟源,T/C2停止001clkT2S(不经过分频器)010clkT2S/8(来自分频器)011clkT2S/32(来自分频器)100clkT2S/64(来自分频器)101clkT2S/128(来自分频器)110clkT2S/256(来自分频器)111clkT2S/1024(来自分频器)T/C中断屏蔽寄存器——TIMSK76543210TOIE2TICIE1OCIE1AOCIE1BTOIE1OCIE0TOIE0OCIE2位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中断标志寄存器——TIFR76543210TOV2ICF1OCF1AOCF1BTOV1OCF0TOV0OCF2位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计数寄存器——TCNT076543210LSBMSBT/C2计数寄存器——TCNT276543210LSBMSBT/C0、T/C2是可以进行读/写访问的向上计数(加法计数)的计数器。只要有有效脉冲输入,TCNT0、TCNT2就会在写入值(初值)的基础上开始计数。一旦TCNT达到0xFF,下一个计数脉冲到来时便回到0x00,并继续向上开始计数。在TCNT0、2回“0”的同时,溢出标志TOV0、2置“1”。TOV0、2标志置“1”可以用于申请中断,也可以作为计数器的第“9”位使用。T/C0输出比较寄存器——OCR076543210LSBMSBT/C2输出比较寄存器——OCR276543210LSBMSBOCR0、OCR2中的8位数据用于同TCNT0、TCNT2寄存器中的计数值进行连续的匹配比较。如果TCNT0、TCNT2的值与OCR0、OCR2相等,则比较匹配发生(比较匹配发生时,对应的定时/计数器输出引脚OC0、OC2会产生触发事件)。比较匹配发生后,置“1”相应的中断标志OCF0、OCF2。异步模式状态寄存器——ASSR76543210————AS2TCN2UBOCR2UBTCR2UB————位3:T/C2异步设定位。当AS2=0时,T/C2使用系统I/O时钟——clkI/O作为时钟源(同步方式);当AS2=1时,T/C2使用连接在TOSC1引脚上的晶振作为时钟源(异步方式)。通常连接在TOSC1引脚上的晶振频率为32.768KHz。位2:TCNT2更新忙,TCN2UB=0表明TCNT2可以被更新。位1:OCR2更新忙,OCR2UB=0表明OCR2可以被更新。位0:TCCR2更新忙,TCR2UB=0表明TCCR2可以被更新。位7~4:保留位。T/C2的异步操作T/C2的异步操作——当AS2=1时,T/C2的计数时钟直接取自于外部引脚TOSC1及TOSC2所接的外部石英晶振,计数时钟与系统时钟不同步。在使用异步方式时注意以下几点:在同步与异步方式之间切换时,TCNT2、OCR2和TCCR2的内容会受到破坏;ATmega16芯片已经对32.768kHz的手表晶振进行了优化,加一个其它频率的外部时钟到TOSC1引脚可能会导致T/C2工作不正常;在对TCNT2、OCR2和TCNT2寄存器进行写入时,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即0x3E或63即0x63。1ms的定时有误差。从1ms到1s:1s=1000ms,在1ms的中断程序中设计一计数器jishu,当jishu=1000时,时间即为1s。程序设计与分析#includeiom16v.h#pragmainterrupt_handlerzhixing:20intjishu=0;voidzhixing(void){jishu++;if(jishu==1000){PORTA=~PORTA;jishu=0;}}voidmain(void){PORTA=0x00;DDRA=0xFF;TCCR0=0x0B;TCNT0=0x00;OCR0=0x3E;TIMSK=0x02;#asm(“sei”)while(1){};}//应该定义成int,不能定义成char//计数器jishu加1//当jishu=1000,表明1s时间到//按课题要求输出//jishu清“0”,很重要//定义PA口输出//CTC模式,系统频率64分频,OC0引脚断开//1ms定时的比较值//T/C0比较匹配中断开放//总中断开放SREG|=0x80;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——RealTimeClock”,其道理就在如此。设计思想使用定时器的比较匹配
本文标题:定时器计数器原理及应用2有设计题
链接地址:https://www.777doc.com/doc-5530644 .html