第6章定时/计数器第6章目录6.1定时/计数器0和16.1.1定时/计数器的结构及功能6.1.2定时/计数器0和1的控制和状态寄存器6.2T0和T1的4种工作模式6.2.1模式06.2.2模式16.2.3模式26.2.4模式36.3定时/计数器的应用6.3.1定时/计数器模式0的应用6.3.2定时/计数器模式1的应用6.3.3定时/计数器模式2的应用6.3.4定时/计数器门控位GATE的应用6.3.5运行中读定时/计数器6.1定时/计数器0和16.1.1定时/计数器的结构及功能1、定时/计数器的结构定时/计数器的结构如图6-1所示,定时/计数器T0、T1是两个16位的定时计数器,其中T0由TH0和TL0构成,T1由TH1和TL1构成。•TMOD(定时模式控制寄存器)用于选择各定时/计数器的功能和工作模式。•TCON(定时控制寄存器)用于控制定时/计数器T0、T1启动和停止计数,同时可显示定时时间是否到或计数值是否已满等状态。•T0、T1、TMOD、TCON属于特殊功能寄存器,系统复位时,四个特殊功能寄存器的所有位都被清零。6.1定时/计数器0和16.1.1定时/计数器的结构及功能1、定时/计数器的结构定时/计数器T0和T1本质上都是加1计数器,每输入一个脉冲,计数器加1,当加到计数器为全1时,再输入一个脉冲,就表示定时值到或计数值满,从而发生溢出,CPU会自动对TCON中的相关位置1,编程入员可采用查询模式或中断模式处理相应的事件。6.1定时/计数器0和16.1.1定时/计数器的结构及功能2、T0和T1的功能选择T0和T1都具有定时和计数两种功能。在TMOD中,有一个控制位(C/),分别用于选择T0和T1是工作在定时器模式还是计数器模式。图6-1定时/计数器的结构T6.1定时/计数器0和16.1.1定时/计数器的结构及功能2、T0和T1的功能选择(1).计数功能–选择计数器模式时,单片机对P3.4或P3.5的外部引脚信号进行采样并计数,计数脉冲从引脚T0(P3.4)或T1(P3.5)输入。当输入信号发生由1至0的负跳变时,计数器(TH0,TL0或TH1,TL1)的值增1。–每个机器周期的S5P2期间,CPU对输入的外部脉冲信号进行采样。如在第一个周期中采样值为1,而在下一个周期中采样值为0,则在紧跟着的再下一个周期的S3P1期间,计数值就增1。6.1定时/计数器0和16.1.1定时/计数器的结构及功能2、T0和T1的功能选择(1).计数功能–由于确认一次外部信号的跳变最短需要2个机器周期,即24个振荡器周期。因此外部输入计数脉冲的最高频率应为振荡器频率的1/24。对外部输入信号的占空比并没有什么限制,但为了确保某一给定的电平在变化之前至少被采样一次,则这一电平至少要保持一个机器周期。–故对输入信号的基本要求如图6-2所示,图中,Tcy为机器周期。图6-2对输入信号的基本要求TcyTcy6.1定时/计数器0和16.1.1定时/计数器的结构及功能2、T0和T1的功能选择(2).定时功能–T0、T1的定时功能也是通过计数实现的。–选择定时器模式时,计数脉冲来自于单片机内部时钟脉冲,每个机器周期使计数器的值增1。–1个机器周期等于12个振荡器周期,故计数速率为振荡器频率的1/12。当系统晶振频率时,计数速率为1MHz,即每1μs计数器加1。–计数值乘以单片机的机器周期就是定时时间。6.1定时/计数器0和16.1.2定时/计数器0和1的控制和状态寄存器特殊功能寄存器TMOD和TCON分别是定时/计数器T0和T1的模式选择和状态控制寄存器,用于确定各定时/计数器的工作模式和功能等。1、模式控制寄存器TMODTMOD寄存器的单元地址是89H,不能位寻址,只能用字节传送指令设置其内容。TMOD用于确定T0和T1的功能及4种工作模式的选择。其中低4位用于控制T0,高4位用于控制T1。其格式如下:(MSB)(LSB)GATEC/__TM1M0GATEC/__TM1M0(1)GATE位:门控位。6.1定时/计数器0和16.1.2定时/计数器0和1的控制和状态寄存器1、模式控制寄存器TMOD(1).GATE位:门控位•当GATE=0时,则只要TR0和TR1置1,定时/计数器就被选通,而不管或的电平是高还是低。•当GATE=1时,只有或引脚为高电平且TR0或TR1置1时,相应的定时/计数器才被选通工作,这种特性可以用于测量在(X=0或1)端出现的正脉冲的宽度。(2).C/位:定时/计数功能选择位•当C/=0时,设置为定时器模式,计数器采样的是内部时钟脉冲,每一个机器周期加1。•当C/=1时,设置为计数器模式,计数器采样的是外部引脚信号,即T0(P3.4)或T1(P3.5)端的外部脉冲。TTTINT0INT1INTX6.1定时/计数器0和16.1.2定时/计数器0和1的控制和状态寄存器1、模式控制寄存器TMOD(3).M1、M0位:工作模式选择位•2位可形成4种编码,对应于4种工作模式,如表6-1所示。表6-1M1、M0工作模式选择M1M0功能描述00模式0,TLX中低5位与THX中的8位构成13位计数器。计满溢出时,13位计数器回零。01模式1,TLX与THX构成16位计数器。计满溢出时,16位计数器回零。10模式2,8位自动重装载的定时/计数器,每当计数器TLX溢出时,THX中的内容重新装载到TLX。11模式3,对定时器0,分成2个8位计数器,对于定时器1,停止计数。M1M0功能描述00模式0,TLX中低5位与THX中的8位构成13位计数器。计满溢出时,13位计数器回零。01模式1,TLX与THX构成16位计数器。计满溢出时,16位计数器回零。10模式2,8位自动重装载的定时/计数器,每当计数器TLX溢出时,THX中的内容重新装载到TLX。11模式3,对定时器0,分成2个8位计数器,对于定时器1,停止计数。6.1定时/计数器0和16.1.2定时/计数器0和1的控制和状态寄存器2、控制寄存器TCON控制寄存器TCON字节地址为88H,位地址为88H~8FH,TCON用来控制T0和T1的启、停,并给出相应的状态,其格式如下:(1).TF1、TF0位:溢出标志位•当定时/计数器溢出时,由硬件自动置1。使用查询模式时,此位做状态位供查询,查询有效后需由软件清零;使用中断模式时,此位做中断申请标志位,进入中断服务子程序后被硬件自动清零。(MSB)(LSB)TF1TR1TF0TR0IE1IT1IE0IT0(1)TF1、6.1定时/计数器0和16.1.2定时/计数器0和1的控制和状态寄存器2、控制寄存器TCON(2).TR1、TR0位:计数运行控制位•当TR1位(或TR0位)=1时,启动定时/计数器工作的必要条件。•当TR1位(或TR0位)=0时,停止定时/计数器工作。6.1定时/计数器0和16.1.2定时/计数器0和1的控制和状态寄存器3、定时/计数器的初始化80C51系列单片机的定时/计数器是可编程的,因此,在进行定时或计数之前也要用程序进行初始化。初始化一般应包括以下四个步骤:•对TMOD寄存器赋值,以确定定时器的功能及工作模式选择;•置定时/计数器初值,直接将初值写入寄存器的TH0、TL0或TH1、TL1;•根据需要,对寄存器IE置初值,开放定时器中断(中断模式采用,查询模式该步省略);•对TCON寄存器中的TR0或TR1置位,启动定时/计数器。TR0或TR1置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。6.1定时/计数器0和16.1.2定时/计数器0和1的控制和状态寄存器3、定时/计数器的初始化设计数器的最大值为M(在不同的工作模式中,M可以为213=8192,216=65536或28=256)则置入的初值X可这样来计算。•计数模式时:X=M-计数值•定时模式时:(M-X)Tcy=定时值X=M-定时值/Tcy当机器周期为1s时,工作在模式0时,最大定值为213×1s=8.192ms。若工作在模式1,则最大定时值216×1s=65.536ms。6.2T0和T1的4种工作模式★T0和T1除了可以选择定时器或计数器功能外,每个定时/计数器还有4种工作模式,其中,前3种模式对两者都是一样的,而模式3对两者是不同的。6.2.1模式06.2.2模式16.2.3模式26.2.4模式36.2T0和T1的4种工作模式6.2.1模式0当M1M0为00时,则T0或T1便工作在模式0。图6-3表示了T1在模式0下的逻辑图,对T0也适用。模式0为13位计数器,由TL1的低5位和TH1的8位构成,TL1中的高3位弃之未用。C/T=1C/T=01INT引脚&0图9-20图9-2振荡器÷12GATEP3.5引脚CPTH1(高8位)TMODM0M1C/T≥1TF1TR1中断控制ABTCONKTL1(低5位)图6-3定时/计数器0、1工作模式0(13位计数器)逻辑电路图图6-3定时/计数器0、1工作模式0(13位计数器)6.2T0和T1的4种工作模式6.2.1模式0–当C/=0时,多路开关接通内部振荡器的12分频输出,此时13位计数器就是对机器周期进行计数,这就是所谓定时器工作模式;–当C/=1时,多路开关接通计数引脚P3.5,外部计数脉冲由P3.5输入。当计数脉冲发生负跳变时,计数器加1,这就是所谓计数工作模式。不管是哪种工作模式,当TL1的低5位计数溢出时,向TH1进位,而全部13位计数器溢出时,使计数器回零,并使溢出标志TF1置1,向CPU发中断请求。TT6.2T0和T1的4种工作模式6.2.1模式0–由图中也可以看出门控位GATE的作用。–当GATE=0时,经反相后使或门输出为1,此时仅由TR1控制与门的开启。当TR1=1时,与门输出为1,控制开关闭合,启动计数器工作;当TR1=0时,控制开关断开,停止计数器工作。–当GATE=1时,则由控制或门的输出,此时与门的开启由和TR1共同控制。当TR1=1时,外部中断直接控制定时/计数器的启动和停止,即由0变为1电平时,启动计数,当由1变为0电平时,停止计数。这样情况常用来测量在端出现的正脉冲的宽度。INT1INT1INT1INT1INT1INT16.2T0和T1的4种工作模式6.2.2模式1•模式1的逻辑电路和工作情况与模式0几乎完全相同,唯一的差别是:•在模式1中,定时器TH0和TL0组合成一个16位定时/计数器,即TL0中的高3位也参与计数。•图6-4表示了T0在模式1下的逻辑图,对T1也适用。0图9-20图9-2振荡器÷12GATECPTH0(高8位)TMODM0M1C/T≥1&TF0TR0中断控制ATCONKTL0(低8位)图6-4定时/计数器0、1工作模式0(16位计数器)逻辑电路图0INT引脚BP3.4引脚C/T=0C/T=1图6-4定时/计数器0、1工作模式0(16位计数器)6.2T0和T1的4种工作模式6.2.3模式2模式0和模式1的最大特点是计数溢出后,计数器归0。模式2是一个可以自动重新装载初值的8位计数器。其将16位的T1分解成2个8位的寄存器,其中TL1做8位加1计数器,TH1做8位初值寄存器,TH1的初值由软件设置。当装入初值和启动定时/计数器工作后,TL1按8位加1计数器工作,TL1计数溢出时,不仅使溢出标志TF1置1,而且还自动把TH1中的初值重装载到TL1中,重装载后TH1的内容不变。图6-5定时/计数器0、1工作模式2逻辑电路图0图9-21图9-2振荡器÷12GATECPTL1(8位)TMODM0M1C/T≥1&TF1TR1中断控制ATCONKTH1(8位)自动重置设定值图6-5定时/计数器0、1工作模式2逻辑电路图C/T=1C/T=0P3.5引脚B1INT引脚6.2T0和T1的4种工作模式6.2.3模式2–模式2对定时控制特别有用。–例如,当希望利用定时器每隔250μs产生一个定时控制脉冲,则可以采用12MHz的振荡器(其一个机器周期为1μs),则只要THX的初值设为6,并使C/=0,即可完成250μs定时。模式2还特