第六章-定时器及应用_第1页
第六章-定时器及应用_第2页
第六章-定时器及应用_第3页
第六章-定时器及应用_第4页
第六章-定时器及应用_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 MCS-51的 定时器/计数器 主要内容,1、定时器概述 2、定时器的控制 3、定时器的四种工作模式及应用,6.1 定时器概述 MCS-51单片机内有两个16位定时器/计数器,常称为定时器0和定时器1,简称为T0和T1;均可作定时器和计数器,为加1计数器;用于定时控制、延时、外部计数和检测等。其结构如下图所示。,图6-1 MCS-51定时器/计数器结构框图,作为定时器:通过计数实现定时。计数脉冲来自单片机内部,一个机器周期计数器加1,直至计满溢出。 如晶振为12MHz的单片机,一个机器周期为1S,其计数频率为振荡频率的1/12 。 作为计数器:对外来脉冲计数。计数频率最高为振荡频率的1

2、/24,每两个机器周期计数器加1 。 在S5P2对计数输入引脚T0、T1进行采样,下降沿计数(S3P1期间)。 说明: 定时器/计数器在工 作期间不占用CPU的时间。,6.2 定时器/计数器的控制 单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置工作方式;TCON用于控制启动和中断申请。 6. 2. 1 工作方式控制寄存器TMOD 工作方式控制寄存器TMOD用于选择定时器/计数器T0、T1的工作模式和工作方式,不能进行位寻址。格式如下: TMOD的低4位用于T0,高4位用于T1。,(1)GATE门控位 GATE0 用软件使TCON中的TR0或TR1为1,启动定时/计数器工作运

3、行。 GATE1 用软件使TR0或TR1为1,同时外部中断引脚高电平来启动定时器/计数器运行。 (2) 计数器模式和定时器模式选择位 0:定时器模式; 1:计数器模式。,(3)M1M0:工作方式选择位。定时/计数器有四种工作方式,由M1M0进行设置。,6. 2. 2定时器/计数器控制寄存器TCON TCON的地址及格式如下,可按位寻址。 低4位与外部中断有关。高4位的功能如下: (1) TF1、TF0计数溢出标志位 (2) TR1、TR0计数运行控制位 1:启动定时器/计数器工作 0:停止定时器/计数器工作 该位由软件置1或清0。,6.3 定时器的四种工作方式 定时器的四种工作方式为:方式0、

4、方式1、方式2、方式3,由工作方式寄存器TMOD 确定。 主要讨论各种工作方式的工作原理、特点和应用。 6. 3. 1方式0及其应用 一、方式0时的结构和工作原理 方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。,M1、M0为00 ,定时器/计数器的框图:,一、特点 1、可定时(C/T=0)、可计数(C/T=1) ; 2、13位方式(TL0、1的低5位和TH0、1的8位); 3、INT0、INT1是定时器/计数器0、1的外部门, GATE=1允许使用外部门(TR0、1应置1)

5、, 此时用外部门控制运行 GATE=0禁止外部门,此时用TR0、1控制运行; 4、计数值N和定时时间t的计算 : N= 213- 初值X t=(213-初值X)*振荡周期*12 =(213-初值X)*机器周期Tcy 最大计数值为: 213 = 8192,二、应用举例 例6-1 设定时器T0选择工作方式0,定时时间为1ms, osc=6MHz。试确定T0初值,计算最大定时时间T。 解: (1)求T0的初值X 由公式:t=(213-T0初值)*机器周期Tcy t=1ms=1000s 机器周期Tcy=12/osc=12/6000000s=2s 得 1000=( 213 -X)*2 所以初值 X=81

6、92-500=7692=1111000001100B T0的低5位:01100B=0CH T0的高8位:11110000B=F0H (2)最大定时时间T 当T0的初值=0时为最大定时时间 T=(213 -0)*2=8192*2s =16384 s =16.384ms,例6-2 设T0以方式0定时,定时时间为1ms, osc=6MHz,编程实现其定时功能。 解: (1)计算初值(同上,略) F0HTH0,0CHTL0 (2)程序清单 ORG 0000H RESET:AJMP MAIN ORG 000BH AJMP IT0P ;主程序 ORG 0100H MAIN: MOV SP,#5FH,MOV

7、 TMOD,#0 MOV TL0,#0CH MOV TH0,#0F0H SETB TR0 SETB ET0 SETB EA SJMP $,;中断服务程序 ORG 0120H IT0P:MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 RETI,例6-3 利用T0的工作方式0产生1ms的定时,编程实现在P1.0引脚上输出周期为2ms的方波。设单片机的晶振频率osc=12MHz。 解: 方法:定时1ms,对P1.0取反,然后继续定时 (1)设置方式字 TMOD= * 0000B=00000000B=00H (2)计算初值 由公式:t=(213-T0初值)*机器周期 t=1ms

8、=1000s, 机器周期Tcy=12/osc=12/12000000s=1s 得 1000=( 213 -X)*1=(8192-X)*1 所以初值 X=7192=1110000011000B T0的低5位:11000B=18H T0的高8位:11100000B=E0H,(3)程序清单 方法一:中断方式 ORG 0000H RESET:LJMP MAIN ORG 000BH LJMP CTC0 ;主程序 ORG 0030H MAIN: MOV SP,#5FH MOV TMOD,#0 MOV TL0,#18H MOV TH0,#0E0H SETB EA SETB ET0 SETB TR0 SJMP

9、 $,;中断服务程序 ORG 0100H CTC0:MOV TL0,#18H MOV TH0,#0E0H CPL P1.0 RETI,方法二:查询方式 ORG 0000H START:MOV SP,#5FH MOV TMOD,#0 MOV TL0,#18H MOV TH0,#0E0H SETB TR0 LOOP: JBC TF0,NEXT SJMP LOOP NEXT: MOV TL0,#18H MOV TH0,#0E0H CPL P1.0 SJMP LOOP,可替换为: LOOP:JNB TF0,$ CLR TF0 MOV TL0,#18H :,6. 3. 2 方式1及其应用 一、方式1时的

10、结构和工作原理 方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器 。 M1、M0=01,特点 1、可定时(C/T=0)、可计数(C/T=1) ; 2、16位方式(TL0、1为低8位,TH0、1为高8位); 3、INT0、INT1是定时器/计数器0、1的外部门, GATE=1允许使用外部门(TR0、1应置1), 此时用外部门控制运行 GATE=0禁止外部门,此时用TR0、1控制运行; 4、计数值N和定时时间t的计算 : N= 216-初值X t=(216-初值X) *机器周期Tcy 最大计数值为: 216 =65536,例6-4 用定时器T1产生一个50Hz

11、的方波,由P1.1输出。使用程序查询方式,设osc=12MHz。 解: (1)计算初值 方波周期T为:T=1/50s=0.02s=20ms 定时时间为:t=T/2=10ms=10000s 由公式: t=(216-X)*机器周期Tcy 因Tcy=1s,得10000= (216-X)*1, 10000=65536-X X=55536=D8F0H,(2)方式字TMOD TMOD=0001*B=10H (3)源程序 ORG 0000H MOV TMOD,#10H SETB TR1 LP: MOV TH1,#0D8H MOV TL1,#0F0H JNB TF1,$ CLR TF1 CPL P1.1 SJ

12、MP LP,6. 3. 3 方式2及其应用 一、方式2的结构和工作原理 方式2为自动重装初值的8位定时器/计数器。 M1、M0=01,一、特点 1、可定时(C/T=0)、可计数(C/T=1) ; 2、8位自动装入方式(TL0和TH0装入相同数); 3、INT0、INT1是定时器/计数器0、1的外部门, GATE=1允许使用外部门(TR0、1应置1), 此时用外部门控制运行 GATE=0禁止外部门,此时用TR0、1控制运行; 4、计数值N和定时时间t的计算 : N= 28- 初值X t=(28- 初值X) *机器周期Tcy 最大计数值为: 28 =256 工作方式2特别适合于用作较精确的脉冲信号

13、发生器。,例6-5 当P3.4(T0)引脚上输入的电平发生负跳变时,从P1.0输出一个500s的同步脉冲,请编程实现该功能。 设osc=6MHz。 解题思路: 先令T0以方式2计数,其初值设为FFH,当P3.4引脚上输入的电平发生负跳变时,计数器加1使溢出标志置1;然后令T0以方式2定时,使P1.0输出一个500s的同步负脉冲。,解:1、 T0以方式2计数 (1)计数初值 X=0FFH (2)方式字 TMOD=*0110B=06H 2、 T0以方式2定时 (1)定时初值X计算 t=500 s , Tcy=2 s 由公式: t=(28-X)*机器周期Tcy 得 500=(256-X)*2 X=6

14、 (2)方式字 TMOD=*0010B=02H,3、程序清单: ORG 0000H START:MOV TMOD,#6 ; T0以方式2计数 MOV TH0,#0FFH MOV TL0,#0FFH SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 MOV TMOD,#2 ; T0以方式2定时,MOV TH0,#6 MOV TL0,#6 CLR P1.0 SETB TR0 JNB TF0,$ SETB P1.0 CLR TF0 CLR TR0 SJMP START,例6-6 利用定时器T1的方式2对外部信号计数,要求每计满100次对P1.0端取反。 解:(1)计算计数初值X

15、100=28-X X=256-100=156=9CH (2)方式字 TMOD=0110*B=60H (3)程序清单 ;用中断方式 ORG 0000H MAIN:MOV TMOD,#60H MOV TL1,#156 MOV TH1,#156 MOV IE,#88H SETB TR1 SJMP $,;中断服务程序 ORG 001BH CPL P1.0 RETI,6. 3. 4 方式3及其应用 一、方式3时的结构和工作原理 方式3只适用于定时/计数器T0,定时器/计数器T1处于方式3时相当于TR1=0,停止计数。工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。,二、特点 1工作方式3下的

16、T0 T0分为两个独立的8位计数器:TL0和TH0 。TL0使用T0的状态控制位 、GATE、TR0、INT0,而TH0被固定为一个8位定时器(不能作外部计数模式),并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。,TL0作8位定时器/计数器,TH0作8位定时器,2T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时,T0才工作在方式3。 T0处于方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。 (1)T1工作在方式0,(2) T1工作在方式1 (3) T1工作在方式2,8,例6-7 设某单片机系

17、统中已经使用了两个外部中断源,并置定时器T1为方式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚输出一个5kHz的方波。 osc=12MHz。 解:1、确定定时器的工作方式 将T0设置为方式3计数,T0的引脚接外部中断源,TL0的计数初值设为FFH,下降沿产生中断;T0的TH0为8位定时器,可产生方波,用中断方式;T1设为方式2定时,作串行口的波特率发生器。 2、计算各个初值 (1)TL0的初值 为0FFH (2)TH0的初值 产生5kHz的方波的周期为:T=1/5000s=0.2ms=200 s,因此TH0的定时时间为:t=T/2=100 s , Tcy=1 s 得

18、 100=(256-X)*Tcy X=256-100=156 TH1=TL1,由波特率值确定 3、TMOD值: 00100111B=27H TCON值: 01010101B=55H 4、程序清单: (1)中断入口部分: ORG 0000H START:LJMP MAIN ORG 0003H LJMP E0INT ORG 000BH LJMP TL0INT,ORG 0013H LJMP E1INT ORG 001BH LJMP TH0INT,(2)主程序部分: MAIN:MOV SP,#5FH MOV TMOD,#27H MOV TL0,#0FFH MOV TH0,#156 MOV TH1,#d

19、ata MOV TL1,#data MOV IE,#9FH ;开中断 :,(3)中断处理程序部分: TL0溢出中断服务程序: TL0INT:MOV TL0,#0FFH (外部中断处理) RETI TH0溢出中断服务程序: TH0INT:MOV TH0,#156 CPL P1.0 RETI (其它外部中断服务程序略),6. 3. 5 综合应用举例 例6-8 设某单片机系统的晶振频率为6MHz,试编写利用T0产生1s定时的程序。 解: 1、确定定时器T0的工作方式 Tcy=2 s 方式0最长可定时:2s*8192=16.384ms 方式1最长可定时:2s*65536=131.072ms 方式2最长

20、可定时:2s*256=512s 选方式1,每隔100ms中断一次,中断10次为1s。 2、计算初值X 100000 s=(65536-X)*2 s X=65536-50000=15536=3CB0H 3、实现的方法:(1)计数器法;(2)中断循环程序法,4、程序清单: (1)中断入口和主程序部分: ORG 0000H START:LJMP MAIN ORH 000BH LJMP SERVE ORG 0030H MAIN:MOV SP,#5FH MOV B,#10 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 ;开运行 SETB ET0 ;开

21、中断 SETB EA SJMP $,(2)中断服务程序部分: SERVE: MOV TL0,#0B0H MOV TH0,#3CH DJNZ B,LOOP CLR TR0 LOOP:RETI END,门控制位GATE的应用测量脉冲宽度 GATE1可使定时器/计数器T1的启动计数受INT1的控制,可测量引脚INT1(P3.3)上正脉冲的宽度(机器周期数)。,参考程序: ORG 0000H RESET: AJMP MAIN ;复位入口转主程序 ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#90H ;T1为方式1定时控制字 MOV TL1,#00H MOV TH1,#00H LOOP0: JB P3.3,LOOP0;INT1高,则等待变低 SETB TR1;如INT1为低,启动T1 LOOP1: JNB P3.3,LOOP1;等待INT1升高 LOOP2: JB P3.3,LOOP2 ;INT1高,则等待变低 CLR TR1;停止T1计数 MOV A,TL1 ;T1计数值送A,将A中的T1计数 值送显示缓冲区 转换成显示的代码 L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论