1 / 40

第 6 章 定时器及应用

第 6 章 定时器及应用. 定时 / 计数器是一种应用非常广泛的硬件逻辑电路,它有两种不同的工作方式 ---- “ 定时 ” 、 “ 计数 ” 。. 6.1 定时器概述. 1 、 定时 : 产生一个标准的时间间隔 ( 对等间隔脉冲计数)。 如 20mS,100mS 或 1000 mS 等。单片机使用这种方式可以产生一个符合某一要求的脉冲方波 ( 如下图 ) 。. 输出波形. MCS-51 P x.y. 20mS. 40mS. 2 、 计数 : 对外部的事件 ( 脉冲 ) 进行统计。

judson
Download Presentation

第 6 章 定时器及应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 定时器及应用

  2. 定时/计数器是一种应用非常广泛的硬件逻辑电路,它有两种不同的工作方式----“定时”、“计数”。定时/计数器是一种应用非常广泛的硬件逻辑电路,它有两种不同的工作方式----“定时”、“计数”。 6.1 定时器概述

  3. 1、定时:产生一个标准的时间间隔(对等间隔脉冲计数)。1、定时:产生一个标准的时间间隔(对等间隔脉冲计数)。 如20mS,100mS或1000mS等。单片机使用这种方式可以产生一个符合某一要求的脉冲方波(如下图)。 输出波形 MCS-51 P x.y 20mS 40mS

  4. 2、计数:对外部的事件(脉冲)进行统计。 很明显外部事件的发生是随机的,单片机不可能预知外部事件何时发生,但能对间隔可能不相等的脉冲进行统计计数。当达到所要求的计数值时,单片机进行相应的操作。 MCS-51 T0 ( T1) 端口 外部 设备 外部脉冲

  5. 定时/计数器的基本模型 溢出标志 计数脉冲 CP TF 8位的加1计数器

  6. 8051定时/计数器结构

  7. 8051定时/计数器的工作原理 (1):何时控制启动计数器? 思考: (2):如何控制是定时还是计数? (3):如何控制定时/计数的长短? 系统内部 时钟fosc/12 C/T=0 计数脉冲CP 定时/计数 控制C/T TF N位增量计数器 计数器溢出 (中断信号) C/T=1 N位初值寄存器 外部脉冲 T0或T1引脚 启动控制 TR MCS-51单片机定时器模型

  8. 由启动控制开关TR来控制计数器是否计数: 当TR=0时:计数器计数脉冲被断开,所以停止工作; 当TR=1时:计数器的计数脉冲输入端与信号源接通, 计数器开始计数(工作)。 定时、计数方式由C/T控制。 当C/T=1时:多路器选择的是系统时钟(fosc/12), 即定时方式; 当C/T=1时:多路器选择的是外部(T0或T1引脚)输入, 即计数方式。 定时/计数的长短由初值寄存器中的计数初值来设定。

  9. 作定时器用:每个机器周期计数器加1,计数速率是fosc/12.作定时器用:每个机器周期计数器加1,计数速率是fosc/12. 作计数器用:用2个机器周期识别一个脉冲下降沿,故最快计数速率是fosc/24.

  10. 模式0 :13位计数器模式 模式1 :16位计数器模式 模式2 :8位自动重装初值模式 模式3 :拆分/组合扩展8位模式 定时/计数器的四种工作模式

  11. 1、模式0:13位计数器模式 13位计数器在某一个初值的基础上加1计数,当计数器计满为全“1”,再来一个计数脉冲时,就产生一个“溢出中断信号”TF1=1。 启动控制 震荡器 1/12 13位加1计数器 C/T=0 TF1 TH1 TL1 中断 C/T=1 T1 引脚 (8位) (低5位) TR1 高三位弃用 GATE INT1

  12. GATE=0时,TR1=1开始定时/计数; GATE=1时(门控方式), TR=1且INT1=1时,开始工作.此种方式主要用于测量加在INT1脚上一个正脉冲的脉宽。 启动控制 16位加1计数器 震荡器 1/12 C/T=0 TL1 TH1 TF1 中断 C/T=1 T1 引脚 (8位) (8位) TR1 GATE INT1 2、模式1 :既16位计数器模式(以T1为例)

  13. 由TL1做计数器,TH1做初值寄存器, 工作前TL1,TH1分别预置相同的初值。 TL1计数时, 当产生溢出的同时, 将TH1中的初值自动重装TL1。TL1继续计数……,此模式主要用于做串行口波特率发生器。 震荡器 1/12 控制 8位加1计数器 C/T=0 TL1(8位) TF1 中断 C/T=1 T1 引脚 TR1 TH1(8位) GATE 8位初值寄存器 INT1 3、模式2: 8位自动重装初值模式

  14. 在这种模式中,单片机将T0和T1重新进行“拆分、组合”,将T0变为由TH0,TL0组成的两个独立的8位定时/计数器。在这种模式中,单片机将T0和T1重新进行“拆分、组合”,将T0变为由TH0,TL0组成的两个独立的8位定时/计数器。 将T1设定在模式3则相当于停止工作。 震荡器 1/12 控制 C/T=0 TL0 TF0 中断 C/T=1 T0 引脚 TR0 GATE 控制 INT0 TH0 TF1 中断 Fosc/12 TR1 4、模式3拆分/组合扩展模式 在模式3时的模式中定时器T0的结构图

  15. 模式3下T0(TH0,TL0)及T1的各自特点: 1、TH0计数脉冲来自内部fosc,所以它只能处于”定时”方式; 2、TH0分别借用了定时器T1的TR1和TF1为自己服务,使TH0能象TL0那样用TR1启动定时,并用TF1来作为TH0的溢出中断的标志; 3、 此时,由于T1缺少了启动控制信号TR1和溢出中断标志TR1,那么在模式3时,T1是如何启动和工作? 没有溢出中断标志TF1,则T1就不用中断方式工作(实际上连查询也不行);没有启动控制信号TR1,可以让它在模式3之前就开始工作,并且让它事先设定为自动重装模式. 4、 模式3就是将单片机原有的T0,T1两个计数器变成三个独立的计数器,其中T1要事先设定为模式2(串行口的波特率发生器)并启动起来。 注:8051系统只有T1能作串行口的波特率发生器。

  16. TL0八位定时/计数器 TF0 将T0分解为两个计数器 TL0和TH0,其中TH0借 用了T1的TR1和TF1 TH0八位定时器 TF1 T1已无TR1,TF1功能, 建议T1做波特率发生器 T1(TL1,TH1)自动重装模式 TH0,TL0和T1三个计数器 模式3时T0,T1的电路结构

  17. 定时/计数器4种模式比较

  18. 6.2.1 工作模式寄存器TMOD 6.2 定时器的控制

  19. 6.2.2控制寄存器TCON

  20. 6.3.1模式0应用 6.3 定时器四种模式应用 模式0定时时间计算公式:

  21. 例1:设定时器T0选择工作模式0,定时时间为1ms,fosc=6MHz,试确定T0初值,计算最大定时时间.例1:设定时器T0选择工作模式0,定时时间为1ms,fosc=6MHz,试确定T0初值,计算最大定时时间. 解:X=8192-500=7692=1111000001100B (TH0)=0F0H,(TL0)=0CH 最大定时T=16.384ms 例2:设T0工作在模式0,定时时间为1ms,fosc=6MHz.在P1.0引脚输出2ms方波,编写其定时功能程序 解:(1)分析: (2)选择工作方式:计算T0初值X (3)程序: a.采用中断方式 b.采用查询方式

  22. ORG 0000H AJMP MAIN ORG 000BH AJMP ITOP ORG 0100H MAIN: MOV SP,#60H ACALL PTOMD HERE: AJMP HERE PTOMD: MOV TMOD,#00H MOV TL0,#0CH MOV TH0,#F0H SETB TR0 SETB ET0 SETB EA RET ;中断服务程序 ORG 0120H ITOP: MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 RETI

  23. 查询方式: ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#00H MOV TL0,#0CH MOV TH0,#0F0H SETB TR0 LOOP: JBC TF0,NEXT SJMP LOOP NEXT: MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 SJMP LOOP

  24. 6.3.2 模式1应用 模式1定时时间计算公式:

  25. 例3:用定时器T1产生一个50hz的方波,由P1.1输出,程序使用查询方式,fosc=12MHz.例3:用定时器T1产生一个50hz的方波,由P1.1输出,程序使用查询方式,fosc=12MHz. 解:(1)求定时器初值:T=1/50=0.02s,T1定时10ms,初值X=D8F0h (2)程序: MOV TMOD,#10H SETB TR1 LOOP: MOV TH1,#0D8H MOV TL1,#0F0H JNB TF1,$ CLR TF1, CPL P1.1 SJMP LOOP

  26. 模式2定时时间公式: 6.3.3 模式2应用

  27. 例4:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500us的同步脉冲。例4:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500us的同步脉冲。 解: (1) 模式选择: 先设T0为模式2,外部计数方式(TMOD:06H) 当P3.4负跳变时,T0计数器加1溢出,改为T0为500us定时工作方式(TMOD:02H) (2) 初值计算: 外部计数方式: X+1=2^8,X=0ffh 定时方式:X=(2^8-250)=6h (3) 程序:

  28. START: MOV TMOD,#06H MOV TH0,#0FFH MOV TL0,#0FFH SETB TR0 LOOP1: JBC TF0,PTFO1 SJMP LOOP1 PTFO1: CLR TR0 MOV TMOD,#02H MOV TL0,#06H MOV TH0,#06H CLR P1.0 SETB TR0 LOOP2: JBC TF0,PTFO2 SJMP LOOP2 PTFO2: SETB P1.0 CLR TR0 SJMP START

  29. 解: (1)模式选择: 模式2,计数方式 (2)计算T1的初值:156(9CH) (3)程序 MAIN:MOV TMOD,#60H MOV TL1,#9CH MOV TH1,#9CH MOV IE,#88H SETB TR1 HERE:SJMP HERE ORG 001BH CPL P1.0 RETI 例5: 利用T1的模式2对外部信号计数,要求每计满100次,将P1.0端取反.

  30. 6.3.4 模式3应用例6:某用户系统中已使用了两个外部中断源,并置定时器T1工作在模式2,作为波特率发生器,现要求再增加一个外部中断源,并由P1.0输出一个5khz的方波,fosc=12Mhz。6.3.4 模式3应用例6:某用户系统中已使用了两个外部中断源,并置定时器T1工作在模式2,作为波特率发生器,现要求再增加一个外部中断源,并由P1.0输出一个5khz的方波,fosc=12Mhz。 根据输出信号频率= 5khz,则周期=200us. 由此得: 定时时间=100us.

  31. (3)程序: MOV TMOD,#27H MOV TL0,#0FFH MOV TH0,#156 MOV TH1,#data MOV TL1,#data MOV TCON,#55H MOV IE,#9FH …… TL0INT: MOV TL0,#0FFH RETI TH0INT: MOV TH0,#156 CPL P1.0 RETI 解: (1)模式选择: 将T0工作在模式3计数方式,把T0的引脚作为附加的外部中断端,TL0作计数用,TH0作定时用。 (2)初值计算: TL0=ffh TH0 =256-100*12/12=156

  32. 例7:设时钟频率为6Mhz,试编写利用T0产生的1s定时的程序例7:设时钟频率为6Mhz,试编写利用T0产生的1s定时的程序 例8:设计实时时钟程序 6.3.5 综合应用举例

  33. 7解:(1)定时器T0工作模式的确定 模式0最长可定时16.384ms 模式1最长可定时131.072ms 模式2最长可定时512us 题中要求定时1s,可选模式1,每间隔100ms中断1次,中断10次为1s (2)求计算值X (2^16-X)×12/6×10^6=100×10^-3s X=15 536 =3CB0H 因此(TL0)=0B0H;(TH0)=3CH (3)程序

  34. ORG 0000H LJMP MAIN ORG 000BH AJMP SERVE ORG 2000H 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

  35. 8解:(1) 实现时钟计时的基本方法 a、计算计数初值,时钟计时的最小单元是秒,可以方式1,定时时间为100ms,计数溢出10次得到时钟计时最小单位1秒 b、采用中断方式进行溢出次数的累计 c、从秒到分和从分到时的计时是通过累加和数值比较实现 (2)程序

  36. ORG 0000H AJMP MAIN ORG 001BH AJMP SERVE MAIN: MOV TMOD,#10H MOV 20H,#0AH CLR A MOV 30H,A ; 时单元清0 MOV 31H,A ;分单元清0 MOV 32H,A ;秒单元清0 SETB ET1 SETB EA MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 SJMP $

  37. SERVE: PUSH PSW PUSH ACC MOV TH1,#3CH MOV TL1,#0B0H DJNZ 20H,RETUNT MOV 20H,#0AH MOV A,#01H ADD A,32H DA A MOV 32H,A CJNE A,#60h,RETUNT MOV 32H,#0 MOV A,#01H ADD A,31H

  38. DA A MOV 31H,A CJNE A,#60h,RETUNT MOV 31H,#0 MOV A,#01H ADD A,30H DA A MOV 30H,A CJNE A,#24h,RETUNT MOV 30H,#00H RETUNT: POP ACC POP PSW RETI END

  39. 作业 P 111 2、8、18、

More Related