1、单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,5,章,定时,/,计数器,教学目的:了解,80C51,系列单片机内部定时器,/,计数器、串行口和中断系统的结构与工作原理;能够对他们编程、应用。,教学重点:,1.,定时,/,计数器的工作原理;,2.,定时,/,计数器的控制方法。,教学难点:,1.,定时,/,计数器,2,的工作方式;,2.,定时,/,计数器的应用。,5.1,定时,/,计数器,T0,、,T1,概述,5.1.1,定时,/,计数器,T0,、,T1,的结构,图,5-1 80C51,定时器,/,计数器,T0,、,T1,原理结构框图,80C51,单片
2、机内部有两个,16,位的可编程定时计数器,T0,、,T1,,,其组成如图,6,1,。可编程是指其功能如工作方式、定时时间、量程、启动方式等均可由指令来确定和改变。,有,6,个,8,位寄存器用于,T0,、,T1,的控制与管理,其访问地址依次为,8AH,8DH,,每个寄存器均可单独访问。,16,位的,T0,、,T1,寄存器是用于存放定时或计数初值与当前值的,两个特殊功能寄存器,TCON,和,TMOD,是用于管理与控制定时计数器 工作的。,5.1.2,定时,/,计数器的原理,16,位的定时计数器实质上是一个加,1,计数器,其控制电路受软件控制、切换。通过软件可以设置为,4,种工作方式(详见,5.3,
3、节),每种方式都可以用作定时或者计数。不同的工作方式,计数器长度分别为:,16,位、,13,位和,8,位。,当选择定时器工作方式时,对片内振荡器的,12,分频信号计数,实现定时;当选择计数器工作方式时,对引脚,Ti,端的事件计数。,当计数溢出时,标志位,TFi,置位,并可以请求中断。,5.2,定时,/,计数器的控制方法,5.2.1,定时计数器寄存器,1,)工作方式寄存器,TMOD,:,设置定时器,/,计数器的工作方式及控制模式,,TMOD,在,SFR,的字节地址为,89H,。,M1 M0,工作方式,功能描述,0 0,方式,0,13,位计数器,0 1,方式,1,16,位计数器,1 0,方式,2,
4、自动再装入,8,位计数器,1 1,方式,3,定时器,0:,分成两个,8,位计数器,定时器,1:,只能工作在方式,0,、,1,、,2,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IE0,控制寄存器,TCON,:,控制定时器的启、停和定时器的溢出标志。,TCON,在,SFR,的字节地址为,88H,,,可位寻址。,2,)定时,/,计数器控制寄存器,TCON,位,7 TF1,定时器,1,溢出标志。,位,6 TR1,定时器,1,运行控制位。,位,5 TF0,定时器,0,溢出标志。,位,4 TR0,定时器,0,运行控制位。,位,3 IE1,外部中断,1,请求标志。,位,2 IT1,外部中断,1
5、触发方式选择位。,位,1 IE0,外部中断,0,请求标志。,位,0 IT0,外部中断,0,触发方式选择位。,5.2.2,定时,/,计数器的初始化与启动,初始化步骤一般如下:,1,)确定工作方式,对,TMOD,赋值。,2,)预置定时或计数的初值,可直接将初值写入,TH0,、,TL0,或,TH1,、,TL1,。,3,)根据需要开放定时,/,计数器的中断,直接对,IE,寄存器的定时器中断位赋值。,在对,T0,和,T1,初始化后,即可准备启动定时,/,计数器工作。,5.2.3,定时,/,计数器初值的确定方法,现假设最大计数值为,M,,那么各方式下的,M,值如下:,方式,0,:,M,2,13,8192
6、方式,1,:,M,2,16,65536,方式,2,:,M,2,8,256,方式,3,:定时器,0,分成两个,8,位计数器,所以两个,M,均为,256,。,因为定时,/,计数器是做“加,1”,计数,并在计满溢出时产生中断,因此初值,X,可以这样计算:,X,M,计数值,举例说明,如果,80C51,时钟频率为,6MHz,,要求产生,1ms,的定时。,则初值,X,M,计数值,65536,500,65036,FE0CH,。,通过对,M1,、,M0,位的设置,,T0,可选择,4,种工作方式,T1,可选择,3,种工作方式。本节将介绍这,4,种工作方式的结构、特点及工作过程。,5,3,定时器,T0,、,T1
7、的工作方式,方式,0,和方式,1,:结构和工作,原理,基本相同,,只是,方式,0,为,13,位计数器方式,方式,1,为,16,位计数器方式。,图,5-2 T0,(或,T1,)方式,1,结构,方式,2,:计数常数可自动再装入的,8,位计数器方式。,图,5-3 T0,(或,Tl,)方式,2,结构,方式,3,:,T1,作波特率发生器,,T0,可以构成两个独立的计数器。,图,5-4 T0,方式,3,结构,(,a,),T1,方式,1(,或方式,0),(,b,),T1,方式,2,图,5-5 T0,方式,3,下的,T1,结构,定时器,/,计数器的复位状态:工作方式,0,、选择内部启动、计数器停止工作、溢出
8、中断标志清零。,定时器,/,计数器的初始化:对,TMOD,赋值确定工作方式;预置定时或计数的初值;根据需要开放定时器,/,计数器的中断;启动定时,/,计数器工作。,计数器初值最大计数值 要求的计数值,定时时间,=,(,最大计数值,计数器初值),机器周期,计数的“飞读”:解决计数器工作过程中,正确读取计数值的问题,避免由于低位计数器的溢出而导致读数的粗大误差。以定时器,T0,为例:,RP,:,MOV A,,,TH0,;,读,TH0,MOV R0,,,TL0,;,读,TL0,CJNEA,,,TH0,,,RP,;,比较两次读得的,TH0,,,不等则重读,MOV R1,,,A,RET,例,1,、在,P
9、1,.,1,端口输出周期为,2ms,的方波,晶振,f,OSC,6MHz,。,解:采用,T0,的,定时功能,对,P1,.,1,端口每隔,1ms,取反一次即可得到周期为,2ms,方波。,定时器的初始化:,TMOD,的设定:工作方式,1,(,M1M0=01),T0,为定时器(,C/T=0),,,内部,TR0,控制启动(,GATE=0,),所以,TMOD=01,计数器初值计算:,定时时间,=,(最大计数值 计数器初值),机器周期,即:,1000,s,=,(,65536,计数器初值,),12,6,1,s,得:,计数器初值,=65036=FE0CH,5,4,定时器,T0,、,T1,应用举例,采用查询方式的
10、源程序:,ORG 2000H,MOV TMOD,,,#01H,MOV TL0,,,0CH,;给,TL0,置初值,MOVTH0,,,0FEH,;给,TH0,置初值,SETB TR0,;,启动,T0,LP1,:,JBC,TF0,,,LP2,;,查询计数溢出否,AJMP LP1,LP2,:,MOV TL0,,,0CH,;重新设置计数初值,MOV TH0,,,0FEH,CPL P1,.,1,;,输出取反,AJMP LP1,;,重复循环,例,2,、利用,T0,门控位测试引脚上出现的正脉冲宽度。已知晶振频率为,12MHz,,,将所测得值高位存入片内,71H,单元,低位存入片内,70H,单元。,解:测量,I
11、NT0,端口正脉冲宽度,就是由,INT0,控制定时器的启停,这时计数器内部的控制位应设置,GATE=1,TR0=1,,,且,T0,工作于定时器方式,l,(,16,位计数器)。为保证测量结果的正确性,,应在,INT0,为低电平时,才置,TR0,为,1,,当,INT0,变为高电平时,就启动计数,当再次变低时,停止计数。此时计数值乘以机器周期即是被测正脉冲的宽度。测量过程如下:,ORG 200H,MOVTMOD,09H,;,设,T0,为方式,1,,,GATE,1,。,MOVTL0,,,00H,MOVTH0,00H,MOVR0,,,70H,JBP3.2,,;等,P3.2,变低,SETB TR0,;,启
12、动,T0,准备工作,JNB P3.2,,;,等待,P3.2,变高,JB P3.2,,;,等待,P3.2,再次变低,CLR TR0,;,停止计数,MOV,R0,,,TL0,;,存放计数的低字节,INC R0,MOV,R0,TH0,;,存放计数的高字节,SJMP,5,5,定时,/,计数器,T2,5.5.1 T2,的寄存器,1,),T2CON,控制寄存器,TF2,EXF2,RCLK,TCLK,EXEN2,TR2,C/T2,CP,RL2,位,7 TF2 T2,的溢出中断标志。,位,6 EXF2 T2,外部中断标志。,位,5 RCLK,串行口接收时钟选择位。,位,4 TCLK,串行口发送时钟选择位。,位
13、3 EXEN2 T2,的外部允许控制位。,位,2 TR2 T2,的计数控制位。,位,1 C,T2,定时器或计数器功能选择位。,位,0 CP,RL2,捕捉或常数重装方式选择位。,2,)方式控制寄存器,T2MOD,X,X,X,X,X,X,T2OE,DCEN,位,7,位,2,无作用,可为任意值。,位,1,T2OE,T2,的输出允许位,。,位,0,DCEN,T2,加,1/,减,1,计数允许位,。,5.5.2,定时器,T2,的工作方式,T2,共有,4,种工作方式,分别为:捕捉方式、常数自动重装入方式、波特率发生器方式和时钟输出方式。其中,16,位捕捉方式和,16,位常数自动重装入方式通过设置均可选择定
14、时,/,计数功能。,1.16,位自动重装入方式,16,位常数自动重装入是指在满足某规定条件时,,RCAP2L,和,TCAP2H,中存放的计数初值可自动重新装入,TL2,和,TH2,中。当,CP,=0,时,选择自动重装入方式。根据,DCEN,位所选择的计数状态,自动重装入操作又可分为以下,2,种情况:,1),加,1,计数方式,当,DCEN=0,时,,T2,为自动加,1,计数方式,它的结构原理如图,5,8,所示。,图,5,8,定时器,T2,的,16,位自动重装入方式(,DCEN=0,),2),加,1/,减,1,计数方式当,DCEN=1,时,,T2,为加,1/,减,1,计数方式,它的结构原理如图,5
15、9,所示。,图,5,9,定时器,T2,的,16,位自动重装入方式(,DCEN=1,),2,)自动捕捉方式,当,CP,1,时,,T2,除可用于定时计数外,还可工作于捕捉方式,它的,16,位捕捉方式的结构原理如图,5,10,所示。,图,5,10,定时器,T2,的捕捉方式结构图,图,5,10,定时器,T2,的捕捉方式结构图,3,)波特率发生器方式,T2,还可作串行口的波特率发生器。由控制寄存器,T2CON,中的控制位,RCLK,1,或,TCLK,1,确定它的串行口波特率发生工作方式。,在方式,1,和方式,3,时,波特率由定时器,2,的溢出速率确定,由下式计算:,波特率发生器的结构原理图如图,5-1
16、1,所示。,图,5,11,定时器,T2,的波特率发生器方式结构图,4,)可编程时钟输出方式,定时器,2,通过编程可以从,P1.0,引脚输出占空比为,1:1,的时钟信号。原理图如图,5-12,所示。输出的时钟频率取决于振荡器频率和定时器,2,捕获寄存器(,RCAP2H,、,RCAP2L,)的重装载数值,计算公式如下:,时钟输出频率,=,图,5,12,定时器,T2,的可编程时钟输出方式原理,5,5,3,应用例题,利用,T2,的捕捉功能测试外部输入引脚,T2EX,(,P1.1,)上的正脉冲宽度,捕捉到后,用,P1.7,脚报警提示,使与,P1.7,脚相接的二极管灯亮。脉冲宽度值分别存放在内存单元,60
17、H,、,61H,中。,本例题的硬件连接电路见图,5,13,。,图,5,13,硬件连接示意图,程序清单如下:,T2CON EQU 0C8H,RCAP2L EQU 0CAH,RCAP2H EQU 0CBH,TL2 EQU 0CCH,TH2 EQU 0CDH,TR2 BIT 0CAH,EXF2 BIT 0CEH,TF2 BIT 0CFH,ORG 0000H,LJMP MAIN,ORG 002BH,;定时器,2,中断入口地址,LJMP T2T,;转定时器,2,中断服务程序,ORG 0030H,MAIN:MOV IE,,,0A0H,;,CPU,和,T2,开中断,JB P1.1,$,;等待信号变低,MOV
18、 T2CON,#00001001B,;设,T2,为捕捉工作方式,JNB P1.1,$,;等待信号变高,MOV TH2,#0,;清,T2,定时器,MOV TL2,#0,SETB TR2,;启动,T2,开始工作,SJMP$,;等待,ORG 100H,T2T:CLR TR2,;停止,T2,工作,MOV 60H,RCAP2L,;取捕捉寄存器的低,8,位,MOV 61H,RCAP2H,;取捕捉寄存器的高,8,位,CLR P1.7,;报警灯亮,CLR EXF2,;清中断标志位,CLR EA,RETI,END,5,6,监视定时器,WDT,5,6,1 WDT,的功能及应用特点,WDT,的主要用途是当程序运行出
19、现“死机”即“死循环”时,能通过复位的方法使,CPU,退出“死循环”。,通过软件编程使单片机在正常运行时不断给它发“清零”信号,使,WDT,不会产生溢出。如果单片机出现“死机”即“死循环”,则,WDT,不能按时收到“清零”信号,当,WDT,计时到设定时间就会产生溢出信号使,RST,引脚出现正脉冲,此时单片机复位,程序恢复正常运行,,WDT,停止计数。,5,6,2,辅助寄存器,AUXR,AUXR,的各位格式如下:,D7 D6 D5 D4 D3 D2 D1 D0,WDIDLE DISETO,DISALE,各位功能如下:,位,7,位,5,和位,2,位,1,均为无用位。,位,4 WDIDLE WDT,在空闲方式下的选择位。,当,WDIDLE=0,,空闲方式期间,WDT,继续计数;,当,WDIDLE=1,,空闲方式期间,WDT,停止计数。,位,3 DISETO,位,复位输出控制位。,当,DISETO=0,,在,WDT,时间到后,复位引脚输出一个髙电平脉冲;,当,DISETO=1,,复位引脚始终为输入状态。,位,0 DISALE,位,ALE,引脚控制位。,当,DISALE=0,,,ALE,引脚输出一个不变的,6,分之一的时钟振荡频率;,当,DISALE=1,,,ALE,引脚仅在执行,MOVX,或,MOVC,指令时,才输出时钟振荡频率。,






