《单片微型计算机原理与接口技术 第二版 第6章 单片微机的定时器计数器原理及应用06[....ppt》由会员分享,可在线阅读,更多相关《单片微型计算机原理与接口技术 第二版 第6章 单片微机的定时器计数器原理及应用06[....ppt(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、普通高等教育“十一五”国家级规划教材单片微型计算机原理与接口技术单片微型计算机原理与接口技术(第二版)(第二版)高锋高锋编著编著科学出版社科学出版社北京北京第六章第六章单片微机的定时器单片微机的定时器/计数器计数器原理及应用原理及应用定时或计数:定时或计数:1硬件法硬件法定时功能完全由硬件电路完成,不占用定时功能完全由硬件电路完成,不占用CPU时间。时间。2软件法软件法软件定时是执行一段循环程序来进行时间延时。软件定时是执行一段循环程序来进行时间延时。牺牲了牺牲了CPU的时间的时间6-1概述概述3可编程定时器计数器可编程定时器计数器通过软件编程来实现定时时间的改变,通过中断通过软件编程来实现定
2、时时间的改变,通过中断或查询方法来完成定时功能或计数功能。或查询方法来完成定时功能或计数功能。80C51包含有两个包含有两个16位的定时器计数器:位的定时器计数器:T0和和T1;80C52包含有三个包含有三个16位的定时器计数器:位的定时器计数器:T0、T1和和T2;在;在80C51系列的部分产品(如系列的部分产品(如Philips公司的公司的80C552)中,还包含有作看门狗的)中,还包含有作看门狗的8位定时器位定时器T3。定定时时器器计计数数器器的的核核心心是是一一个个加加1计计数数器器其其基基本功能是计数加本功能是计数加1。计计数数 是是对对单单片片微微机机的的T0、T1或或T2引引脚脚
3、上上输输入的一个入的一个1到到0的跳变进行计数增的跳变进行计数增l。定定时时 是是对对单单片片微微机机内内部部的的机机器器周周期期进进行行计计数数,从而得到定时。从而得到定时。波波特特率率发发生生器器 80C51的的定定时时器器/计计数数器器还还可可用用作串行接口的波特率发生器。作串行接口的波特率发生器。T0、T1的内部结构简图示于的内部结构简图示于图图61中。中。T0、T1由以下几部分组成:由以下几部分组成:计数器计数器TH0、TL0和和TH1、TL1;特殊功能寄存器特殊功能寄存器TMOD、TCON;时钟分频器;时钟分频器;输入引脚输入引脚T0、T1。6.2 6.2 定时器计数器定时器计数器
4、T0T0、T1T1T0、T1 的方式寄存器的方式寄存器TMODTMOD的格式如下:的格式如下:低低4位定义位定义T0高高4位定义位定义T16.2.1与定时器计数器与定时器计数器T0、T1有关的有关的特殊功能寄存器特殊功能寄存器D7D6 D5D4D3D2D1D0GATE C/TM1M0GATE C/TM1M0T1T0GATE门控位门控位GATE1时时,由由外外部部中中断断引引脚脚INT0、INT1和和TR0、TR1共共同同来来启启动动定定时时器器。当当INT0引引脚脚为为高高电电平平时时,TR0置置位位启启动动定定时时器器T0;当当引引脚脚INT1为为高高电电平平时时,TR1置置位位,启动定时器
5、启动定时器T1。GATE0时时,仅仅由由TR0和和TR1置置位位来来启启动动定定时时器器T0和和T1。CT功能选择位功能选择位C/T1时,选择计数功能;时,选择计数功能;C/T0时,选择定时功能。时,选择定时功能。定时器,设置定时器,设置C/T0计计数数输输入入信信号号是是内内部部时时钟钟脉脉冲冲,每每个个机机器器周周期期使使计计数数器器的的值值增增1。计计数数速速率率为为振振荡荡周周期期的的112。当当采采用用12MHz的的晶晶体体时时,计计数数速速率率为为1MHz。定定时时器器的的定定时时时时间间,与与系系统统的的振振荡荡频频率率fosc、计计数数器器的的长长度度和初始值等有关。和初始值等
6、有关。计数器,设置计数器,设置C/T1通过引脚通过引脚T0和和T1对外部信号进行计数。在每个机器周期对外部信号进行计数。在每个机器周期的的S5P2期间,期间,CPU采样引脚的输入电平。若前一机器周期采样采样引脚的输入电平。若前一机器周期采样值为值为1,下一机器周期采样值为,下一机器周期采样值为0,则计数器增,则计数器增1。M1、M0工作方式选择位。工作方式选择位。有有4种工作方式,如种工作方式,如表表61所示。所示。定时器计数器定时器计数器T0、T1的控制寄存器的控制寄存器TCON位地址位地址 8FH8EH8DH8CH8BH8AH89H88H位功能位功能 TF1TR1TF0TR0IE1IT1I
7、E0IT0TF1T1的溢出标志。的溢出标志。T1溢溢出出时时,该该位位由由内内部部硬硬件件置置位位。若若中中断断开开放放,即即响响应应中中断断,进进入入中中断断服服务务程程序序后后,由由硬硬件件自自动动清清0;若若中中断断禁禁止止,可用于判跳,用软件清可用于判跳,用软件清0。TR1T1的运行控制位。的运行控制位。用软件控制,置用软件控制,置l时,启动时,启动T1;清;清0时,停止时,停止T1。TF0T0的溢出标志。的溢出标志。T0溢出时,该位由内部硬件置位。溢出时,该位由内部硬件置位。中断开放,即响应中断,进入中断服务程序后,由硬件自动清中断开放,即响应中断,进入中断服务程序后,由硬件自动清0
8、;中断禁止,可用于判跳,用软件清中断禁止,可用于判跳,用软件清0。TR0T0的运行控制位。的运行控制位。用软件控制,置用软件控制,置1时,启动时,启动T0;清;清0时,停止时,停止T0。IE1外部中断外部中断1下降沿触发标志位。下降沿触发标志位。IE0外部中断外部中断0下降沿触发标志位。下降沿触发标志位。IT1外部中断外部中断1触发类型选择位。触发类型选择位。IT0外部中断外部中断0触发类型选择位。触发类型选择位。复位后,复位后,TCON的所有位均清的所有位均清0。T0和和T1均是关中断的。均是关中断的。T0、T1的数据寄存器的数据寄存器由由TH1、TL1和和TH0、TL0寄存器所组成。寄存器
9、所组成。复位后,这复位后,这4个寄存器全部清零。个寄存器全部清零。定时器定时器/计数器中断计数器中断中断允许寄存器中断允许寄存器IEEA位位-中断允许总控制位中断允许总控制位ET0位、位、ET1位、位、ET2位位-T0、T1和和T2的中断允许控制位。的中断允许控制位。某位某位=0,则禁止对应定时器,则禁止对应定时器/计数器的中断。计数器的中断。某位某位=1,则允许对应定时器,则允许对应定时器/计数器的中断。计数器的中断。中断矢量中断矢量定时器定时器T0:000BH定时器定时器T1:001BH定时器定时器T2:002BH中断优先级寄存器中断优先级寄存器IP PT0PT0位、位、PT1PT1位、位
10、、PT2PT2位位-T0-T0、T1T1和和T2T2中断优先级控制位。中断优先级控制位。某位为某位为0 0,则相应的定时器,则相应的定时器/计数器的中断为低优先级;计数器的中断为低优先级;某位为某位为1,则相应的定时器,则相应的定时器/计数器的中断为高优先级。计数器的中断为高优先级。T0可可选选择择4种种不不同同的的工工作作方方式式,而而T1只只具具有有3种种工工作作方方式式(即方式(即方式0、方式、方式1和方式和方式2)。)。方方式式0 01313位定时器位定时器/计数器计数器TMOD中的中的M10、M00。方方式式0时时的的结结构构如如图图62所所示示。计计数数寄寄存存器器由由13位位组组
11、成成,即即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可可用用作作对对INTx引引脚脚上上的的高高电电平平时时间间进进行行计计量量。由由图图62上可看出,上可看出,当当
12、GATE0时时,A点点为为高高电电平平,定定时时器器计计数数器器的的启启动动停停止止由由TRx决决定定。TRx1,定定时时器器计计数数器器启启动动;TRx0,定定时时器器计数器停止。计数器停止。当当GATE1时时,A点点的的电电位位由由INTx决决定定,因因而而B点点的的电电位位就就由由TRx和和INTx决决定定,即即定定时时器器计计数数器器的的启启动动停停止止由由TRx和和INTx两个条件决定。两个条件决定。计计数数溢溢出出时时,TFx置置位位。如如果果中中断断允允许许,CPU响响应应中中断断并并转转入入中中断服务程序,由内部硬件清断服务程序,由内部硬件清TFx。TFx也可以由程序查询和清零
13、。也可以由程序查询和清零。方式方式116位定时器位定时器/计数器计数器TMOD中的中的M10、M0l。方式方式1时,时,T0、T1的逻辑结构如的逻辑结构如图图63所示。所示。计计数数时时,TLx溢溢出出后后向向THx进进位位,THx溢溢出出后后将将TFx置置位位,如如果果中中断断允允许许,CPU响响应应中中断断并并转转入入中中断断服服务务程程序序,由由内内部部硬硬件件清清TFx。TFx也也可可以以由由程程序序查查询询和和清清零。零。方式方式2定时常数自动重装载的定时常数自动重装载的8位定时器位定时器/计数器计数器TMOD中的中的M11、M00。将将16位位计计数数寄寄存存器器分分为为两两个个8
14、位位寄寄存存器器,组组成成一一个个可可重重载的载的8位计数寄存器。位计数寄存器。方方式式2时时定定时时器器/计计数数器器T0、T1的的逻逻辑辑结结构构如如图图64所所示。示。在在方方式式2中中,TLx作作为为8位位计计数数寄寄存存器器,THx作作为为8位位计计数常数寄存器。数常数寄存器。当当TLx计计数数溢溢出出时时,将将TFx置置位位,并并向向CPU申申请请中中断断;将将THx的内容重新装入的内容重新装入TLx中,继续计数。中,继续计数。重新装入不影响重新装入不影响THx的内容。的内容。方式方式2适合于作为串行口波特率发生器使用。适合于作为串行口波特率发生器使用。方式方式3TMOD中的中的M
15、1l、M01。将将T0分分为为一一个个8位位定定时时器器计计数数器器TL0和和一一个个8位位定定时时器器TH0。方式。方式3时时T0、T1逻辑结构分别如逻辑结构分别如图图65、图图66。工作方式工作方式3下的定时器下的定时器/计数器计数器T0方方式式3时时,T0的的结结构构见见图图65所所示示。TL0为为8位位定定时时器器计计数数器器,它它占占用用了了T0的的GATE、INT0、启启动动停停止止控控制制位位TR0、T0引脚引脚以及计数溢出标志位以及计数溢出标志位TF0和和T0的中断矢量等。的中断矢量等。TH0只能作为只能作为8位定时器用,此时的外部引脚位定时器用,此时的外部引脚T0已为定已为定
16、时器计数器时器计数器TL0所占用。这时它占用了定时器计所占用。这时它占用了定时器计数器数器T1的启动停止控制位的启动停止控制位TR1、计数溢出标志位、计数溢出标志位TF1及及T1中断矢量中断矢量(地址为地址为001BH)。工作方式工作方式3下的定时器下的定时器/计数器计数器T1T1的的结结构构如如图图66所所示示,T1只只可可选选方方式式0、1或或2。作作串串行行口口波波特特率率发发生生器器时时,T1的的计计数数输输出出直直接接去去串串行行口口,只只需需设设置置好好工工作作方方式式,串串行行口口波波特特率率发发生生器器自自动动开开始始运运行行,如如要要停停止止工工作作,只只需需向向T1送送一一
17、个个设设为为工工作作方方式式3的的控制字即可。控制字即可。80C52中中的的T2是是一一个个16位位的的、具具有有自自动动重重装装载载和和捕捕获获能能力力的的定定时时器器计计数数器器。在在T2的的内内部部,除除了了两两个个8位位计计数数器器TL2、TH2和和控控制制寄寄存存器器T2CON及及T2MOD之之外外,还还设设置置有有捕捕获获寄寄存存器器RCAP2L(低字节)和(低字节)和RCAP2H(高字节)。(高字节)。T2的的计计数数脉脉冲冲源源可可以以有有两两个个:一一个个是是内内部部机机器器周周期期,另另一一个个是是由由T2(P10)端输入的外部计数脉冲。)端输入的外部计数脉冲。T2有有3种
18、种工工作作方方式式:自自动动重重装装载载、搏搏获获和和波波特特率率发发生生器器方方式,由式,由T2CON中有关位决定。中有关位决定。输输入入引引脚脚T2是是外外部部计计数数脉脉冲冲输输入入端端;输输入入引引脚脚T2EX是是外外部控制信号输入端。部控制信号输入端。6.3 6.3 定时器计数器定时器计数器T2T2控制寄存器控制寄存器 T2CON位地址位地址CFHCEHCDHCCHCBHCAHC9HC8H位功能位功能TF2EXF2RCLKTCLK EXEN2TR2C/T2CP/RL26.3.1 T26.3.1 T2中的中的特殊功能寄存器特殊功能寄存器TF2T2 T2 溢出标志溢出标志 定时器定时器T
19、2T2溢出时置位,并申请中断。只能靠软件清除。但在溢出时置位,并申请中断。只能靠软件清除。但在波特率发生器方式下,也即波特率发生器方式下,也即RCLK1或或TCLK1时,定时器溢时,定时器溢出不对出不对TF2TF2置位。置位。EXF2T2外部标志外部标志当当EXEN21,且,且T2EX引脚上出现负跳变而造成捕获或重装载引脚上出现负跳变而造成捕获或重装载时时EXF2置位,申请中断。若已允许置位,申请中断。若已允许T2中断,中断,CPU将响应中断,将响应中断,转向中断服务程序。转向中断服务程序。EXF2要靠软件来清除。要靠软件来清除。RCLK接收时钟标志。接收时钟标志。软软件件置置位位或或清清除除
20、,用用以以选选择择T2或或T1作作串串行行口口接接收收波波特特率率发发生生器器。RCLK1时时,用用T2溢溢出出脉脉冲冲作作为为串串行行口口的的接接收收时时钟钟;RCLK0时,用时,用T1的溢出脉冲作接收时钟。的溢出脉冲作接收时钟。TCLK发送时钟标志。发送时钟标志。软软件件置置位位或或清清除除,用用以以选选择择T2或或T1作作串串行行口口发发送送波波特特率率发发生生器器。TCLKl时时,用用T2溢溢出出脉脉冲冲作作为为串串行行口口的的发发送送时时钟钟;TCLK0时,用时,用T1的溢出脉冲作发送时钟。的溢出脉冲作发送时钟。EXEN2T2T2外部允许标志。外部允许标志。软软件件设设置置或或清清除
21、除,以以允允许许或或禁禁止止用用外外部部信信号号来来触触发发捕捕获获或或重重装载操作。装载操作。当当EXEN2EXEN2l l时时,若若T2T2未未用用作作串串行行口口的的波波特特率率发发生生器器,则则在在T2EXT2EX端端出出现现的的信信号号负负跳跳变变时时,将将造造成成T2T2捕捕获获或或重重装装载载,并并置置EXF2EXF2标标志志为为 1 1,请求中断。,请求中断。EXEN2EXEN20 0时,时,T2EXT2EX端的外部信号不起作用。端的外部信号不起作用。TR2T2T2运行控制位。运行控制位。软件设置或清除,软件设置或清除,TR2TR21 1,启动,启动T2T2,否则停止。,否则停
22、止。C/T2T2T2的定时器方式或计数器方式选择位。的定时器方式或计数器方式选择位。C/T2C/T20 0时时,选选择择定定时时器器工工作作方方式式。TH2TH2和和TL2TL2对对机机器器周周期期进进行行计计数数。每每个个机机器器周周期期使使TL2TL2寄寄存存器器的的值值增增1 1。计计数数脉冲的频率为脉冲的频率为1 11212振荡器频率。振荡器频率。C CT2T21 1时时,选选择择计计数数器器工工作作方方式式,下下降降沿沿触触发发。计计数数脉脉冲冲自自T2T2引引脚脚输输入入,TH2TH2和和TL2TL2作作外外部部信信号号脉脉冲冲计计数数器器用用,每当外部脉冲负跳变时,计数器值增每当
23、外部脉冲负跳变时,计数器值增1 1。CPRL2捕获重装载标志。捕获重装载标志。CPCPRL2RL2l l选选择择捕捕获获功功能能,这这时时若若EXEN2EXEN21 1,且且T2EXT2EX端端的的信信号负跳变时,发生捕获操作。号负跳变时,发生捕获操作。CPCPRL2RL20 0,选选择择重重装装载载功功能能,这这时时若若T2T2溢溢出出或或在在EXEN2EXEN21 1条条件件下下 T2EXT2EX端端信信号号负负跳跳变变,都都会会造造成成自自动动重重装装载载操操作作。当当RCLKRCLKl l或或TCLKTCLKl l时时,CPRL2RL2控控制制位位不不起起作作用用,T2 T2 被被强强
24、制制工工作作于于重装载方式。重装载发生于重装载方式。重装载发生于T2T2溢出时,常用来作波特率发生器。溢出时,常用来作波特率发生器。方式控制寄存器方式控制寄存器T2MODD7D6D5D4D3D2D1D0-T2OEDCENT2OE:T2输出允许位。输出允许位。当当T2OE1时,允许时钟输出至时,允许时钟输出至T2引脚。引脚。仅对仅对80C5480C58有定义。有定义。DCEN:向下计数允许位:向下计数允许位DCEN=1,T2向下向下(减减)计数计数DCEN=0,T2向上向上(加加)计数计数数据寄存器数据寄存器TH2、TL2T2有有一一个个16位位的的数数据据寄寄存存器器,是是由由高高8位位寄寄存
25、存器器TH2和和低低8位位寄寄存存器器TL2所所组组成成。它它们们都都只只能能字字节节寻寻址址,相相应应的的字字节节地地址址为为CDH和和CCH。复位后,这两个寄存器全部清零。复位后,这两个寄存器全部清零。捕获寄存器捕获寄存器RCAP2HRCAP2H、RCAP2LRCAP2LT2中的捕获寄存器是一个中的捕获寄存器是一个16位的数据寄存器,由高位的数据寄存器,由高8位寄存器位寄存器RCAP2H和低和低8位寄存器位寄存器RCAP2L所组成,相应的字节地址为所组成,相应的字节地址为CBH和和CAH。捕获寄存器捕获寄存器RCAP2H和和RCAP2L,用于捕获计数器,用于捕获计数器TL2、TH2的计数状
26、态,或用来预置计数初值的。的计数状态,或用来预置计数初值的。TH2、TL2和和RCAP2H、RCAP2L之间接有双向缓冲器(三态门)。之间接有双向缓冲器(三态门)。复位后,两个寄存器全部清零。复位后,两个寄存器全部清零。T2的工作方式用控制位的工作方式用控制位CPRL2(T2CON0)和)和RCLKTCLK来选择。来选择。T2有有3种工作方式,如种工作方式,如表表62所示:捕获方式、所示:捕获方式、自动重装载方式和波特率发生器方式。自动重装载方式和波特率发生器方式。捕获方式捕获方式在在一一定定条条件件下下,自自动动将将计计数数器器TH2和和TL2的的数数据据读读入入捕捕获获寄寄存存器器RCAP
27、2H和和RCAP2L,亦亦即即TH2和和TL2内内容容的的捕捕获获是是通通过过捕捕获获寄寄存存器器RCAP2H和和RCAP2L来实现的。其工作原理可参见来实现的。其工作原理可参见图图67。当当CPRL2l时,选择捕获方式。时,选择捕获方式。6.3.2 6.3.2 定时器计数器定时器计数器T2T2的工作方式的工作方式捕获操作发生于下述两种情况下:捕获操作发生于下述两种情况下:(1)寄寄存存器器TH2和和TL2溢溢出出时时,打打开开重重装装载载三三态态缓缓冲冲器器,把把TH2和和TL2的的内内容容自自动动读读入入到到捕捕获获寄寄存存器器RCAP2H和和RCAP2L中中。同同时时,溢出标志溢出标志T
28、F2置置1,申请中断。,申请中断。当当EXEN2l且且T2EX(P11)端端的的信信号号有有负负跳跳变变时时,将将发发生捕获操作。同时标志生捕获操作。同时标志EXF2置置1,申请中断。,申请中断。若若T2的的中中断断是是被被允允许许的的,则则无无论论发发生生TF2l还还是是EXF2l,CPU都会响应中断。响应中断后,应用软件清除中断申请。都会响应中断。响应中断后,应用软件清除中断申请。自动重装载方式自动重装载方式在在一一定定条条件件下下,自自动动地地将将捕捕获获寄寄存存器器RCAP2H和和RCAP2L的数据装入计数器的数据装入计数器TH2和和TL2中。中。捕获寄存器捕获寄存器RCAP2H和和R
29、CAP2L在这里起预置计数初值在这里起预置计数初值的功能。对的功能。对8XC52,其工作原理可参见,其工作原理可参见图图68。当当CPRL20时,选择自动重装载方式。时,选择自动重装载方式。若若T2的的中中断断是是被被允允许许的的,则则无无论论发发生生TF21还还是是EXF21,CPU都都会会响响应应中中断断,此此中中断断向向量量的的地地址址为为002BH。响响应应中中断断后后,应应用用软软件件撤撤除除中中断断申申请请。TF2和和EXF2都都是是直直接接可可寻寻址址位位,可可采采用用CLRTF2和和CLREXF2指指令令实实现现撤撤除除中中断断申申请请的的功能。功能。波特率发生器方式波特率发生
30、器方式当当T2CON中中RCLK十十TCLK1,其溢出脉冲用做串行口的时钟。,其溢出脉冲用做串行口的时钟。T2的波特率发生器方式下的结构图示于的波特率发生器方式下的结构图示于图图69中。中。RCLK选选择择串串行行通通信信接接收收波波特特率率发发生生器器,TCLK选选择择发发送送波波特率发生器,发送和接收的波特率可以不同。特率发生器,发送和接收的波特率可以不同。T2的输入时钟可由内部时钟决定,也可由外部脉冲决定。的输入时钟可由内部时钟决定,也可由外部脉冲决定。若若CT20,选选用用内内部部时时钟钟,对对机机器器周周期期计计数数,计计数数脉脉冲冲的的频频率率为为112振荡器频率振荡器频率.若若C
31、/T2C/T21,选选用用外外部部脉脉冲冲,该该脉脉冲冲由由T2端端输输入入,每每当当外外部部脉脉冲冲负负跳变时,计跳变时,计数器值增数器值增l。外部脉冲频率不超过振荡器频率的。外部脉冲频率不超过振荡器频率的l24。由由于于脉脉冲冲溢溢出出时时,RCAP2H和和RCAP2L的的内内容容会会自自动动装装载载到到TH2和和TL2中中,故故波波特特率率的的值值还还决决定定于于RCAP2H和和RCAP2L装装载初值。载初值。RCLKTCLK还还用用于于选选择择T1还还是是T2作作串串行行通通信信的的波波特特率率发发生生器器。由由图图69可可看看出出,这这两两位位的的值值用用来来控控制制两两个个电电子子
32、开开关关的的位位置置。值值为为0时时,选选用用T1做做波波特特率率发发生生器器;值值为为1时时,选选用用T2做做波波特率发生器。特率发生器。当当T2用用做做波波特特率率发发生生器器时时,TH2的的溢溢出出不不使使TF2置置位位,不不产产生生中断。因而,当中断。因而,当T2用做波特率发生器时,没有必要禁止中断。用做波特率发生器时,没有必要禁止中断。当当T2用用做做波波特特率率发发生生器器时时,若若EXEN2置置1,则则T2EX端端的的信信号号产产生生负负跳跳变变时时,EXF2将将置置1,但但不不会会发发生生重重装装载载或或捕捕获获操操作作。这这时时,T2EX可以作为一个附加的外部中断源。可以作为
33、一个附加的外部中断源。T3俗俗称称看看门门狗狗(watchdog),它它的的作作用用是是强强迫迫单单片片微微机机进进入入复复位位状状态态,使使之之从从硬硬件件或或软软件件故故障障中中解解脱脱出出来来。在在实实际际应应用用中中,由由于于现现场场的的各各种种干干扰扰或或者者程程序序设设计计错错误误,可可能能使使单单片片微微机机的的程程序序进进入入了了“死死循循环环”或或“非非程程序序区区”(如如表表格格数数据据区区)之之后后,在在一一个个设设定定的的时时间间内内,假假如如用用户户程程序序没没有有重重装装T3,监监视视电电路路将将产产生生一一个个系系统统复复位位信信号号,强强迫迫单单片片微微机机退退
34、出出“死死循循环环”或或“非非程程序序区区”,重重新新进进行行“冷启动冷启动”或或“热启动热启动”。在在飞飞利利浦浦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位定时器溢出,则产生一个尖脉冲,它将复位位定
35、时器溢出,则产生一个尖脉冲,它将复位8C552,同时,同时在在RST引脚上也将产生引脚上也将产生1个正的复位尖脉冲。个正的复位尖脉冲。T3由外部引脚由外部引脚EW和和电源控制寄存器中的电源控制寄存器中的PCON4(WLE)和)和PCONl(PD)控制。)控制。EW看门狗定时器允许,低电平有效。看门狗定时器允许,低电平有效。EW0时,允许看门狗定时器,禁止掉电方式;时,允许看门狗定时器,禁止掉电方式;EW1时禁止看门狗定时器,允许掉电方式。时禁止看门狗定时器,允许掉电方式。WLE看门狗定时器允许重装标志。看门狗定时器允许重装标志。若若WLE置位,定时器置位,定时器T3只能被软件装入,装入后只能被
36、软件装入,装入后WLE自动清除。自动清除。T3的的重重装装和和溢溢出出,产产生生复复位位的的时时间间间间隔隔,由由装装入入T3的的值值决决定,对于定,对于8C552,其监视间隔可编程为,其监视间隔可编程为2.048ms2.048255ms。T3的的工工作作过过程程:在在T3溢溢出出时时,复复位位8XC552,并并产产生生复复位位脉脉冲冲输输出出至至复复位位引引脚脚RST。为为防防止止系系统统复复位位,必必须须在在定定时时器器T3溢溢出出前前,通通过过软软件件对对其其进进行行重重装装。如如果果发发生生软软件件或或硬硬件件故故障障,将将使使软件对定时器软件对定时器T3重装失败,从而重装失败,从而T
37、3溢出导致复位信号的产生。溢出导致复位信号的产生。首首先先要要确确定定系系统统能能在在不不正正常常状状态态下下维维持持多多久久,这这段时间就设定为监视定时器的最大间隔时间。段时间就设定为监视定时器的最大间隔时间。T3是是加加1计计数数器器,T3中中装装入入0,则则监监视视时时间间间间隔隔最长,装入值为最长,装入值为FFH时,监视时间间隔最短。时,监视时间间隔最短。例:例:watchdog使用的一段程序如下:使用的一段程序如下:T3EQU 0FFH;定时器;定时器T3的地址的地址PCONEQU 87H;电源控制寄存器;电源控制寄存器PCON的地址的地址WATCH_INTVEQU156;看门狗的时
38、间间隔;看门狗的时间间隔(2.048100ms)插在用户程序中对看门狗需要重新装入的地方:插在用户程序中对看门狗需要重新装入的地方:LCALLWATCHDOG;调用看门狗服务子程序;调用看门狗服务子程序WATCHDOG:ORLPCON,10H;允许定时器;允许定时器T3重装重装MOVT3,WATCHINTV;装载定时器;装载定时器T3RET定时器计数器溢出率的计算定时器计数器溢出率的计算定定时时器器计计数数器器运运行行前前,在在数数据据寄寄存存器器中中预预先先置置入入的的常常数数,称称为为定定时时常常数数或或计计数数常常数数TC。由由于于计计数数器器是是加加1(向向上上)计计数数的的,故而预先
39、置入的常数均应为补码。故而预先置入的常数均应为补码。其中:其中:t定时时间。定时时间。Tc机器周期。机器周期。Fosc晶体振荡器频率。晶体振荡器频率。L计数器的长度。计数器的长度。6.5 6.5 定时器定时器/计数器的应用编程计数器的应用编程6.5.1 6.5.1 定时器的应用定时器的应用T0及及T1:方式方式0L=132138192方式方式1L1621665536方式方式2L828256TC定时器计数器初值,即定时常数或计数常数。定时器计数器初值,即定时常数或计数常数。定时时间的倒数即为溢出率,即:定时时间的倒数即为溢出率,即:根根据据要要求求的的定定时时时时间间t、设设定定的的定定时时器器
40、工工作作方方式式(确确定定L)及及晶晶体体振振荡荡频频率率fosc,可可计计算算出出TC值值(十十进进制制数数),再再将将其其转转换换成成二二进进制制数数TCB,然然后后再再分分别别送送入入THi、TLi。对于对于T0、T1:方式方式0时:时:TCB=TCHTCL,TCH高高8位,位,TCL低低5位位MOVTHi,TCH;送高;送高8位位MOVTLi,TCL;送;送低低5位位(高高3位为位为0)方式方式1时:时:TCB=TCHTCL,TCH高高8位,位,TCL低低8位位MOV THi,TCH;送高;送高8位位MOV TLi,TCL;送;送低低8位。位。方式方式2时:时:TCB8位重装载位重装载
41、MOVTHi,TCB;送高;送高8位位MOVTLi,TCB;送;送低低8位。位。已已知知晶晶体体振振荡荡器器的的频频率率为为fosc=6MHz。可可使使用用T0作作定定时时器器,设设为为方方式式0,设设定定1ms的的定定时时,每每隔隔1ms使使P1.0引引脚脚上上的的电电平平变反。变反。(1)解:定时常数计算解:定时常数计算振振荡荡器器的的频频率率fosc6MHz,机机器器周周期期为为2s,方方式式0计计数数器器长长度度L13(2138192),定时时间,定时时间t1ms0.001s定时常数:定时常数:例例要求在要求在P10引脚上产生周期为引脚上产生周期为2ms的方波输出的方波输出TC为为76
42、921E0CH,二二进进制制数数TCB0001111000001100B,取取低低13位位,其其中中高高8位位TCHF0H,低低5位位为为TCL0CH.计计数数长长度度为为1E0CH=7692,定时为,定时为(81927692)2s=0.001STMOD的设定的设定(2)编编程程ORG 0000HAJMP MAINORG 000BH;T0中断矢量中断矢量AJMPINQPORG 0030HMAIN:MOVTMOD,00H;设设T0为定时器方式为定时器方式0 0 MOV TH0,0F0H ;写定时常数;写定时常数(定时定时1ms)1ms)MOV TL0,0CHSETBTR0 ;启动;启动 T0 S
43、ETBET0 ;允许;允许T0中断中断 SETBEA ;开放;开放CPU中断中断 AJMP$;定时中断等待;定时中断等待ORG 2000H ;T0T0中断服务程序中断服务程序 INQP:MOVTH0,0F0H ;重写定时常数;重写定时常数 MOV TL0,0CHCPLP10 ;P10变反输出变反输出 RETI ;中断返回;中断返回使用使用T1T1的方式的方式1 1,设定,设定1ms1ms的定时。在的定时。在P1P10 0引脚上产生引脚上产生周期为周期为2ms的方波输出。晶体振荡器的频率为的方波输出。晶体振荡器的频率为fosc6MHz。解:解:定时常数计算定时常数计算振荡器的频率振荡器的频率fo
44、sc6MHz6106Hz,方式,方式1计数器长度计数器长度L16,2L21665536定时时间定时时间t1ms0.001s例例定定时时常常数数TC转转换换成成二二进进制制TCB1111111000001100BFE0CH所以所以TCHFEH,TCL0CHTMOD的设定的设定定时常数定时常数ORG0000HAJMPMAINORG 001BH;T1中断矢量中断矢量AJMPINQPORG 100H;主程序入口;主程序入口MAIN:MOVTMOD,10H;T1为定时器方式为定时器方式1MOV TH1,0FEH;写定时常数;写定时常数,定时,定时1msMOV TL1,0CHSETBTR1;启动;启动T1
45、SETBET1;允许;允许T1中断中断SETBEA;开放;开放CPU中断中断AJMPORG 2000H;T1中断服务程序中断服务程序INQP:MOVTH1,0FEH;重写定时常数;重写定时常数MOVTL1,0CHCPLP10;P10变反输出变反输出RETI;中断返回;中断返回欲欲用用80C51产产生生两两个个方方波波,一一个个方方波波周周期期为为200s,另另一一个个方方波波周周期期为为400s,该该80C51同同时时使使用用串串行行口口,用用定定时时器器计计数器作为波特率发生器。数器作为波特率发生器。这这时时T0采采用用方方式式3工工作作,其其中中,TL0产产生生100s定定时时,由由P10
46、输输出出方方波波1;TH0产产生生200s定定时时,由由Pl1输输出出方方波波2;T1设置为方式设置为方式2,作波特率发生器用。,作波特率发生器用。fOCC9216MHz。例例3定时常数计算定时常数计算TL0定时常数为定时常数为TCL0:TL0100s单位单位s,为十进数制数值。十六进制数值为,为十进数制数值。十六进制数值为TL0B3H。TH0定时常数为定时常数为TCH0:定时时间为:定时时间为TH0200s单单位位s,为为十十进进制制数数值值。十十六六进进制制的的值值为为TH066H。TH1的的波波特特率率(详详细细计计算算见见串串行行口口部部分分)设设波波特特率率为为2400,则则定定时时
47、常常数数为为TC2F6H编编程程ORG 0000HAJMP MAINORG 000BH;TL0的中断入口的中断入口AJMPITL0ORG 00lBH;TH0的中断入口的中断入口AJMPITH0ORG0100HMAIN:MOVSP,60H;设栈指针;设栈指针MOV TMOD,23H;设;设T0为方式为方式3,TI为为2MOVTL0,0B3H;设;设TL0初值初值(100s定时定时)MOV TH0,66H;设;设TH0初值初值(200s定时定时)MOV TL1,0F6H;设设TL1初初值值(波波特特率率为为2400)MOVTH1,0F6H;设;设TH1初值初值SETBTR0;启动;启动TL0SET
48、BTR1;启动;启动TH0SETBET0;允许;允许TL0中断中断SETBET1;允许;允许TH0中断中断SETBEA;CPU中断开放中断开放AJMP ORG 0200HITL0:MOVTL0,0B3H;重装定时常数;重装定时常数CPL P10;输出方波;输出方波1(200s)RETIITH0:MOVTH0,66H;重装定时常数;重装定时常数CPLP11;输出方波;输出方波2(400s)RETI当当TMOD寄寄存存器器中中C/T位位设设置置为为“1”时时,作作为为计计数数器器使使用用,可可对对来来自自单单片片微微机机引引脚脚T0或或T1上上的的负负跳跳变变脉脉冲冲进进行行计计数数,计计数数溢溢
49、出出时时可可申申请请中中断断,也也可可查查询询溢溢出出标标志志位位TFx。例例假假如如一一个个用用户户系系统统已已使使用用了了两两个个外外部部中中断断源源,即即INT0和和INT1,用用户户系系统统要要求求从从P1.0引引脚脚上上输输出出一一个个5kHz的的方方波波,并并要要求求采采用用定定时时器器/计计数数器器作作为为串串行行口口的的波波特特率率发生器,另外还需要再增加一个外部中断源。发生器,另外还需要再增加一个外部中断源。6.5.2 6.5.2 计数器的应用计数器的应用把把T0设置为方式设置为方式3,把把T0作作为为外外部部中中断断源源,TL0设设置置为为计计数数器器,计计数数器器的的定定
50、时时常常数数设设为为FFH,相当于一个边沿触发的外部中断源。,相当于一个边沿触发的外部中断源。而而在在T0方方式式3下下,TH0只只能能做做8位位定定时时器器,用用来来产产生生5KHz方方波波的的定定时。时。当当T0设设置置为为方方式式3之之后后,T1就就作作为为串串行行口口的的波波特特率率发发生生器器,设设为为方方式式2。由由P1.0引脚上输出引脚上输出5kHz频率的方波,而方波周期为频率的方波,而方波周期为200s,则要求定时时间为则要求定时时间为100s,若采用,若采用12MHz的晶体振荡器,则机器周的晶体振荡器,则机器周期为期为1s。计算时间常数:计算时间常数:(28TC)1s100s