收藏 分享(赏)

第6章定时器及应用史.ppt

上传人:kpmy5893 文档编号:8464740 上传时间:2019-06-29 格式:PPT 页数:63 大小:1.04MB
下载 相关 举报
第6章定时器及应用史.ppt_第1页
第1页 / 共63页
第6章定时器及应用史.ppt_第2页
第2页 / 共63页
第6章定时器及应用史.ppt_第3页
第3页 / 共63页
第6章定时器及应用史.ppt_第4页
第4页 / 共63页
第6章定时器及应用史.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

1、6.1 定时器概述 6.2 定时器的控制 6.3 定时器的四种模式及应用 6.4 思考题与习题,第六章 定时器及应用,6.1.1 8051定时器结构,8051定时器的结构如 图6-1 所示。 有两个16位的定时器/计数器,即定时器0(T0)和定时器1(T1)。它们实际上都是16位加1计数器。 T0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1和TL1构成。,6.1 定时器概述,图6-1 89C51定时器结构,6.1.2 8051定时器功能,每个定时器都可由软件设置为 定时工作方式或 计数工作方式及其他灵活多样的可控功能方式。这些功能由特殊功能寄存器TMOD和TCON所控制。 定时器工

2、作不占用CPU时间,除非定时器/计数器溢出,才能中断CPU的当前操作。 每个定时器/计数器还有四种工作模式。其中模式0-2对T0和T1是一样的,模式3对两者不同。,定时工作方式,定时器计数8051片内振荡器输出经12分频后的脉冲,即每个机器周期使定时器(T0或T1)的数值加1直至计满溢出。,当8051采用12MHz晶振时,一个机器周期为1s,计数频率为1MHz。,计数工作方式,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。当输入脉冲信号产生由1至0的下降沿时定时器的值加1。 CPU检测一个1至0的跳变需要两个机器周期,故最高计数频率为振荡频率的1/24。 为了确保某个电平在变化

3、之前被采样一次,要求电平保持时间至少是一个完整的机器周期。 对输入脉冲信号的基本要求如 图6-2所示。,图6-2 对输入脉冲宽度的要求,6.2 定时器的控制,6.2.1 工作模式寄存器 TMOD 6.2.2 控制器寄存器 TCON,6.2.1 工作模式寄存器 TMOD,TMOD用于控制T0和T1的工作模式。 TMOD不能位寻址,只能用字节设置定时器的工作模式,低半字节设置T0,高半字节设置T1。 8051系统复位时,TMOD的所有位被清0。 TMOD各位的定义格式如 图6-3 所示。 TMOD各位的功能: TMOD各位定义及具体的意义归纳如 图6-4所示。,6.2 定时器的控制(TMOD/TC

4、ON),定时器T1,定时器T0,TMOD (89H),D7 D6 D5 D4 D3 D2 D1 D0,图6-3 工作模式寄存器TMOD的位定义,图6-4 TMOD各位定义及具体的意义,表6-1 M1,M0控制的四种工作模式, C/T计数器/定时器方式选择位。C/T=0,设置为定时方式。定时器计数8051片内脉冲,即对机器周期计数。 C/T=1,设置为计数方式。计数器的输入来自T0(P3.4)或T1(P3.5)端的外部冲 。,TMOD (89H),D7 D6 D5 D4 D3 D2 D1 D0, GATE门控位。GATE=0,只要用软件使TR0(或TR1)置1就可以启动定时器,而不管INT0(或

5、INT1)的电平是高还是低。GATE=1,只有INT0(或INT1)引脚为高电平且由软件使TR0(或TR1)置1时,才能启动定时器工作。,TMOD (89H),D7 D6 D5 D4 D3 D2 D1 D0,6.2.2 控制器寄存器 TCON,TCON除可字节寻址外,各位还可位寻址。 8051系统复位时,TCON的所有位被清0。 TCON各位的定义格式如 图6-5所示。TCON各位定义及具体的意义归纳如 图6-6所示。,TF1,TR1,TF0,TR0,IE1,IE0,IT1,IT0,TCON (88H),8FH 8EH 8DH 8CH 8BH 8AH 89H 88H,图6-5 控制寄存器TCO

6、N的位定义,图6-6 TCON各位定义及具体的意义, TF1(TCON.7) T1溢出标志位。当T1溢出时,由硬件自动使中断触发器TF1置1,并CPU申请中断。当CPU响应中断进入中断服务程序后,TF1由被硬件自动清0。TF1也可以用软件清0。 TF0 (TCON.5)T0溢出标志位。其功能和操作情况同TF1。,TF1,TR1,TF0,TR0,IE1,IE0,IT1,IT0,TCON (88H),8FH 8EH 8DH 8CH 8BH 8AH 89H 88H, TR1(TCON.6)T1运行控制位。可通过软件置1(TR1=1)或清0(TR1=0)来启动或 关闭 T1。在程序中用指令“SETB

7、TR1”使TR1位置1,定时器T1便开始计数。 TR0(TCON.4)T0运行控制位。其功能和操作情况同TR1。,TF1,TR1,TF0,TR0,IE1,IE0,IT1,IT0,TCON (88H),8FH 8EH 8DH 8CH 8BH 8AH 89H 88H, IE1,IT1,IE0,IT0(TCON.3TCON.0)外部中断INT1,INT0请求及请求方式控制位。前一章已经讲过。,6.3 定时器的四种模式及应用,6.3.1 模式 1 及其应用,一、模式 1 的逻辑电路结构 二、模式 1 工作特点 三、模式 1 的应用举例,6.3 定时器的四种模式及应用,模式0为TL0(5位)、TH0(8

8、位)方式,模式1为TL0(8位)、TH0(8位)方式,其余完全相同。模式0很少用,常以模式1代替。,一、模式 1 的逻辑电路结构,T0在模式 1 的逻辑电路结构如 图6-7所示。(T1相同),图6-7 T0(或T1)模式1结构16位计数器,二、模式 1 工作特点,该模式对应的是一个16位的定时器/计数器。 用于定时工作方式时,定时时间为:t=(216T0初值)振荡周期12 用于计数工作方式时,计数长度最大为:216=65536(个外部脉冲),三、模式 1 的应用举例(例6-1),例6-1:用定时器T1产生一个50Hz的方波,由 P1.1输出。,使用程序查询方式,fosc=6MHz。,解:方波周

9、期T=1/50=0.02s =20ms用T1定时10ms计数初值X为:X=21612101000/12=6553610000=55536=D8F0H,源程序清单:MOV TMOD,#10H ;设置T1为模式1SETB TR1 ;启动定时 LOOP: MOV TL1,#0D8H ;送初值MOV TH1,#0F0HJNB TF1,$ ;查询定时时间到否CLR TF1 ;产生溢出,清标志位CPL P1.1 ;取反SJMP LOOP ;重复循环,一、模式 2 的逻辑电路结构,T0在模式 2 的逻辑电路结构如 图6-8所示。(T1相同) TL0计数溢出时,不仅使溢出中断标志位TF0置1,而且还自动把TH

10、0中的内容重新装载到TL0中。 TL0用作8位计数器,TH0用以保存初值。,图6-8 T0(或T1)模式2结构8位计数器,6.3.3 模式 2 及其应用,二、模式 2 工作特点,该模式把TL0(TL1)配置成一个可以自动重装载的8位定时器/计数器。,在程序初始化时,TL0和TH0由软件赋予相同的初值。,用于定时工作方式时,定时时间为: t=(28TH0初值)振荡周期12,用于计数工作方式时,计数长度最大为:28=256(个外部脉冲),该模式可省去软件中重装常数的语句,并可产生相当精确的定时时间,适合于作串行口波特率发生器。,三、模式 2 的应用举例(例6-2),例6-2:当P3.4引脚上的电平

11、发生负跳变时, 从P1.0输出一个500s的同步脉冲。请编程序实现该功能。查询方式,fosc=6MHz。,解:(1)模式选择选T0为模式2,外部事件计数方式。当P3.4引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为500s定时工作方式,并使P1.0输出由1变为0。T0定时到产生溢出,使P1.0输出恢复高电平,T0又恢复外部事件计数方式。如 图6-9 所示。,图6-9 功能描述,三、模式 2 的应用举例(例6-2),(2)计算初值T0工作在外部事件计数方式,当计数到28时,再加1计数器就会溢出。设计数初值为X,当再出现一次外部事件时,计数器溢出。则: X+1=28X

12、= 28 1=11111111B=0FFHT0工作在定时工作方式,设晶振频率为6MHz,500s相当于250个机器周期。因此,初值X为(28X)2s=500sX=6=06H,(3)程序清单 START: MOV TMOD,#06H ;设置T0为模式2,外部计数方式MOV TL0,#0FFH ;T0计数器初值MOV TH0,#0FFHSETB TR0 ;启动T0计数LOOP1:JBC TF0,PTFO1 ;查询T0溢出标志, ;TF0=1时转,且清TF0=0SJMP LOOP1 ;,PTFO1:CLR TR0 ;停止计数MOV TMOD,#02H ;设置T0为模式2,定时方式MOV TL0,#0

13、6H ;送初值,定时500sMOV TH0,#06HCLR P1.0 ; P1.0清0SETB TR0 ;启动定时500sLOOP2 : JBC TF0,PTFO2 ;查询T0溢出标志,;TF0=1时转,且清TF0=0; (第一个500s到否?)SJMP LOOP2 ;等待中断,虚拟主程序PTFO2 : SETB P1.0 ; P1.0置1CLR TR0 ;停止计数SJMP START,三、模式 2 的应用举例(例6-3),例6-3:利用定时器T1的模式2对外部信号计数。要求没计满100次,将 P1.0端取反。,解: (1)选择模式外部信号由T1(P3.5)引脚输入,每发生一次负跳变计数器加1

14、,每输入100个脉冲,计数器发生溢出中断,中断服务程序将P1.0取反一次。T1计数工作方式模式2的模式字为 (TMOD)=60H。T0不用时,TMOD的低4位可任取,但不能进入模式3,一般取0。,2)计算T1的计数初值X= 28 100=156=9CH因此:TL1的初值为9CH,重装初值寄存器TH1=9CH。,(3)程序清单MAIN: MOV TMOD,#60H ;设置T1为模式2,外部计数方式MOV TL1,#9CH ;T1计数器初值MOV TH1,#9CHMOV IE,#88H ; 定时器开中断SETB TR1 ;启动T1计数HERE:SJMP HERE ;等待中断ORG 001BH ;中

15、断服务程序入口CPL P1.0RETI,6.3.4 模式 3 及其应用,一、模式 3 的逻辑电路结构,工作模式3对T0和T1大不相同。 1、T0模式3的逻辑电路结构 2、T0模式3下T1的逻辑电路结构,一、模式 3 的逻辑电路结构,工作模式3对T0和T1大不相同。 1、T0模式3的逻辑电路结构 2、T0模式3下T1的逻辑电路结构,1、T0模式3的逻辑电路结构,T0模式3的逻辑电路结构如 图6-10所示。 T0设置为模式3,TL0和TH0被分成两个相互独立的8位计数器。 TL0用原T0的各控制位、引脚和中断源,即C/T,GATE,TR0,TF0,T0(P3.4)引脚,INT0(P3.2)引脚。

16、TL0可工作在定时器方式和计数器方式。其功能和操作与模式0、模式1相同(只是8位)。,图6-10 T0模式3结构,1、T0模式3的逻辑电路结构,它占用了定时器T1的控制位TR1和T1的中断标志TF1,其启动和关闭仅受TR1的控制。 TH0只可用作简单的内部定时功能。,2、T0模式3下T1的逻辑电路结构,定时器T1无工作模式3状态。在T0用作模式3时,T1仍可设置为模式02。 T0模式3下T1的逻辑电路结构如 图6-12 所示。 由于TR1和TF1被定时器T0占用,计数器开关K已被接通,此时,仅用T1控制位,C/T切换其定时或计数器工作方式就可使T1运行。当计数器溢出时,只能将输出送入串行口或用

17、于不需要中断的场合。一般作波特率发生器,图6-11 T0模式3时T1结构,二、模式 3 的应用举例(例6-7),例6-7:设某用户系统已使用了两个外部中断源,并置定时器T1工作在模式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚输出一个5kHz的方波。Fosc=12MHz.,解:(1)工作模式可设置T0工作在模式3计数器方式,把T0的引脚作附加的外部中断输入端,TL0的计数初值为FFH,当检测到T0引脚电平出现由1至0的负跳变时,TL0产生溢出,申请中断。T0模式3下,TL0作计数用,而TH0用作8位的定时器,定时控制P1.0引脚输出5kHz的方波信号。,(2)计算初

18、值 TL0的计数初值为FFH。 TH0的计数初值X为:P1.0方波周期T=1/(5kHz)=0.2ms=200s用TH0作定时100s时,X=256-100 12/12=156,(3)程序清单MOV TMOD,#27H ;T0为模式3,计数方式; T1为模式2,定时方式MOV TL0,#0FFH ;TL0计数初值MOV TH0,#156 ;TH0计数初值MOV TL1,#data ;data是根据波特率;要求设置的常数(初值)MOV TH1,#data MOV TCON,#55H ;外中断0,外中断1边沿触发, ;启动T0,T1MOV IE,#9FH ; 开放全部中断,TL0溢出中断服务程序(

19、由000BH转来) TL0INT:MOV TL0,#0FFH ;TL0重赋初值(中断处理)RETITH0溢出 TH0溢出中断服务程序(由001BH转来) TH0INT:MOV TH0,#156 ;TH0重赋初值CPL P1.0 ;P1.0取反输出RETI 串行口及外部中断0,外部中断1的服务程序略。,6.3.5 综合应用举例(例6-8),例6-8:设时钟频率为6MHz。编写利用T0产生1s定时的程序。,解: (1)定时器T0工作模式的确定 模式0最长可定时16.384ms;模式1最长可定时131.072ms;模式2最长可定时512s; 定时1s,可选用模式1,每隔100ms中断一 次,中断10

20、次为1s。,(2)求计数器初值X (216X)12/(6 106) =10010-3 s X=15536=3CB0H因此:(TL0)=0B0H(TH0)=3CH,(3)实现方法对于中断10次计数,可使T0工作在计数方式,也可用循环程序的方法实现。本例采用循环程序法。,(4)源程序清单ORG 0000HAJMP MAIN ; 上电,转向主程序ORG 000BH ;T0的中断服务程序入口地址AJMP SERVE ;转向中断服务程序ORG 2000H ;主程序,MAIN : MOV SP,#60H ;设堆栈指针MOV B,#0AH ;设循环次数MOV TMOD,#01H ;设置T0工作于模式1MOV

21、 TL0,#0B0H ;装计数值低8位MOV TH0,#3CH ;装计数值高8位SETB TR0 ;启动定时SETB ET0 ;T0开中断SETB EA ;CPU开中断SJMP $ ;等待中断,SERVE: MOV TL0,#0B0H ;重新赋初值MOV TH0,#3CHDJNZ B,LOOP ;B-1不为0,继续定时CLR TR0 ;1s定时到,停止T0工作 LOOP: RETI ;中断返回END,6.3.5 综合应用举例(例6-9),例6-9:设计实时时钟程序。时钟 就是以秒、分、时为单位进行计时。用定时器与中断的联合应用。,解:(1)实现时钟计时的基本方法 计算计数初值。时钟计时的最小单

22、位是秒,但使用单片机定时器/计数器进行定时,即使按方式1工作,其最大定时时间也只能达131ms。因此,可把定时器的定时时间定为100ms,计数溢出10次即得到时钟计时的最小单位秒;而10次计数可用软件方法实现。,假定使用定时器T0,以工作模式1进行100ms的定时。如fosc=6MHz,则计数初值X为: (216X)12/(6 106 )=10010-3 s X=15536=3CB0H 因此 : (TL0)=0B0H (TH0)=3CH, 采用定时方式进行溢出次数的累计,计满10次即得到秒计时。, 从秒到分和从分到时的计时是通过累计和数值比较实现的。, 时钟显示即及显示缓冲区部分在这里略,可自

23、行设计。,(2)程序流程及程序清单 主程序(MAIN)的主要功能是进行定时器T1的初始化编程并启动T1,然后通过反复调用显示子程序,等待100ms定时中断的到来。其流程如 图6-13所示。,(2)程序流程及程序清单 中断服务程序(PITO)的主要功能是进行计时操作。程序开始先判断计数溢出时候满了10次,不满表明还没达到最小计时单位秒,中断返回;如满10次则表示已达到最小计时单位秒,程序继续向下运行,进行计时操作。要求满1秒则“秒位”32H单元内容加1,满60s则“分位”31H单元内容加1,满60min则“时位”30H单元内容加1,满24h则30H,31H,332H单元内容全部清0。中断服务程序

24、流程如 图6-14所示。,设T1为模式1,设中断次数,清计时单元,开中断,启动T1,调用显示子程序,等待定时中断,图6-13 时钟主程序流程,保护现场,赋计数初值,到1s?,(32H)加1,(32H)=60?,(32H)清0,(31H)加1,(31H)=60?,(31H)清0,(30H)加1,(30H)=24?,(30H)清0,恢复现场,返回,入口,a,a,N,N,N,N,Y,Y,Y,Y,图6-14 中断服务程序流程图, 源程序如下:ORG 0000HAJMP MAIN ; 上电,转向主程序ORG 001BH ;T1的中断服务程序入口地址AJMP SERVE ;转向中断服务程序,ORG 200

25、0H ;主程序 MAIN: MOV SP,#60H ;设堆栈指针MOV TMOD,#10H ;设置T1工作于模式1 MOV 20H,#0AH ;设循环次数CLR AMOV 30H,A ;时单元清0MOV 31H,A ;分单元清0MOV 32H,A ;秒单元清0,SETB ET1 ;T1开中断SETB EA ;CPU开中断MOV TL1,#0B0H ;装计数值低8位MOV TH1,#3CH ;装计数值高8位SETB TR1 ;启动定时SJMP $ ;等待中断(可反复调用显示子程序),SERVE: PUSH PSW ;保护现场PUSH ACCMOV TL1,#0B0H ;重新赋初值MOV TH1,

26、#3CHDJNZ 20H,RETUNT ;1s未到,返回MOV 20H,#0AH ;重置中断次数,MOV A,#01HADD A,32H ;“秒位”加1DA A ;转换为BCD码MOV 32H,ACJNE A,#60H,RETUNT ;未满60s,返回MOV 32H,#00H ;计满60s,“秒位”清0,MOV A,#01HADD A,31H ;“分位”加1DA A ;转换为BCD码MOV 31H,ACJNE A,#60H,RETUNT ;未满60min,返回MOV 31H,#00H ;计满60min,“分位”清0,MOV A,#01HADD A,30H ;“时位”加1DA A ;转换为BCD

27、码MOV 30H,ACJNE A,#24H,RETUNT ;未满24h,返回MOV 30H,#00H ;计满24h,“时位”清0 RETUNT: POP ACC ;恢复现场POP PSWRETI ;中断返回END,6.4 思考题与习题,1、定时器模式2有什么特点?适用于什么应用场合? 2、单片机用内部定时方法产生频率为100KHz等宽距形波,假定单片机的晶振频率为12MHz。请编程实现。 3、8051定时器有哪几种工作模式?有何区别?,6.4 思考题与习题,4、8051单片机内部设有几个定时器/计数器?它们是由哪些特殊功能寄存器组成? 5、定时器用作定时器时,其定时时间与哪些因素有关?作计数器

28、时,对外界计数频率有何限制? 6、简述定时器四种工作模式的特点,如何选择和设定?,6.4 思考题与习题,7、当定时器T0用作模式3时,由于TR1位已被T0占用,如何控制定时器T1的开启和关闭? 8、以定时器/计数器进行外部事件计数。每计数1000个脉冲后,定时器T1转为定时工作方式。定时10ms后,又转为计数方式,如此循环不止。假定单片机晶振频率为6MHz,请使用模式1编程实现。,6.4 思考题与习题,9、一个定时器的定时时间有限,如何实现两个定时器的串行定时,以满足较长定时时间的要求? 10、使用一个定时器,如何通过软、硬件结合的方法,实现较长时间的定时? 11、8051定时器作定时和计数时

29、,其计数脉冲分别由谁提供?,6.4 思考题与习题,12、8051定时器的门控制信号GATE设置为1时,定时器如何启动? 13、已知8051单片机的fosc=6MHz, 请利用T0和P1.0输出矩形波。矩形波高电平宽50s,低电平宽300s.,6.4 思考题与习题,14、已知8051单片机的fosc=12MHz, 用T1定时。试编程由P1.0和P1.1引脚分别输出周期为 2ms和500s的方波。 15、单片机8031的时钟频率为6MHz,若要求定时值分别为0.1ms,1ms,10ms,定时器0工作在模式0、模式1和模式2时,其定时器初值各应是多少?,6.4 思考题与习题,16、8051单片机的定

30、时器在何种设置下可提供三个8位计数器定时器?这时,定时器1可作为串行口波特率发生器。若波特率按9600b/s,4800b/s,2400b/s,1200b/s,600b/s,100b/s来考虑,则此时可选用的波特率是多少(允许存在一定误差)?设fosc=12MHz。,6.4 思考题与习题,17、试编制一段程序,功能为:当P1.2引脚的电平上跳时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平下跳时,停止计数,并将计数值写入R6,R7。 18、 设fosc=6MHz。试编制一段程序,功能为:对定时器T0初始化,使之工作在模式2,产生200s定时,并用查询T0溢出标志的方法,控制 P1.0输出周期为2ms的方波。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报