《第6章定时器及应用.ppt》由会员分享,可在线阅读,更多相关《第6章定时器及应用.ppt(22页珍藏版)》请在三一文库上搜索。
1、单片机原理及接口技术,13:22,6.1 定时器概述 6.2 定时器的控制 6.3 定时器的四种模式及应用 6.4 思考题与习题,第六章 定时器及应用,6.1 定时器概述 6.1.1 89C51定时器结构,有两个16位的定时器/计数器,即T0和T1。都是16位加1计数器。 T0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1和TL1构成。,单片机原理及接口技术,13:22,6.1.2 89C51定时器,T0、T1都可由软件设置为 定时方式或计数方式。由TMOD和TCON所控制。 采用加计数。加到0产生溢出,发出中断申请。 定时工作方式:定时器计数89C51片内振荡器输出经12分频后的脉
2、冲,即每个机器周期使定时器(T0或T1)的数值加1直至计满溢出。 计数工作方式:通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。当输入脉冲信号产生由1至0的下降沿时计数器的值加1。 定时器工作不占用CPU时间,除非定时器/计数器溢出,才能中断CPU的当前操作。 定时器/计数器有四种工作模式。其中模式0-2对T0和T1是一样的,模式3对两者不同。 当89C51采用12MHz晶振时,一个机器周期为1s,计数频率为1MHz。 CPU检测一个1至0的跳变需要两个机器周期,故最高计数频率为振荡频率的1/24。 定时器不用时,不能进入模式3,一般取模式0。 为了确保某个电平在变化之前被采样一
3、次,要求电平保持时间至少是一个完整的机器周期。见P.132图6-2。,单片机原理及接口技术,13:22,6.2 定时器的控制 (TMOD、 TCON) 6.2.1 工作模式寄存器 TMOD,单片机原理及接口技术,13:22, M1和M0操作模式控制位。,C/T=0,设置为定时方式。定时器计数89C51片内脉冲,即对机器周期计数。 C/T=1,设置为计数方式。计数器的输入来自引脚T0(P3.4)或T1(P3.5)端的外部脉冲 。, GATE门控位。 GATE=0,只要用软件使TR0(或TR1)置1就可以启动定时器。 GATE=1,只有INT0(或INT1)引脚为高电平且由软件使TR0(或TR1)
4、置1时,才能启动定时器工作。 TMOD不能位寻址。低半字节设置T0,高半字节设置T1。, C/T计数器/定时器方式选择位。,单片机原理及接口技术,13:22,6.2.2 控制器寄存器 TCON, TF1T1溢出标志位。 当T1溢出时,由硬件自动使中断触发器TF1置1,并向CPU申请中断。 当CPU响应中断进入中断服务程序后,TF1被硬件自动清0。TF1也可以用软件清0。 TF0T0溢出标志位。其功能和操作情况同TF1。 TR1T1运行控制位。 TR1=1, T1才可能工作; TR1=0,T1一定不工作。 TR0(TCON.4)T0运行控制位。其功能和操作情况同TR1。 IE1,IT1,IE0,
5、IT0外部中断INT1,INT0请求及请求方式控制位。 TCON除可字节寻址外,各位还可位寻址。,6.3 定时器的四种模式及应用 6.3.1 模式 1 及其应用,计数源:定时方式为机器周期;计数方式为T0引脚。 计数开关:由TR0、(GATE+INT0引脚)控制。 16位的定时器/计数器:TH0、TL0。 记到零时发出中断申请,TF0=1。 定时时间:t=(216T0初值)T。 计数工作方式:(216T0初值)(个外部脉冲), T0初值一般为0。,单片机原理及接口技术,13:22,例1:设晶振为12MHz,试计算定时器T0工作于模式1时的最大定时时间t。 解:当T0处于工作模式1时,加1计数器
6、为16位。 定时时间为: t=(216T0初值)机器周期 机器周期 = 振荡周期 X 12 = 1uS。 最大定时时间为“T0初值=0”时。 所以: 模式1最大定时时间:t = 216 X 1uS = 65.636 mS,单片机原理及接口技术,13:22,三、模式 1 的应用举例,13:22,解:1)确定T0初值:当T0处于工作模式1时,加1计数器为16位。 定时时间: t = (216T0初值)机器周期 10ms = (216T0初值)2uS T0初值 = 65536-5000 = 60536 = EC78H 即:(TH0)= ECH(高8位) (TL0)= 78H(低8位),单片机原理及接
7、口技术,13:22,2)确定TMOD的初值,例2:设定时器T0用于定时10ms,晶振为6MHz。试确定T0初值。并编写定时器T0初始化程序段。,模式0:M1M0=01, 定时器方式:C/T=0, 门控位不受INT0的影响:GATE=0, 其余位:为 0。 模式字为 TMOD=0000 0001 B=01H T1未用,填0。,3)编写T0的初始化程序段 主程序: ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#01H MOV TH0,#ECH MOV TL0,#78H SETB TR0 ,13:22,例3:利用定时器T1在P1.0引脚产生一个50Hz的方波,由 P1.
8、1输出。使用程序查询方式,fosc=6MHz。 (分别采用查询方式和中断方式)。,(2)选择工作模式:TMOD = 10H, 即:M1M0=01,C/T=0,GATE=0,其余位为0。 (3)计算10ms定时T1的初值 T = (216T1初值) 210-6 = 1010-3 T1初值 = 65536-5000 = 60536 = EC78H 即:(TH1)= ECH(高8位) (TL1)= 78H(低8位),单片机原理及接口技术,13:22,解:1)确定定时器T1初值 方波周期 T = 1/50 = 0.02s = 20ms 用T1定时10ms,时间到P1.1引脚电平取反。,13:22,(4
9、)采用查询方式的程序 程序清单: ORG 0000H LJMP MAIN ORG 0080H MAIN:MOV TMOD,#10H MOV TL0,#78H MOV TH0,#ECH SETB P1.1 SETB TR0 LP: JBC TF0,NEXT SJMP LP NEXT:MOV TL0,#78H MOV TH0,#ECH CPL P1.0 SJMP LP,单片机原理及接口技术,13:22,(5)采用定时器溢出中断方式的程序 ORG 0000H RESET: AJMP MAIN ORG 000BH AJMP CTC0 ORG 0030H MAIN:MOV TMOD,#10H MOV T
10、L0,#78H MOV TH0,#ECH SETB EA SETB ET0 SETB TR0 HERE:SJMP HERE CTC0: MOV TL0,#78H MOV TH0,#ECH CPL P1.1 RETI,如占空比不同,如何处理?,例4:设定时器T0选择工作模式1的计数器工作方式,其计数器初值为FFFFH,问此时定时器T0的实际用途是什么? 解:因其初值为FFFFH,只要T0引脚随机外来一脉冲即可溢出,向CPU申请中断,故这一内部中断源实质上已作为外部中断源使用。因此此时T0并不用于定时或计数。,单片机原理及接口技术,13:22,6.3.2 模式 0 及其应用,模式0逻辑电路结构与模
11、式1相似。 模式0为13位计时器。 TH0占高8位,其中TL0的高5位为整个13位的低5位。当TL0的高5位溢出时,向TH0进位;TH0溢出时,向中断标志TF0进位(硬件置位TF0),并申请中断。 定时时间为: t=(213T0初值)振荡周期12 用于计数工作方式时,计数长度为: L=(213T0初值)(个外部脉冲)。,单片机原理及接口技术,13:22,6.3.3 模式 2 及其应用,单片机原理及接口技术,13:22,一、模式 2 的逻辑电路结构 该模式把TLX配置成可自动重装8位定时计数器,逻辑电路结构如图所示。 TLX计数溢出时,TFX置1,而且还自动把THX中的内容重新装载到TLX中。
12、TLX用作8位计数器,THX用以保存初值。在程序初始化时,TLX和THX由软件赋予相同的初值。 用于定时方式时,定时时间为: t=(28TL0初值)T 用于计数方式时,计数长度为: (28TL0初值)个外部脉冲 该模式可省去软件中重装常数的语句,并可产生相当精确的定时时间,适合于作串行口波特率发生器。,三、模式 2 的应用举例,例5:当P3.4引脚(定时器T0的外部计数输入端)上的电平发生负跳变时, 从P1.0输出一个500s的同步脉冲。用查询方式编程实现该功能,fosc=6MHz。(见P.136),单片机原理及接口技术,13:22,解: 1. T0为计数方式:TMOD=0000 0110B=
13、06H,高四位取0, GATE=0, M1M0=10, C/T=1 当P3.4引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1; 2. 改变T0为500s定时工作方式(C/T=0):(TMOD)=02H 当T0引脚发生负跳变时,使P1.0输出为0。启动T0定时,500s定时时间到,使P1.0输出恢复高电平,T0又恢复外部事件计数方式。,3. 程序清单: ORG 0000H LJMP START ORG 0080H START: MOV TMOD,#06H ;设置T0为模式2,外部计数方式 MOV TL0,#0FFH ;T0计数器初值 MOV TH0,#0FFH SETB TR0 ;
14、启动T0计数 LOOP1: JBC TF0,PTFO1 ;TF0=1时转,且清TF0=0 SJMP LOOP1 ;等待T0溢出 PTFO1: CLR TR0 ;停止计数 MOV TMOD,#02H ;设置T0为模式2,定时方式 MOV TL0,#06H ;送初值,定时500s MOV TH0,#06H CLR P1.0 ; P1.0清0 SETB TR0 ;启动定时500s LOOP2 : JBC TF0,PTFO2 ;TF0=1时转并清TF0=0 SJMP LOOP2 ;等待T0溢出中断(定时时间到) PTFO2 : SETB P1.0 ; P1.0置1 CLR TR0 ;停止定时 SJMP
15、 START ;转向开始,重新等待T0引脚的脉冲,单片机原理及接口技术,13:22,例6-8完,例6:利用T1的模式2对外部信号计数。每计满100次,将 P1.0端取反。,解:(1)选择模式:T1计数方式模式2的TMOD=60H。 (2)计算T1的计数初值:X= 28 100=156=9CH ORG 0000H LJMP MAIN ORG 001BH ;中断服务程序入口 LJMP T1_INT MAIN: MOV TMOD,#60H ;设置T1为模式2,外部计数方式 MOV TL1,#9CH ;T1计数器初值 MOV TH1,#9CH MOV IE,#88H ; 定时器开中断 SETB TR1
16、 ;启动T1计数 HERE: SJMP HERE ;等待中断 T1_INT: CPL P1.0 RETI,单片机原理及接口技术,13:22,6.3.4 模式 3 及其应用,单片机原理及接口技术,13:22,TL0可工作在定时/计数方式。其功能和操作与模式0、模式1相同(8位)。 TH0占用T1的控制位TR1和中断标志TF1,其启动和关闭仅受TR1的控制。 定时器T1无工作模式3状态。在T0用作模式3时,T1仍可设置为模式02。 由于TR1和TF1被定时器TH0占用,T1定时的启停靠T1的C/T 控制。只能将输出送入串行口或用于不需要中断的场合。一般作波特率发生器。(见P.139图6-11),一
17、、模式 3 的逻辑电路结构 TL0和TH0被分成两个相互独立的8位计数器。 TL0:用原T0的资源,如C/T,GATE,TR0,TF0,T0(P3.4)引脚,INT0(P3.2)引脚。 TH0:只可用作简单的内部定时功能。,6.3.5 综合应用举例,例7:设时钟频率为6MHz。编写利用T0产生1s定时的程序。 解: (1)模式1定时时间最长, = 65536 X 2ms = 131.072ms。 定时1s,选用模式1,每隔100ms中断一 次,中断10次从而达到1s的定时。 (2) 100ms定时器初值 = (216X)12/(6 106) =10010-3 s X = 15536 = 3CB
18、0H TL0 = 0B0H,TH0 = 3CH,单片机原理及接口技术,13:22,ORG 0000H AJMP MAIN ORG 000BH AJMP SERVE ORG 0080H MAIN : MOV SP,#60H MOV B,#0AH MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 SETB ET0 SETB EA SJMP $ SERVE: MOV TL0,#0B0H MOV TH0,#3CH DJNZ B,LOOP CLR TR0 LOOP: RETI END,单片机原理及接口技术,6.4 思考题与习题,1、定时器模式2有什么特点
19、?适用于什么应用场合? 2、单片机用内部定时方法产生频率为100KHz等宽距形波,假定单片机的晶振频率为12MHz。请编程实现。 3、89C51定时器有哪几种工作模式?有何区别? 4、89C51单片机内部设有几个定时器/计数器?它们是由哪些特殊功能寄存器组成? 5、定时器用作定时器时,其定时时间与哪些因素有关?作计数器时,对外界计数频率有何限制?,13:22,6、简述定时器四种工作模式的特点,如何选择和设定? 7、当定时器T0用作模式3时,由于TR1位已被T0占用,如何控制定时器T1的开启和关闭? 8、以定时器/计数器进行外部事件计数。每计数1000个脉冲后,定时器T1转为定时工作方式。定时1
20、0ms后,又转为计数方式,如此循环不止。假定单片机晶振频率为6MHz,请使用模式1编程实现。 9、一个定时器的定时时间有限,如何实现两个定时器的串行定时,以满足较长定时时间的要求? 10、使用一个定时器,如何通过软、硬件结合的方法,实现较长时间的定时?,单片机原理及接口技术,13:22,6.4 思考题与习题,11、89C51定时器作定时和计数时,其计数脉冲分别由谁提供? 12、89C51定时器的门控制信号GATE设置为1时,定时器如何启动? 13、已知89C51单片机的fosc=6MHz, 请利用T0和P1.0输出矩形波。矩形波高电平宽50s,低电平宽300s. 14、已知89C51单片机的f
21、osc=12MHz, 用T1定时。试编程由P1.0和P1.1引脚分别输出周期为 2ms和500s的方波。 15、单片机8031的时钟频率为6MHz,若要求定时值分别为0.1ms,1ms,10ms,定时器0工作在模式0、模式1和模式2时,其定时器初值各应是多少?,单片机原理及接口技术,13:22,6.4 思考题与习题,16、89C51单片机的定时器在何种设置下可提供三个8位计数器定时器?这时,定时器1可作为串行口波特率发生器。若波特率按9600b/s,4800b/s,2400b/s,1200b/s,600b/s,100b/s来考虑,则此时可选用的波特率是多少(允许存在一定误差)?设fosc=12MHz。 17、试编制一段程序,功能为:当P1.2引脚的电平上跳时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平下跳时,停止计数,并将计数值写入R6,R7。 18、 设fosc=6MHz。试编制一段程序,功能为:对定时器T0初始化,使之工作在模式2,产生200s定时,并用查询T0溢出标志的方法,控制 P1.0输出周期为2ms的方波。完,单片机原理及接口技术,13:22,6.4 思考题与习题,
链接地址:https://www.31doc.com/p-2980171.html