《最新单片微型计算机原理与接口技术第二版第6章单片微机的定时器计数器原理及应用06幻灯片.ppt》由会员分享,可在线阅读,更多相关《最新单片微型计算机原理与接口技术第二版第6章单片微机的定时器计数器原理及应用06幻灯片.ppt(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章第六章 单片微机的定时器单片微机的定时器/计数器计数器原理及应用原理及应用CT功能选择位功能选择位C/T1时,选择计数功能;时,选择计数功能;C/T0时,选择定时功能。时,选择定时功能。 定时器,设置定时器,设置C/T0 计数输入信号是内部时钟脉冲,每个机器周期使计数器的值增计数输入信号是内部时钟脉冲,每个机器周期使计数器的值增1。计数速率为振荡周期的计数速率为振荡周期的112。当采用。当采用12MHz的晶体时,计数速率的晶体时,计数速率为为1MHz。定时器的定时时间,与系统的振荡频率定时器的定时时间,与系统的振荡频率fosc、计数器的长度、计数器的长度和初始值等有关。和初始值等有关。
2、计数器,设置计数器,设置C/T1通过引脚通过引脚T0和和T1对外部信号进行计数。在每个机器周期对外部信号进行计数。在每个机器周期的的S5P2期间,期间,CPU采样引脚的输入电平。若前一机器周期采样采样引脚的输入电平。若前一机器周期采样值为值为1,下一机器周期采样值为,下一机器周期采样值为0,则计数器增,则计数器增1。 M1、M0工作方式选择位。工作方式选择位。有有4种工作方式,如种工作方式,如表表61所示。所示。 定时器计数器定时器计数器T0、T1 的控制寄存器的控制寄存器TCON 位地址位地址 8FH 8EH8DH8CH8BH8AH89H88H位功能位功能 TF1TR1TF0TR0IE1IT
3、1IE0IT0 TF1T1的溢出标志。的溢出标志。 T1溢出时,该位由内部硬件置位。若中断开放,即响应溢出时,该位由内部硬件置位。若中断开放,即响应中断,进入中断服务程序后,由硬件自动清中断,进入中断服务程序后,由硬件自动清0;若中断禁止,;若中断禁止,可用于判跳,用软件清可用于判跳,用软件清0。 TR1T1的运行控制位。的运行控制位。用软件控制,置用软件控制,置 l时,启动时,启动 T1;清;清0时,停止时,停止 T1。 TF0T0的溢出标志。的溢出标志。T0溢出时,该位由内部硬件置位。溢出时,该位由内部硬件置位。中断开放,即响应中断,进入中断服务程序后,由硬件自动清中断开放,即响应中断,进
4、入中断服务程序后,由硬件自动清0;中断禁止,可用于判跳,用软件清中断禁止,可用于判跳,用软件清0。 TR0T0的运行控制位。的运行控制位。用软件控制,置用软件控制,置1时,启动时,启动T0;清;清 0时,停止时,停止 T0。 IE1外部中断外部中断1下降沿触发标志位。下降沿触发标志位。 IE0外部中断外部中断0下降沿触发标志位。下降沿触发标志位。 IT1外部中断外部中断1触发类型选择位。触发类型选择位。 IT0外部中断外部中断0触发类型选择位。触发类型选择位。 复位后,复位后,TCON的所有位均清的所有位均清0。T0和和T1均是关中断的。均是关中断的。 T0、T1 的数据寄存器的数据寄存器由由
5、TH1、TL1和和TH0、TL0寄存器所组成。寄存器所组成。 复位后,这复位后,这4个寄存器全部清零。个寄存器全部清零。 定时器定时器/计数器中断计数器中断 中断允许寄存器中断允许寄存器IE EA位位-中断允许总控制位中断允许总控制位 ET0位、位、ET1位、位、ET2位位-T0、T1和和T2的中断允许控制位。的中断允许控制位。 某位某位=0,则禁止对应定时器,则禁止对应定时器/计数器的中断。计数器的中断。某位某位=1,则允许对应定时器,则允许对应定时器/计数器的中断。计数器的中断。 中断矢量中断矢量定时器定时器T0:000BH定时器定时器T1:001BH定时器定时器T2:002BH 中断优先
6、级寄存器中断优先级寄存器IP PT0PT0位、位、PT1PT1位、位、PT2PT2位位-T0-T0、T1T1和和T2T2中断优先级控制位。中断优先级控制位。某位为某位为0 0,则相应的定时器,则相应的定时器/ /计数器的中断为低优先级;计数器的中断为低优先级;某位为某位为1,则相应的定时器,则相应的定时器/计数器的中断为高优先级。计数器的中断为高优先级。T0可选择可选择4种不同的工作方式,而种不同的工作方式,而T1只具有只具有3种工作方式种工作方式(即方式(即方式0、方式、方式1和方式和方式2)。)。 方方式式0 01313位定时器位定时器/ /计数器计数器TMOD中的中的M10、M00。 方
7、式方式0时的结构如时的结构如图图62所示。计数寄存器由所示。计数寄存器由13位组成,即位组成,即THx高高8位位(作计数器作计数器)和和TLx的低的低5位位(32分频的定标器分频的定标器)构成。计数时,构成。计数时,TLx的低的低5位溢出后向位溢出后向THx进位,进位,THx溢出后将溢出后将TFx置位,并向置位,并向CPU申请中断。申请中断。从图从图62中可看到:中可看到:C/T位的电平为位的电平为0或或1,用来设定是作定时器或计数器。,用来设定是作定时器或计数器。6.2.2 6.2.2 定时器计数器定时器计数器T0T0、T1 T1 的工作方式的工作方式门控位门控位GATE可用作对可用作对IN
8、Tx引脚上的高电平时间进行计量。引脚上的高电平时间进行计量。由由图图62上可看出,上可看出,当当GATE0时,时,A点为高电平,定时器计数器的启动停点为高电平,定时器计数器的启动停止由止由 TRx决定。决定。TRx1,定时器计数器启动;,定时器计数器启动;TRx0,定时器,定时器计数器停止。计数器停止。 当当GATE1时,时,A点的电位由点的电位由INTx决定,因而决定,因而B点的电位就点的电位就由由TRx和和INTx决定,即定时器计数器的启动停止由决定,即定时器计数器的启动停止由TRx和和INTx两个条件决定。两个条件决定。 计数溢出时,计数溢出时,TFx置位。如果中断允许,置位。如果中断允
9、许,CPU响应中断并转入中响应中断并转入中断服务程序,由内部硬件清断服务程序,由内部硬件清TFx。TFx也可以由程序查询和清零。也可以由程序查询和清零。 方式方式116位定时器位定时器/计数器计数器 TMOD中的中的M10、M0l。 方式方式1时,时,T0、T1的逻辑结构如的逻辑结构如图图63所示。所示。计数时,计数时,TLx溢出后向溢出后向THx进位,进位,THx溢出后将溢出后将TFx置位,如果中断允许,置位,如果中断允许,CPU响应中断并转入中断服响应中断并转入中断服务程序,由内部硬件清务程序,由内部硬件清TFx。TFx也可以由程序查询和也可以由程序查询和清零。清零。 方式方式2定时常数自
10、动重装载的定时常数自动重装载的8位定时器位定时器/计数器计数器 TMOD中的中的M11、M00。将将16位计数寄存器分为两个位计数寄存器分为两个8位寄存器,组成一个可重位寄存器,组成一个可重载的载的8位计数寄存器。位计数寄存器。方式方式2时定时器时定时器/计数器计数器T0、T1的逻辑结构如的逻辑结构如图图64所所示。示。在方式在方式2中,中,TLx作为作为8位计数寄存器,位计数寄存器,THx作为作为8位计位计数常数寄存器。数常数寄存器。当当TLx计数溢出时,将计数溢出时,将TFx置位,并向置位,并向CPU申请中断;申请中断;将将THx的内容重新装入的内容重新装入TLx中,继续计数。中,继续计数
11、。重新装入不影响重新装入不影响THx的内容。的内容。方式方式2适合于作为串行口波特率发生器使用。适合于作为串行口波特率发生器使用。 方式方式3TMOD中的中的M1l、M01。将将T0分为一个分为一个8位定时器计数器位定时器计数器TL0和一个和一个 8位定时器位定时器TH0 。方式。方式3时时T0、T1逻辑结构分别如图逻辑结构分别如图65、图、图66 。 工作方式工作方式3下的定时器下的定时器/计数器计数器T0 方式方式3时,时,T0的结构见图的结构见图65 所示。所示。 TL0为为8位位定时器计定时器计数器数器,它占用了,它占用了T0的的GATE、INT0、启动停止控制位、启动停止控制位TR0
12、、T0引脚引脚 以及计数溢出标志位以及计数溢出标志位TF0和和T0的中断矢量的中断矢量等。等。TH0只能作为只能作为8位定时器用,此时的外部引脚位定时器用,此时的外部引脚T0已为定已为定时器计数器时器计数器TL0所占用。这时它占用了定时器计所占用。这时它占用了定时器计数器数器T1的启动停止控制位的启动停止控制位TR1、计数溢出标志位、计数溢出标志位TF1及及T1中断矢量中断矢量(地址为地址为001BH) 。 工作方式工作方式3下的定时器下的定时器/计数器计数器T1 T1的结构如图的结构如图66所示,所示, T1只可选方式只可选方式0、1或或2。作。作串行口波特率发生器时,串行口波特率发生器时,
13、T1的计数输出直接去串行口,的计数输出直接去串行口,只需设置好工作方式,串行口波特率发生器自动开始运只需设置好工作方式,串行口波特率发生器自动开始运行,如要停止工作,只需向行,如要停止工作,只需向T1送一个设为工作方式送一个设为工作方式3的的控制字即可。控制字即可。 80C52中的中的T2是一个是一个16位的、具有自动重装载和捕获能力位的、具有自动重装载和捕获能力的定时器计数器。在的定时器计数器。在T2的内部,除了两个的内部,除了两个8位计数器位计数器TL2、TH2和控制寄存器和控制寄存器T2CON及及T2MOD之外,还设置有捕获寄存器之外,还设置有捕获寄存器RCAP2L(低字节)和(低字节)
14、和RCAP2H(高字节)。(高字节)。T2的计数脉冲源可以有两个:一个是内部机器周期,另一个是由的计数脉冲源可以有两个:一个是内部机器周期,另一个是由T2(P10)端输入的外部计数脉冲。)端输入的外部计数脉冲。T2有有3种工作方式:自动重装载、搏获和波特率发生器方种工作方式:自动重装载、搏获和波特率发生器方式,由式,由T2CON中有关位决定。中有关位决定。输入引脚输入引脚T2是外部计数脉冲输入端;输入引脚是外部计数脉冲输入端;输入引脚T2EX是外是外部控制信号输入端。部控制信号输入端。 6.3 6.3 定时器计数器定时器计数器T2T2 控制寄存器控制寄存器 T2CON 位地址位地址 CFHCE
15、HCDHCCHCBHCAHC9HC8H位功能位功能 TF2EXF2RCLKTCLK EXEN2TR2C/T2CP/RL2 6.3.1 T26.3.1 T2中的中的特殊功能寄存器特殊功能寄存器TF2T2 T2 溢出标志溢出标志 定时器定时器T2T2溢出时置位,并申请中断。只能靠软件清除。但在溢出时置位,并申请中断。只能靠软件清除。但在波特率发生器方式下,也即波特率发生器方式下,也即RCLK1或或TCLK1时,定时器溢时,定时器溢出不对出不对TF2TF2置位。置位。 EXF2T2外部标志外部标志当当EXEN21,且,且T2EX引脚上出现负跳变而造成捕获或重装载引脚上出现负跳变而造成捕获或重装载时时
16、EXF2置位,申请中断。若已允许置位,申请中断。若已允许T2中断,中断,CPU将响应中断,将响应中断,转向中断服务程序。转向中断服务程序。EXF2要靠软件来清除。要靠软件来清除。 RCLK接收时钟标志。接收时钟标志。软件置位或清除,用以选择软件置位或清除,用以选择T2或或T1作串行口接收波特率发作串行口接收波特率发生器。生器。RCLK1时,用时,用T2溢出脉冲作为串行口的接收时钟;溢出脉冲作为串行口的接收时钟;RCLK0时,用时,用T1的溢出脉冲作接收时钟。的溢出脉冲作接收时钟。 TCLK发送时钟标志。发送时钟标志。软件置位或清除,用以选择软件置位或清除,用以选择T2或或T1作串行口发送波特率
17、发作串行口发送波特率发生器。生器。TCLKl时,用时,用T2溢出脉冲作为串行口的发送时钟;溢出脉冲作为串行口的发送时钟;TCLK0时,用时,用T1的溢出脉冲作发送时钟。的溢出脉冲作发送时钟。 EXEN2T2T2外部允许标志。外部允许标志。 软件设置或清除,以允许或禁止用外部信号来触发捕获或重软件设置或清除,以允许或禁止用外部信号来触发捕获或重装载操作。装载操作。当当EXEN2EXEN2l l时,若时,若T2T2未用作串行口的波特率发生器,则在未用作串行口的波特率发生器,则在T2EXT2EX端端出现的信号负跳变时,将造成出现的信号负跳变时,将造成T2T2捕获或重装载,并置捕获或重装载,并置EXF
18、2EXF2标志为标志为 1 1,请求中断。,请求中断。EXEN2EXEN20 0时,时,T2EXT2EX端的外部信号不起作用。端的外部信号不起作用。 TR2T2T2运行控制位。运行控制位。 软件设置或清除,软件设置或清除,TR2TR21 1,启动,启动T2T2,否则停止。,否则停止。 C/T2T2T2的定时器方式或计数器方式选择位。的定时器方式或计数器方式选择位。 C/T2C/T20 0时,选择定时器工作方式。时,选择定时器工作方式。TH2TH2和和TL2TL2对机器对机器周期进行计数。每个机器周期使周期进行计数。每个机器周期使TL2TL2寄存器的值增寄存器的值增1 1。计数。计数脉冲的频率为
19、脉冲的频率为1 11212振荡器频率。振荡器频率。 C CT2T21 1时,选择计数器工作方式,下降沿触发。计时,选择计数器工作方式,下降沿触发。计数脉冲自数脉冲自T2T2引脚输入,引脚输入,TH2TH2和和TL2TL2作外部信号脉冲计数器用,作外部信号脉冲计数器用,每当外部脉冲负跳变时,计数器值增每当外部脉冲负跳变时,计数器值增1 1。 CPRL2捕获重装载标志。捕获重装载标志。 CPCPRL2RL2l l选择捕获功能,这时若选择捕获功能,这时若EXEN2EXEN21 1,且,且T2EXT2EX端的信端的信号负跳变时,发生捕获操作。号负跳变时,发生捕获操作。 CPCPRL2RL20 0,选择
20、重装载功能,这时若,选择重装载功能,这时若T2T2溢出或在溢出或在EXEN2EXEN21 1条件下条件下 T2EXT2EX端信号负跳变,都会造成自动重装载操作。当端信号负跳变,都会造成自动重装载操作。当RCLKRCLKl l或或TCLKTCLKl l时,时,CPRL2RL2控制位不起作用,控制位不起作用,T2 T2 被强制工被强制工作于重装载方式。重装载发生于作于重装载方式。重装载发生于T2T2溢出时,常用来作波特率发溢出时,常用来作波特率发生器。生器。 方式控制寄存器方式控制寄存器T2MOD D7D6D5D4D3D2D1D0-T2OE DCEN T2OE:T2输出允许位。输出允许位。当当T2
21、OE1时,允许时钟输出至时,允许时钟输出至T2引脚。引脚。仅对仅对80C5480C58有定义。有定义。DCEN:向下计数允许位:向下计数允许位DCEN=1, T2向下向下(减减)计数计数 DCEN=0, T2向上向上(加加)计数计数 数据寄存器数据寄存器TH2、TL2 T2有一个有一个16位的数据寄存器,是由高位的数据寄存器,是由高8位寄存器位寄存器TH2和低和低8位寄存器位寄存器TL2所组成。它们都只能字节寻址,相应的字节地址所组成。它们都只能字节寻址,相应的字节地址为为CDH和和CCH。 复位后,这两个寄存器全部清零。复位后,这两个寄存器全部清零。 捕获寄存器捕获寄存器RCAP2HRCAP
22、2H、RCAP2LRCAP2L T2中的捕获寄存器是一个中的捕获寄存器是一个16位的数据寄存器,由高位的数据寄存器,由高8位寄存器位寄存器RCAP2H和低和低8 位寄存器位寄存器RCAP2L所组成,相应的字节地址为所组成,相应的字节地址为CBH和和CAH。捕获寄存器捕获寄存器RCAP2H和和RCAP2L,用于捕获计数器,用于捕获计数器TL2、TH2的计数状态,或用来预置计数初值的。的计数状态,或用来预置计数初值的。TH2、TL2和和 RCAP2H、RCAP2L之间接有双向缓冲器(三态门)。之间接有双向缓冲器(三态门)。复位后,两个寄存器全部清零。复位后,两个寄存器全部清零。T2的工作方式用控制
23、位的工作方式用控制位CPRL2(T2CON0)和)和RCLKTCLK来选择。来选择。T2有有3种工作方式,如表种工作方式,如表62所示:捕获方式、所示:捕获方式、自动重装载方式和波特率发生器方式。自动重装载方式和波特率发生器方式。 捕获方式捕获方式 在一定条件下,自动将计数器在一定条件下,自动将计数器TH2和和TL2的数据读入捕获寄存器的数据读入捕获寄存器RCAP2H和和RCAP2L,亦即,亦即TH2和和TL2内容的捕获是通过捕获寄内容的捕获是通过捕获寄存器存器RCAP2H和和RCAP2L来实现的。其工作原理可参见图来实现的。其工作原理可参见图67。当当CPRL2l时,选择捕获方式。时,选择捕
24、获方式。6.3.2 6.3.2 定时器计数器定时器计数器T2T2的工作方式的工作方式捕获操作发生于下述两种情况下:捕获操作发生于下述两种情况下:(1)寄存器寄存器TH2和和TL2溢出时,打开重装载三态缓冲器,把溢出时,打开重装载三态缓冲器,把TH2和和TL2的内容自动读入到捕获寄存器的内容自动读入到捕获寄存器RCAP2H和和RCAP2L中。同时,中。同时,溢出标志溢出标志TF2置置1,申请中断。,申请中断。 当当 EXEN2l且且 T2EX(P11)端的信号有负跳变时,将发)端的信号有负跳变时,将发生捕获操作。同时标志生捕获操作。同时标志EXF2置置1,申请中断。,申请中断。若若T2的中断是被
25、允许的,则无论发生的中断是被允许的,则无论发生TF2l还是还是EXF2l,CPU都会响应中断。响应中断后,应用软件清除中断申请。都会响应中断。响应中断后,应用软件清除中断申请。 自动重装载方式自动重装载方式在一定条件下,自动地将捕获寄存器在一定条件下,自动地将捕获寄存器RCAP2H和和RCAP2L的数据装入计数器的数据装入计数器TH2和和TL2中。中。捕获寄存器捕获寄存器RCAP2H和和RCAP2L在这里起预置计数初值在这里起预置计数初值的功能。对的功能。对8XC52,其工作原理可参见图,其工作原理可参见图68。当当CPRL20时,选择自动重装载方式。时,选择自动重装载方式。若若T2的中断是被
26、允许的,则无论发生的中断是被允许的,则无论发生TF21还是还是EXF21,CPU都会响应中断,此中断向量的地址为都会响应中断,此中断向量的地址为002BH。响应。响应中断后,应用软件撤除中断申请。中断后,应用软件撤除中断申请。TF2 和和EXF2都是直接可寻都是直接可寻址位,可采用址位,可采用CLR TF2和和CLR EXF2指令实现撤除中断申请的指令实现撤除中断申请的功能。功能。 波特率发生器方式波特率发生器方式 当当 T2CON中中 RCLK十十TCLK 1,其溢出脉冲用做串行口的时钟。,其溢出脉冲用做串行口的时钟。T2的波特率发生器方式下的结构图示于图的波特率发生器方式下的结构图示于图6
27、9中。中。RCLK选择串行通信接收波特率发生器,选择串行通信接收波特率发生器,TCLK选择发送波选择发送波特率发生器,发送和接收的波特率可以不同。特率发生器,发送和接收的波特率可以不同。 T2的输入时钟可由内部时钟决定,也可由外部脉冲决定。的输入时钟可由内部时钟决定,也可由外部脉冲决定。若若CT20,选用内部时钟,对机器周期计数,计数脉冲的频率,选用内部时钟,对机器周期计数,计数脉冲的频率为为112振荡器频率振荡器频率. 若若C/T2C/T21,选用外部,选用外部脉冲脉冲,该,该脉冲脉冲由由T2端输入,每当外部脉冲负端输入,每当外部脉冲负跳变时,计跳变时,计数器值增数器值增l。外部脉冲频率不超
28、过振荡器频率的。外部脉冲频率不超过振荡器频率的l24。 由于脉冲溢出时,由于脉冲溢出时,RCAP2H和和RCAP2L的内容会自动装载的内容会自动装载到到TH2和和TL2中,故波特率的值还决定于中,故波特率的值还决定于RCAP2H和和RCAP2L装装载初值。载初值。 RCLKTCLK还用于选择还用于选择T1还是还是T2作串行通信的波特率作串行通信的波特率发生器。由图发生器。由图69可看出,这两位的值用来控制两个电子开关的可看出,这两位的值用来控制两个电子开关的位置。值为位置。值为0时,选用时,选用T1做波特率发生器;值为做波特率发生器;值为1时,选用时,选用T2做波做波特率发生器。特率发生器。
29、当当T2用做波特率发生器时,用做波特率发生器时,TH2的溢出不使的溢出不使TF2置位,不产生置位,不产生中断。因而,当中断。因而,当T2用做波特率发生器时,没有必要禁止中断。用做波特率发生器时,没有必要禁止中断。 当当T2用做波特率发生器时,若用做波特率发生器时,若EXEN2置置1,则,则T2EX端的信号产端的信号产生负跳变时,生负跳变时,EXF2将置将置1,但不会发生重装载或捕获操作。这时,但不会发生重装载或捕获操作。这时,T2EX可以作为一个附加的外部中断源。可以作为一个附加的外部中断源。 T3俗称看门狗(俗称看门狗(watchdog),它的作用是强迫单片),它的作用是强迫单片微机进入复位
30、状态,使之从硬件或软件故障中解脱出来。微机进入复位状态,使之从硬件或软件故障中解脱出来。在实际应用中,由于现场的各种干扰或者程序设计错误,在实际应用中,由于现场的各种干扰或者程序设计错误,可能使单片微机的程序进入了可能使单片微机的程序进入了“ 死循环死循环” 或或“ 非程序非程序区区”(如表格数据区如表格数据区) 之后,在一个设定的时间内,假如用之后,在一个设定的时间内,假如用户程序没有重装户程序没有重装T3,监视电路将产生一个系统复位信号,监视电路将产生一个系统复位信号,强迫单片微机退出强迫单片微机退出“ 死循环死循环” 或或“ 非程序区非程序区” ,重新进,重新进行行“ 冷启动冷启动” 或
31、或“ 热启动热启动” 。 在飞利浦在飞利浦80C552中,中,T3由一个由一个11位的分频器和位的分频器和8位位定时器定时器T3组成,如图组成,如图6一一10所示。所示。6.4 6.4 监视定时器监视定时器( (看门狗看门狗)T3)T3预分频器输入为晶振预分频器输入为晶振1/12的信号,晶振为的信号,晶振为12MHz时,输入为时,输入为1MHz,而,而8位定时器位定时器T3每隔时间每隔时间t加加1:t122048/fosc 当晶振为当晶振为12MHz时,时,t为为2.048ms。若若8位定时器溢出,则产生一个尖脉冲,它将复位位定时器溢出,则产生一个尖脉冲,它将复位8C552,同时,同时在在RS
32、T引脚上也将产生引脚上也将产生1个正的复位尖脉冲。个正的复位尖脉冲。T3由外部引脚由外部引脚EW和和电源控制寄存器中的电源控制寄存器中的PCON4(WLE)和)和PCONl(PD)控制。)控制。 EW看门狗定时器允许,低电平有效。看门狗定时器允许,低电平有效。 EW0时,允许看门狗定时器,禁止掉电方式;时,允许看门狗定时器,禁止掉电方式;EW1时禁止看门狗定时器,允许掉电方式。时禁止看门狗定时器,允许掉电方式。 WLE 看门狗定时器允许重装标志。看门狗定时器允许重装标志。 若若WLE置位,定时器置位,定时器T3只能被软件装入,装入后只能被软件装入,装入后WLE自动清自动清除。除。T3的重装和溢
33、出,产生复位的时间间隔,由装入的重装和溢出,产生复位的时间间隔,由装入T3的值决的值决定,对于定,对于8C552,其监视间隔可编程为,其监视间隔可编程为2.048ms2.048255ms。 T3的工作过程:在的工作过程:在T3溢出时,复位溢出时,复位8XC552,并产生复位,并产生复位脉冲输出至复位引脚脉冲输出至复位引脚RST。为防止系统复位,必须在定时器。为防止系统复位,必须在定时器T3溢溢出前,通过软件对其进行重装。如果发生软件或硬件故障,将使出前,通过软件对其进行重装。如果发生软件或硬件故障,将使软件对定时器软件对定时器T3重装失败,从而重装失败,从而T3溢出导致复位信号的产生。溢出导致
34、复位信号的产生。 首先要确定系统能在不正常状态下维持多久,这首先要确定系统能在不正常状态下维持多久,这段时间就设定为监视定时器的最大间隔时间。段时间就设定为监视定时器的最大间隔时间。 T3是加是加1计数器,计数器,T3中装入中装入0,则监视时间间隔,则监视时间间隔最长,装入值为最长,装入值为FFH时,监视时间间隔最短。时,监视时间间隔最短。例:例:watchdog使用的一段程序如下:使用的一段程序如下:T3 EQU 0FFH ;定时器;定时器T3的地址的地址 PCON EQU 87H ;电源控制寄存器;电源控制寄存器PCON的地址的地址WATCH_INTV EQU 156 ;看门狗的时间间隔;
35、看门狗的时间间隔(2.048100ms) 插在用户程序中对看门狗需要重新装入的地方:插在用户程序中对看门狗需要重新装入的地方: LCALLWATCHDOG;调用看门狗服务子程序;调用看门狗服务子程序WATCHDOG:ORL PCON,10H ;允许定时器;允许定时器T3重装重装 MOV T3,WATCHINTV ;装载定时器;装载定时器T3 RET 定时器计数器溢出率的计算定时器计数器溢出率的计算 定时器计数器运行前,在数据寄存器中预先置入的常数,定时器计数器运行前,在数据寄存器中预先置入的常数,称为定时常数或计数常数称为定时常数或计数常数TC。由于计数器是加。由于计数器是加 1(向上)计数的
36、,(向上)计数的,故而预先置入的常数均应为补码。故而预先置入的常数均应为补码。其中:其中:t定时时间。定时时间。 Tc机器周期。机器周期。 Fosc晶体振荡器频率。晶体振荡器频率。L计数器的长度。计数器的长度。 6.5 6.5 定时器定时器/ /计数器的应用编程计数器的应用编程 6.5.1 6.5.1 定时器的应用定时器的应用 T0及及T1: 方式方式0 L=13 2138 192 方式方式1 L16 21665 536 方式方式2 L8 28256TC定时器计数器初值,即定时常数或计数常数。定时器计数器初值,即定时常数或计数常数。定时时间的倒数即为溢出率,即:定时时间的倒数即为溢出率,即:
37、根据要求的定时时间根据要求的定时时间t、设定的定时器工作方式、设定的定时器工作方式(确定确定L) 及晶体振荡频率及晶体振荡频率fosc,可计算出,可计算出TC值值(十进十进制数制数),再将其转换成二进制数,再将其转换成二进制数TCB,然后再分别送,然后再分别送入入THi、TLi。 对于对于T0、T1:方式方式0时:时:TCB=TCHTCL,TCH 高高8位,位,TCL低低5位位 MOV THi,TCH;送高;送高8位位 MOV TLi,TCL ;送;送低低5位位(高高3位为位为0)方式方式1时:时:TCB=TCHTCL,TCH 高高8位,位,TCL 低低8位位 MOV THi,TCH;送高;送
38、高8位位 MOV TLi,TCL ;送;送低低8位。位。方式方式2时:时:TCB 8位重装载位重装载 MOV THi,TCB;送高;送高8位位MOV TLi,TCB;送;送低低8位。位。 已知晶体振荡器的频率为已知晶体振荡器的频率为fosc=6MHz。可使用。可使用T0作定时作定时器,设为方式器,设为方式0,设定,设定1ms的定时,每隔的定时,每隔1ms使使P1.0引脚上的电引脚上的电平变反。平变反。 (1) 解:定时常数计算解:定时常数计算 振荡器的频率振荡器的频率fosc6MHz,机器周期为,机器周期为2s,方式,方式0计数器长计数器长度度L13(2138 192),定时时间,定时时间 t
39、1ms0.001s定时常数:定时常数: 例例 要求在要求在 P10引脚上产生周期为引脚上产生周期为2 ms的方波输出的方波输出TC为为76921E0CH,二进制数二进制数TCB0 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 B,取低,取低13位,位,其中高其中高8位位TCHF0H,低,低5位为位为TCL0CH.计数长度为计数长度为1E0CH=7692,定时为,定时为(81927692)2s=0.001STMOD的设定的设定 ( 2) 编编 程程 ORG 0000HAJMP MAINORG 000BH;T0中断矢量中断矢量AJMP INQPORG 0030HMAIN:MOV TM
40、OD,00H ;设设T0为定时器方式为定时器方式0 0 MOV TH0,0F0H ;写定时常数;写定时常数( (定时定时1ms)1ms) MOV TL0,0CH SETB TR0 ;启动;启动 T0 SETB ET0 ;允许;允许T0中断中断 SETB EA ;开放;开放CPU中断中断 AJMP $ ;定时中断等待;定时中断等待ORG 2000 H ;T0T0中断服务程序中断服务程序 INQP:MOV TH0,0F0H ;重写定时常数;重写定时常数 MOV TL0,0CHCPL P10 ;P10变反输出变反输出 RETI ;中断返回;中断返回使用使用T1T1的方式的方式1 1,设定,设定1ms
41、1ms的定时。在的定时。在P1P10 0引脚上产生引脚上产生周期为周期为2 ms的方波输出。晶体振荡器的频率为的方波输出。晶体振荡器的频率为fosc6 MHz。 解:解: 定时常数计算定时常数计算 振荡器的频率振荡器的频率fosc6MHz6106Hz,方式,方式1计数器长度计数器长度L16,2L21665536 定时时间定时时间 t1ms0.001s例例定时常数定时常数TC转换成二进制转换成二进制TCB1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 BF E 0 CH所以所以 TCHFEH,TCL0CHTMOD的设定的设定定时常数定时常数 ORG 0000HAJMP MAINO
42、RG 001BH ;T1中断矢量中断矢量 AJMP INQP ORG 100H ;主程序入口;主程序入口MAIN:MOV TMOD,10H ;T1为定时器方式为定时器方式1 MOV TH1,0FEH ;写定时常数;写定时常数 ,定时,定时1ms MOV TL1,0CH SETB TR1 ;启动;启动T1 SETB ET1 ;允许;允许T1中断中断 SETB EA ;开放;开放CPU中断中断 AJMP ORG 2000 H ;T1中断服务程序中断服务程序INQP:MOV TH1,0FEH ;重写定时常数;重写定时常数 MOV TL1,0CH CPL P10 ;P10变反输出变反输出 RETI ;
43、中断返回;中断返回欲用欲用80C51产生两个方波,一个方波周期为产生两个方波,一个方波周期为200s,另一,另一个方波周期为个方波周期为400s,该,该80C51同时使用串行口,用定时器计同时使用串行口,用定时器计数器作为波特率发生器。数器作为波特率发生器。 这时这时T0采用方式采用方式3工作,其中,工作,其中,TL0产生产生100s定时,由定时,由 P10输出方波输出方波1;TH0产生产生200s定时,由定时,由Pl1输出方波输出方波2;T1设置为方式设置为方式2,作波特率发生器用。,作波特率发生器用。fOCC9216 MHz。例例3 定时常数计算定时常数计算TL0定时常数为定时常数为 TC
44、L0:TL0100s单位单位s,为十进数制数值。十六进制数值为,为十进数制数值。十六进制数值为TL0B3H。TH0定时常数为定时常数为TCH0:定时时间为:定时时间为TH0200s单位单位s,为十进制数值。十六进制的值为,为十进制数值。十六进制的值为TH066 H。TH1的波特的波特率(详细计算见串行口部分)设波特率为率(详细计算见串行口部分)设波特率为2400,则定时常数为,则定时常数为TC2F6H 编编 程程ORG 0000H AJMP MAINORG 000BH ;TL0的中断入口的中断入口AJMP ITL0ORG 00lBH;TH0的中断入口的中断入口AJMP ITH0ORG 0100
45、HMAIN:MOV SP, 60H;设栈指针;设栈指针MOV TMOD, 23H ;设;设T0为方式为方式3,TI为为2 MOV TL0,0B3H ;设;设TL0初值初值(100s定时定时) MOV TH0,66H ;设;设TH0初值初值(200s定时定时) MOV TL1,0F6H ;设;设TL1初值初值(波特率为波特率为2400) MOV TH1, 0F6H ;设;设 TH1初值初值 SETB TR0 ;启动;启动 TL0 SETB TR1 ;启动;启动TH0 SETB ET0 ;允许;允许TL0中断中断 SETB ET1 ;允许;允许TH0中断中断 SETB EA ;CPU中断开放中断开
46、放 AJMP ORG 0200HITL0:MOV TL0, 0B3H ;重装定时常数;重装定时常数 CPL P10 ;输出方波;输出方波1(200s) RETIITH0:MOV TH0,66H ;重装定时常数;重装定时常数CPL P11 ;输出方波;输出方波2(400s) RETI当当TMOD寄存器中寄存器中C/T位设置为位设置为“1”时,作为计数时,作为计数器使用,可对来自单片微机引脚器使用,可对来自单片微机引脚T0或或T1上的负跳变脉冲上的负跳变脉冲进行计数,计数溢出时可申请中断,也可查询溢出标志位进行计数,计数溢出时可申请中断,也可查询溢出标志位TFx。例假如一个用户系统已使用了两个外部
47、中断源,即例假如一个用户系统已使用了两个外部中断源,即INT0和和INT1,用户系统要求从,用户系统要求从P1.0引脚上输出一个引脚上输出一个5kHz的方波,并要求采用定时器的方波,并要求采用定时器/计数器作为串行口的波特率计数器作为串行口的波特率发生器,另外还需要再增加一个外部中断源。发生器,另外还需要再增加一个外部中断源。6.5.2 6.5.2 计数器的应用计数器的应用把把T0设置为方式设置为方式3,把把T0作为外部中断源,作为外部中断源,TL0设置为计数器,计数器的定时常数设为设置为计数器,计数器的定时常数设为FFH,相当于一个边沿触发的外部中断源。,相当于一个边沿触发的外部中断源。而在
48、而在T0方式方式3下,下,TH0只能做只能做8位定时器,用来产生位定时器,用来产生5KHz方波的定方波的定时。时。当当T0设置为方式设置为方式3之后,之后,T1就作为串行口的波特率发生器,设为方就作为串行口的波特率发生器,设为方式式2。由由P1.0引脚上输出引脚上输出5kHz频率的方波,而方波周期为频率的方波,而方波周期为200s,则要求定时时间为则要求定时时间为100s,若采用,若采用12MHz的晶体振荡器,则机器周的晶体振荡器,则机器周期为期为1s。 计算时间常数:计算时间常数: (28TC)1s100sTC256100156 编程:编程:ORG 0000HSJMP MAINORG 000
49、BHAJMP TL0INT;TL0中断入口中断入口 ORG 001BHAJMP TH0INT;TH0中断入口中断入口ORG 0030HMAIN:MOV TMOD,#27H ;设;设T0为方式为方式3,TL0为计数为计数 ;器方式,;器方式,TH0为定时器方式,为定时器方式,; T1作波特率发生器,方式作波特率发生器,方式2MOV TH0,#156;TH0定时常数定时常数MOV TL0, #0FFH;TL0计数常数计数常数MOV TL1,#BAUD;BAUD根据波特率算出根据波特率算出MOV TH1,#BAUDMOV TCON,#55H ;置;置TR0和和TR1为为“1”,启启;动;动TL0和和
50、TH0SETB ET0;允许;允许TL0中断中断SETB ET1;允许;允许TH0中断中断SETB EA;允许;允许CPU中断中断SJMP $;中断等待;中断等待ORG 0100HTL0INT:MOV TL0,#0FFH;重置计数长度;重置计数长度(中断处理中断处理)RETITH0INT:MOV TH0,#156;重置定时常数;重置定时常数CPLP1.0;P1.0引脚输出方波引脚输出方波RETI 门控位门控位GATE可用作对可用作对INTx引脚上的高电平持续引脚上的高电平持续时间进行计量。当时间进行计量。当GATE位设为位设为“1”,并设定时器,并设定时器/计数计数器启动位器启动位TRx为为“