《第5章 定时器-计数器1.ppt》由会员分享,可在线阅读,更多相关《第5章 定时器-计数器1.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、通信工程系三教通信工程系三教 第第5 5章章 定时器定时器/计数器计数器通信工程系三教通信工程系三教 第5章 定时器/计数器 实现定时或计数,通常采用以下三种方法:实现定时或计数,通常采用以下三种方法:1 1硬件法硬件法 硬件定时功能完全由硬件电路完成,不占用硬件定时功能完全由硬件电路完成,不占用CPUCPU时间。但当要求改变定时时间时,只能通过改变时间。但当要求改变定时时间时,只能通过改变电路中的元件参数来实现,很不灵活。电路中的元件参数来实现,很不灵活。2 2软件法软件法 软件定时是执行一段循环程序来进行时间延时,软件定时是执行一段循环程序来进行时间延时,优点是无额外的硬件开销,时间比较精
2、确。但牺优点是无额外的硬件开销,时间比较精确。但牺牲了牲了CPUCPU的时间。的时间。3 3可编程定时器计数器可编程定时器计数器通信工程系三教通信工程系三教 MCS-51MCS-51系列单片机内部提供系列单片机内部提供2 2个可编程的定时器个可编程的定时器/计数器计数器T0T0和和T1T1,它们可以用于,它们可以用于定时或者对外部脉定时或者对外部脉冲计数,还可以作为串行口的波特率发生器冲计数,还可以作为串行口的波特率发生器。定。定时器达到预定定时时间或者计数器计满数时,给时器达到预定定时时间或者计数器计满数时,给出溢出标志,还可以发出出溢出标志,还可以发出内部中断内部中断。第5章 定时器/计数
3、器 通信工程系三教通信工程系三教 T0和和T1的电路结构和工作原理基本相同的电路结构和工作原理基本相同Ti的工作原理简要概括:的工作原理简要概括:核心部分是一个由时钟信号触发的按递增核心部分是一个由时钟信号触发的按递增规律工作的循环计数器;从预先设定的某规律工作的循环计数器;从预先设定的某一一“初始值初始值”开始计起,在累积到超过最开始计起,在累积到超过最大值时产生溢出,并同时会建立一个相应大值时产生溢出,并同时会建立一个相应的溢出标志(即中断标志位)的溢出标志(即中断标志位)TFi。5.1 定时器/计数器T0和T1的特性 通信工程系三教通信工程系三教 定时器计数器的定时器计数器的核心:核心:
4、一个一个加加1计数器计数器,其基,其基本功能是加本功能是加1计数。计数。计数功能:计数功能:若是对单片机的若是对单片机的T0、T1 引脚输入信引脚输入信号进行计数号进行计数,即是计数功能。当外部输入信号由即是计数功能。当外部输入信号由1至至0跳变跳变时,计数器加时,计数器加1。定时功能:定时功能:若是对单片机内部的机器周期进行计若是对单片机内部的机器周期进行计数,从而得到定时,这就是定时功能。数,从而得到定时,这就是定时功能。每个机器每个机器周期周期(等于(等于12个晶体振荡周期个晶体振荡周期)计数器加)计数器加1。定时功能和计数功能的设定和控制都是通过软件定时功能和计数功能的设定和控制都是通
5、过软件来设定的。来设定的。5.1 定时器/计数器T0和T1的特性 通信工程系三教通信工程系三教 具有以下特性:具有以下特性:1.具有具有2种功能模式可供选择种功能模式可供选择2.具有具有4种工作方式可供选择种工作方式可供选择3.核心是一个核心是一个16位宽的循环累加计数寄存位宽的循环累加计数寄存器器4.计数寄存器在计数寄存器在SFR内统一编址内统一编址5.用软件方式可以随时直接读出或改写计用软件方式可以随时直接读出或改写计数寄存器的内容数寄存器的内容6.用软件方式可以随时控制累加计数的开用软件方式可以随时控制累加计数的开启和停止启和停止5.1 定时器/计数器T0和T1的特性 通信工程系三教通信
6、工程系三教 具有以下特性:具有以下特性:7.也可以用外接引脚信号控制累加计数过也可以用外接引脚信号控制累加计数过程的开启或停止程的开启或停止8.计数寄存器计满溢出时,产生中断标志计数寄存器计满溢出时,产生中断标志位位9.T1可用作异步串行接口可用作异步串行接口UART的波特率的波特率发生器发生器10.通过巧妙编程,还可用来实现输入捕捉、通过巧妙编程,还可用来实现输入捕捉、输出比较、脉宽调制等扩展功能。输出比较、脉宽调制等扩展功能。5.1 定时器/计数器T0和T1的特性 通信工程系三教通信工程系三教 与与T0和和T1模块有关的模块有关的SFR共有共有8个个定时器控制寄存器定时器控制寄存器TCON
7、定时器方式寄存器定时器方式寄存器TMOD中断允许寄存器中断允许寄存器IE中断优先权管理寄存器中断优先权管理寄存器IP累加计数器存器累加计数器存器TH0+TL0、TH1+TL15.2 T0和T1相关的寄存器 通信工程系三教通信工程系三教 方式寄存器TMOD GATE=1,T0、T1的启动由的启动由INTi引脚和引脚和TRi位共同控制。位共同控制。只有只有INTi为高电平为高电平时,时,TRi置置“1”才能启动定时器才能启动定时器/计数计数器。器。GATE=0,T0、T1由软件设置由软件设置TRi来控制启动。来控制启动。TRi=1,启动;启动;TRi=0,停止。停止。通信工程系三教通信工程系三教
8、定时器/计数器的工作方式 TMOD用于控制用于控制T0和和T1工作方式,工作方式,低低4位用位用于控制于控制T0,高高4位用于控制位用于控制T1。M1M0:工作方式控制位,对应工作方式控制位,对应4种工作方式。种工作方式。C/T:定时器定时器/计数器功能方式选择位。计数器功能方式选择位。通信工程系三教通信工程系三教 控制寄存器TCON 通信工程系三教通信工程系三教 控制寄存器TCON TCON用于控制定时器用于控制定时器/计数器的启、停、溢计数器的启、停、溢出标志和外部中断信号触发方式。出标志和外部中断信号触发方式。TFi:T0、T1 溢出位。当计数溢出时,由硬溢出位。当计数溢出时,由硬件自动
9、使件自动使TFi置置1,并向,并向CPU申请中断。进入申请中断。进入中断服务程序后,中断服务程序后,TFi又被硬件自动清又被硬件自动清0。TFi也可作为程序查询的标志位,在查询方式下也可作为程序查询的标志位,在查询方式下由软件清由软件清0。TRi:T0、T1运行控制位。运行控制位。TRi=1启动计数启动计数,TRi=0,停止工作。停止工作。通信工程系三教通信工程系三教 5.3 5.3 定时器定时器/计数器电路结构计数器电路结构 通信工程系三教通信工程系三教 T0、T1的内部结构框图通信工程系三教通信工程系三教 5.4 5.4 定时器定时器/计数器的工作方式及应用计数器的工作方式及应用 每一种工
10、作方式对应最大计数值每一种工作方式对应最大计数值:方式方式0 13位计数器位计数器 213=8192 方式方式1 16位计数器位计数器 216=65536 方式方式2 8位计数器位计数器 28=256 方式方式38位计数器位计数器 28=256 T0优于优于T1的方面:多一种工作方式的方面:多一种工作方式T1优于优于T0的方面:可以作为串口的波特率的方面:可以作为串口的波特率发生器发生器通信工程系三教通信工程系三教 定时初值:对机器周期进行计数。T:定时时间,X:初值,N:计数器位数,f osc:系统时钟频率,则:(2NX)12/fosc=T X=2Nfosc/12T计数初值:对外部脉冲进行计
11、数,计数值根据要求确定。N:计数器位数,X:初值,则:X=2N计数值通信工程系三教通信工程系三教 定时器/计数器工作方式0 方式0为13位计数器。定时时间T:T=(213X)12fosc=(213X)机器周期计数初值:X=213计数值。通信工程系三教通信工程系三教 工作方式0 举例例5-1:应用定时器T0产生1ms定时,并使P1.0输出周期为2ms的方波,已知晶体6MHz。计数初值X:(213X)12(1/6)106 =1103X=7692,13位二进制表示为 X=1111000001100TH0=0F0H(高8位),TL0=0CH(低5位),查询TF0状态。通信工程系三教通信工程系三教 OR
12、G 2000HMOV TMOD,#00H;写入方式控制字MOV TL0,#0CH ;计数初值写入MOV TH0,#0F0HSETB TR0 ;启动T0LOOP:JBC TF0,PE ;TF0=1溢出转移PE,同时清除TF0 AJMP LOOP ;没有溢出PE:MOV TL0,#0CH ;重装计数初值 MOV TH0,#0F0H CPL P1.0 ;求反 AJMP LOOP ;无条件转移LOOP END通信工程系三教通信工程系三教 定时器/计数器工作方式1方式1是16位定时器/计数器,与方式0的区别是计数器的长度。比方式0常用。定时时间T:T=(216X)12fosc X=216Tfosc12计
13、数初值X:X=216计数值 通信工程系三教通信工程系三教 工作方式1 举例例5-2:用定时器T1产生一个25Hz方波,由P1.0输出,采用查询方式进行控制,设晶体频率12MHz。思路:方波周期为1/25=40ms,T1定时20ms,P1.0取反输出。计数初值X:T=(216X)12(1/12)106 =20103 X=45536=B1E0H 通信工程系三教通信工程系三教 ORG 2000HMOV TMOD,#10H ;T1定时功能工作方式1MOV TH1,#0B1H ;写入计数初值MOV TL1,#0E0H SETB TR1 ;启动T1LOOP:JBC TF1,LP ;TF1=1,溢出转移,同
14、时TF1清0AJMP LOOPLP:MOV TH1,#0B1H ;重装计数初值 MOV TL1,#0E0H CPL P1.0 ;P1.0取反 SJMP LOOP END通信工程系三教通信工程系三教 定时器/计数器工作方式2方式2是能自动重装计数初值的8位计数器。低8位作计数器用,高8位保存计数初值。定时方式计数初值:X=28Tfosc12。计数方式计数初值:X=28计数值。通信工程系三教通信工程系三教 工作方式2 举例(1)例5-3:用定时器T1,采用工作方式2,计数方式,要求每计满156次,将P1.7取反。思路:T1工作于计数方式,外部计数脉冲由T1(P3.5)引脚引入,每来一个由1至0的跳
15、变计数器加1,由程序查询TF1的状态。计数初值:X=28156=100=64HTH1=TL1=64H,TMOD=60H(计数方式,方式2)通信工程系三教通信工程系三教 程序设计:ORG 2000HMOV TMOD,#60H ;T1方式2,计数方式MOV TH1,#64H ;T1计数初值MOV TL1,#64H SETB TR1 ;启动T1LOOP:JBC TF1,REP ;TF1=1转移SJMP LOOP ;等待REP:CPL P1.7 ;取反输出SJMP LOOP通信工程系三教通信工程系三教 工作方式2 举例(2)例5-4:由P3.4引脚(T0)输入一低频脉冲信号(其频率0.5kHz),要求
16、P3.4每发生一次负跳变时,P1.0输出一个200s的同步负脉冲,同时P1.1输出一个400s的同步正脉冲。已知fosc=6MHz。初态P1.0为高,P1.1为低。思路:T0工作于方式2,初值为FFH(一次计数就产生中断),查询TF0,为1后改为200s定时计数,设置P1.0和P1.1状态。第一次200s定时完成,设置P1.0和P1.1状态,继续第二次200s定时。第二次200s定时完成,设置P1.0和P1.1状态,恢复初值FFH,循环。即:反复改变计数初值。通信工程系三教通信工程系三教 200s定时计数初值X:X=256200612=156通信工程系三教通信工程系三教 工作方式2 举例(3)
17、例例5-4程序:程序:START:MOV TMOD,#06H;T0方式方式2,计数方式计数方式 MOV TH0,#0FFH ;计数初值计数初值 MOV TL0,#0FFH CLR P1.1 ;P1.1 初态为初态为0 SETB TR0 ;启动启动T0LOOP:JBC TF0,LP1 ;检测外部信号负跳变检测外部信号负跳变 SJMP LOOP ;等待等待LP1:CLR TR0 ;关定时器关定时器 MOV TMOD,#02H ;T0改变为改变为 ;定时定时200s方式方式2 MOV TH0,#156 ;定时的计数初值定时的计数初值 MOV TL0,#156通信工程系三教通信工程系三教 工作方式2
18、举例(4)SETB P1.1 ;P1.1 输出为输出为1 CLR P1.0 ;P1.0输出输出0 SETB TR0 ;启动启动T0定时定时LOOP1:JBC TF0,LP2 ;第一个第一个200s到否?到否?SJMP LOOP1 ;未到等待未到等待LP2:SETB P1.0 ;到了到了P1.0恢复恢复LOOP2:JBC TF0,LP3 ;第二个第二个200s到否?到否?SJMP LOOP2LP3:CLR P1.1 ;P1.0恢复恢复0 CLR TR0 ;关定时器关定时器 AJMP START 通信工程系三教通信工程系三教 定时器/计数器工作方式3方式方式3下,下,T0和和T1的结构、功能不同。
19、的结构、功能不同。T0方式方式3:TL0和和TH0分分成成两两个个互互相相独独立立的的8位位计计数数器器。其其中中TL0用用原原T0的的各各控控制制位位、引引脚脚和和中中断断源源,即即GATE0、TR0、TF0和和T0引引脚脚、INT0引引脚。脚。TH0只只有有内内部部定定时时,占占用用定定时时器器T1的的TR1和和TF1。通信工程系三教通信工程系三教 T1无方式无方式3:将将T1设置为方式设置为方式3,会使,会使T1立即停止计数。立即停止计数。在在T0方式方式3时,时,T1仍可设置为方式仍可设置为方式02。由于由于TR1和和TF1被被T0的的TH0占用,计数器占用,计数器开关开关K已被接通,
20、此时仅用已被接通,此时仅用T1的的C/T控制控制T1运行。计数器溢出时,只能将输出送入运行。计数器溢出时,只能将输出送入串行口或用于不需要中断的场合。串行口或用于不需要中断的场合。在一般情况下,当在一般情况下,当T1用作串行口波特率发用作串行口波特率发生器时,生器时,T0才设置为工作方式才设置为工作方式3。此时,。此时,常把定时器常把定时器T1设置为方式设置为方式2,用作波特率,用作波特率发生器发生器通信工程系三教通信工程系三教 T0 方式3 通信工程系三教通信工程系三教 T0方式3下:T1结构 通信工程系三教通信工程系三教 工作方式3 举例(1)例例5-5:应用应用T0方式方式3,分别设定,
21、分别设定200s和和400s定时并使定时并使P1.0和和P1.1分别产生周期为分别产生周期为400s和和800s方波,已知晶体方波,已知晶体6MHz,采用中断方式。采用中断方式。思路:思路:200s计数初值:计数初值:(28-X)12(1/6)106=200106,X=156=9CH 400s计数初值:计数初值:(28-X)12(1/6)106=400106,X=56=38H ORG 2000HSTART:AJMP MAIN ORG 000BH AJMP PIT0 ;转;转T0中断处理入口中断处理入口 ORG 001BH AJMP PIT1 ;转;转T1中断处理入口中断处理入口通信工程系三教通
22、信工程系三教 工作方式3 举例(2)ORG 2100HMAIN:MOV SP,#30H MOV TMOD,#03H;置方式置方式3 MOV TL0,#9CH ;定时定时200s计数初值计数初值 MOV TH0,#38H ;定时定时400s计数初值计数初值 MOV TCON,#50H ;启动启动TL0、TH0计数计数 MOV IE,#8AH ;中断允许中断允许T0、T1开放中断开放中断LOOP:AJMP LOOP ;等待中断等待中断PITO:MOV TL0,#9CH ;T0中断处理程序中断处理程序 CPL P1.0 RETIPIT1:MOV TH0,#38H ;T1中断处理程序中断处理程序 CP
23、L P1.1 RETI通信工程系三教通信工程系三教 利用GATE测试外部输入脉冲宽度 GATE0时时,定时器的启动只受,定时器的启动只受TRi位控制。位控制。GATE1时时,定时器的启动将受,定时器的启动将受TRi位和外部中断信位和外部中断信号号INTi的共同控制。只有当的共同控制。只有当INTi=1,同时同时TRi=1时才时才能启动计数;能启动计数;INTi=0时停止计数。时停止计数。换一个角度看,当换一个角度看,当GATE1时,定时器实际记录的时时,定时器实际记录的时间就是相应间就是相应INTi引脚上高电平的持续时间。通过反相引脚上高电平的持续时间。通过反相器,则可测得相应器,则可测得相应
24、INTi引引脚上低电平的持续时间。二脚上低电平的持续时间。二个时间的和即为个时间的和即为INTi引脚上输入波形的周期,其倒数引脚上输入波形的周期,其倒数即为即为INTi引脚上输入波形的频率。还可算出占空比等引脚上输入波形的频率。还可算出占空比等参数。参数。测试原理:测试原理:以以T0为例为例 GATE1 TR01通信工程系三教通信工程系三教 测试脉冲宽度 举例例5-6:利用T0门控位GATE来测试由INT0(P3.2)引脚输入的正脉冲宽度,已知fosc=12MHZ,所测得的高8位值存入片内RAM的21H单元,低8位值存入片内20H单元中。思路:T0方式1(16位计数),GATE=1,TR0=1
25、,初值为0000H。程序如下:MOV TMOD,#09H;T0定时,方式1,Gate=1MOV TH0,#00H ;T0的计数初值设为0000H MOV TL0,#00H通信工程系三教通信工程系三教 MOV R0,#20H ;RAM的地址指针LOOP1:JB P3.2,LOOP1;等待INT0变低 SETB TR0;INT0变低,启动T0准备计数LOOP2:JNB P3.2,LOOP2;等INT0变高,启动计数LOOP3:JB P3.2,LOOP3;等待INT0再次变低 CLR TR0 ;INT0变低即停止计数 MOV R0,TL0 ;存入计数值 INC R0 MOV R0,TH0 通信工程系
26、三教通信工程系三教 利用定时器实现较长时间定时 例例5-7:设在设在P1.7端接有一个发光二极管,要求利端接有一个发光二极管,要求利用定时器控制,使用定时器控制,使LED亮一秒灭一秒,周而复始。亮一秒灭一秒,周而复始。已知晶体频率已知晶体频率6MHz。思路:思路:T0为为100 ms定时,方式。当定时时间到定时,方式。当定时时间到后,后,1.0输出反相,加到输入端作计数脉输出反相,加到输入端作计数脉冲,定时两次构成一个完整的计数脉冲。冲,定时两次构成一个完整的计数脉冲。T1计数计数次数为次,完成次数为次,完成s定时,方式定时,方式2。通信工程系三教通信工程系三教 长时间定时初始化TMOD方式字
27、:方式字:61HT0计数初值:计数初值:方式方式1,定时,定时100ms。(216-X)12(1/6)10-6=10010-3,X=15536=3CB0h TH0=3CH,TL0=0B0HT1计数初值:计数初值:方式方式2,计数,计数5次,计数初值为次,计数初值为(256-5)=251=FBH 同时装入同时装入TH1和和TL1,即,即T TH1=0FBH,TL1=0FBH通信工程系三教通信工程系三教 长时间定时程序设计 ORG 2000HMAIN:CLR P1.7;灯灭 SETB P1.0 MOV TMOD,#61H;方式字 MOV TH1,0FBH;T1计数初值MOV TL1,0FBHSET
28、B TR1;启动T1LOOP1:CPL P1.7;灯状态变化通信工程系三教通信工程系三教 LOOP2:MOV TH0,#3CH;T0计数初值 MOV TL0,#0B0H SETB TR0;启动T0LOOP3:JBC TF0,LOOP4;T0定时到,转 SJMP LOOP3LOOP4:CPL P1.0;P1.0脉冲变化 JBC TF1,LOOP1;T1定时到,转SJMP LOOP2;T1定时未到,转END通信工程系三教通信工程系三教 运行中读定时器/计数器单片机可以随时读写单片机可以随时读写TLi和和THi,比如用于实比如用于实时显示计数值等。时显示计数值等。但在读取时应注意由于分时读取但在读取
29、时应注意由于分时读取TLi和和THi而而带来的特殊性。假如先读带来的特殊性。假如先读TLi,再取读再取读THi,由于这时定时器由于这时定时器/计数器还在运行,如果在读计数器还在运行,如果在读THi之前刚好发生之前刚好发生TLi溢出向溢出向THi进位,这样读进位,这样读得的得的TLi值就不正确,同样,先读值就不正确,同样,先读THi后读后读TLi时也可能产生这种错误。时也可能产生这种错误。解决办法:解决办法:先读先读THi,后读后读TLi,再重读再重读THi,若二次读取若二次读取THi值一样,则读入的数据是正确值一样,则读入的数据是正确的;若二次读取的;若二次读取THi值不一致,则必须重读。值不一致,则必须重读。通信工程系三教通信工程系三教 “飞读”程序RDTIME:MOV A,TH0;读TH0MOV R0,TL0;读TL0并存入R0CJNE A,TH0,RDTIME ;再读TH0,与上 ;次读入的TH0比较,;若不等,重读MOV R1,A ;存TH0在R1中RET