第6章定时计数器

上传人:今*** 文档编号:107445614 上传时间:2019-10-19 格式:PPT 页数:31 大小:824KB
返回 下载 相关 举报
第6章定时计数器_第1页
第1页 / 共31页
第6章定时计数器_第2页
第2页 / 共31页
第6章定时计数器_第3页
第3页 / 共31页
第6章定时计数器_第4页
第4页 / 共31页
第6章定时计数器_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《第6章定时计数器》由会员分享,可在线阅读,更多相关《第6章定时计数器(31页珍藏版)》请在金锄头文库上搜索。

1、第6章 MCS-51单片机的定时/计数器,6.1 定时器的定时与计数功能 6.2 定时器的有关寄存器 6.3 定时器的4种工作方式 6.4 定时器的综合应用,6.1 MCS-51定时/计数器的定时与计数功能,实现定时一般有三种方法: l 利用软件实现(延时程序); 优点:简单,控制方便;缺点:CPU效率低。 2 硬件实现,专门设计一个单稳态定时器; 优点:CPU效率高;缺点:修改参数麻烦。 3 利用计数器实现,溢出,8位,256us,1us,计算机一般利用第三种方法实现定时/计数,一、定时/计数器的原理 定时器一般指硬件定时器,实质是计数器,脉冲每出现一次下降沿 ,计数寄存器数值将自动加1。

2、计数的脉冲如果来源于单片机内部的晶振(时钟电路),由于其周期极为准确,这时称为定时器。计数的脉冲如果来源于单片机外部的引脚,由于其周期一般不准确,这时称为计数器。,8031(8051、8751) 有2个可独立控制的16位定时/计数器:T0、T1,可用软件控制。,6.1 MCS-51定时/计数器的定时与计数功能,定时器: 对机器周期计数, 每来一个机器周期,计数器内容(值)自动加1 ; 计数器:对外来脉冲进行计数, T0、T1引脚上从高电平到低电平跳变时,计数器内容自动加1,T1,片外计数器,定时器,二、定时/计数器的组成,结构框图,单片机 8031,1、定时器T0由TH0(84H)和TL0(8

3、AH)计数器构成; 2、定时器T1由TH1(8DH)和TL1(8BH)计数器构成; 具有两种工作模式(计数器模式和定时器模式)、4种工作方式(方式0、方式1、方式2、方式3),其控制字均在相应的特殊功能寄存器中(TMOD:定时/计数器方式控制寄存器;TCON:定时/计数器控制寄存器),通过对特殊功能寄存器的编程,用户可以很方便地选择适当的工作模式和工作方式。,6.2 定时/计数器的有关寄存器 一、TMOD定时/计数器方式寄存器(89H) 用于控制和确定T0、T1的工作模式和工作方式,1) C/T:工作模式选择位 =0,定时器模式,对内部机器周期(脉冲)进行计数;计数频率为晶振频率的1/12。

4、=1,计数器模式,对来自T0(P3.4)或T1(P3.5)引脚上的外部负脉冲计数。最高计数频率为晶振频率的1/24。 2) M1、M0:工作方式选择位,参看P102,表6.1,二、TCON定时/计数器控制寄存器(88H) 用于控制T0、T1的操作及其中断,位地址为:88H8FH,格式如下:,3)GATE:门控方式选择位 ,用于确定对应的外部中断请求引脚INT0(或INT1)是否参与T0(或T1)的操作控制。 GATE=0时,定时/计数器T0(T1)的运行不受外部中断请求引脚INT0(INT1)的控制,只要控制寄存器TCON中的TR0(TR1)位置“1”,T0(T1)就开始计数。 GATE=1时

5、,只有INT0(INT1)引脚为高电平且TR0(TR1)置“1”,T0(T1)才允许计数,这时可用于测量INT0(INT1)引脚上出现的正脉冲宽度。 确定定时/计数器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2,非门控定时;T1用方式1,门控计数。 MOV TMOD,#0D2H ; 11010010 B,TFx:定时/计数器溢出标志,当定时/计数器溢出时,硬件电路置TFx为 “1”,响应中断时硬件自动复位TRx。 TRx:定时/计数器运行控制位, “1”:启动计数; “0”:停止计数。,6.3 定时/计数器的4种工作方式,由TMOD中的方式选择位M1、M0来选择T0、T1的工

6、作方式 一、 方式0:M1M0=00 13位定时/计数器。 THx 8位和TLx低5位组成13位加1计数器,此种方式与MCS48系列兼容,如果不是为了兼容的目的,一般不用方式0。方式0的全部功能方式1都可以代替。最大计数脉冲个数:18192(213),最长定时时间(晶振12MHz ,T=1s):1 s 8192T= 8.192ms,通过上面的分析,我们回过头来看定时/计数器的工作原理。参看P100,图6.1。,高8位,低5位,二、 方式1:M1M0=01,16位定时/计数器。 THx8位和TLx8位组成16位加1计数器 最大计数脉冲个数:165536(216),最长定时时间(晶振12MHz T

7、=1s):1s 65536T= 65.54ms,非门控方式:当GATE0, 控制权由 TRx 决定 TRx1 计数开始 TRx 0 计数停止,门控方式:当GATE1、TRx1 控制权由 INTx 决定 INTx1 计数开始 INTx 0 计数停止,启动计数方式:,三、 方式2:M1M0=10,自动重装常数的8位定时/计数器。TLx作为8位加1计数器,THx作为8位重装初值寄存器。 用于需要重复定时和计数的场合。 最大计数值:256 (28),最大定时时间(晶振12MHz时 T=1s): 256s。,四、方式3:M1M0=11,T0:分成2个独立的8位定时/计数器,TL0为定时/计数器,TH0为

8、定时器。 TL0占用T0的控制位和引脚信号:C/ T、TR0、GATE、T0引脚、T0的中断源 TH0占用T1的控制位:TR1、TF1和T1的中断源。 T1:停止工作,当T0工作于方式3时,T1只能用作方式0、方式1和方式2,由C/T切换定时和计数工作模式,设置好工作方式时便自动开始运行,要停止运行时,只需设T1工作于方式3即可。,6.4 MCS-51定时/计数器的综合应用,计数初值的计算 1、计数器模式:设n为计数器位数,需计数的次数为m,则 计数初值X= 2n m , 十进制数 2、定时器模式:设t为定时时间(s),T为机器周期(s),n为定时器位数,系统晶振频率为fosc ,则 计数初值

9、X= 2n - t/T= 2n -fosct/12 , 十进制数 例1:设T0以方式0工作,在外界发生100次事件时产生中断请求,求计数初值。 解:n=13(TL0高3位未用)则 计数初值X= 213 - 100= 8092=1F9CH=1111110011100B 高8位为11111100B=FCH,低5位为11100B=1CH,即 (TH0)=FCH (TL0)=1CH 例2:设T1以方式1工作,系统晶振频率fosc为12MHZ,要求定时时间为10ms,求计数初值。 解:n=16 计数初值X= 2n - fosct/12= 216 121061010-3/12=55536=D8F0H,即

10、(TH1)=D8H (TL1)=F0H,定时器初始化编程:使用定时器工作之前,先计算出计数初值并写入控制寄存器,确定好定时器工作方式。,编程初始化格式: MOV TMOD,# 方式字 ;选择方式 MOV THx, #XH ;装入Tx计数初值 MOV TLx, #XL SETB EA ;开Tx中断 SETB ETx SETB TRx ;启动Tx定时器。,例1:由P1.0输出方波信号,周期为2ms,设fosc=12MHz。,解:每隔1ms改变一次P1.0的输出状态,即形成方波,用T0非门控方式1定时。 计算计数初值:X = 216 - t/T = 216 -110-312106/12= 65536

11、-1000 = 64536 = FC18H,则(TH0)=0FCH,(TL0)=18H,(TMOD)=01H 程序如下:,ORG 0000H AJMP MAIN ORG 000BH ;T0中断程序入口地址 AJMP PT0INT ;跳到中断服务程序 ORG 0030H MAIN:MOV TMOD,#01H ;中断方式 MOV TL0,#18H ;计数初值 MOV TH0,#0FCH SETB EA ;开放总中断 SETB ET0 ;开放T0中断 SETB TR0 ;启动定时器 HERE:SJMP HERE ;等待中断,相当于执行其它任务 PT0INT: MOV TL0,#18H ;中断服务程序

12、,置初值 MOV TH0,#0FCH CPL P1.0 ;取反,产生方波 RETI ;中断返回,P1.0,例2: P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为12MHz。 解:设T1为定时器,工作于方式1,定时50ms,R7为软计数器,记录中断次数,计满20个中断为1秒。,ORG 0000H AJMP MAIN ORG 001BH AJMP PT1INT ORG 0030H MAIN:MOV R7,#00H MOV TMOD,#10H MOV TL1, #0B0H MOV TH1, #3CH SETB EA SETB ET1 SETB TR1 HERE: SJMP HERE ORG 01

13、00H PT1INT: MOV TL1,#0B0H MOV TH1,#3CH INC R7 CJNE R7, #20, PEND MOV R7, #00H CPL P1.7 PEND: RETI,用定时/计数器来实现定时,主要考虑定时器的最大定时时间是否大于或等于要求的定时时间。若不满足,则要另外设置一个软计数器,对定时器基本定时的次数进行累计。,确定基本定时时间的原则: 基本定时时间尽量长且必须与要求的定时时间成整数倍关系。,各种方式下的最大定时 时间见P109.,例3:定时器外部引脚T0(T1)用作外部中断信号输入端。 解:外部负脉冲引起中断请求,选计数方式,T0工作于方式2,计数初值为F

14、FH。 程序如下:,ORG 0000H AJMP MAIN ORG 000BH ;T0中断程序入口地址 AJMP PT0INT ;跳到中断服务程序 ORG 0030H MAIN:MOV TMOD, # 06 H MOV TL0,# FF H MOV TH0, # FF H SETB ET0 SETB EA SETB TR0 HERE:SJMP HERE ORG 0100H PT0INT: RETI,T0 P3.4,例4:门控方式测量正脉冲宽度(当GATE=1时,计数器受TRx和INTx同时控制)。 解:INT1引脚输入被检测信号,记录在正脉冲的时间内包含机器周期脉冲个数。设脉宽小于65.5ms

15、 等待查询INT1,正脉冲过后,读出TH1、TL1。,ORG 2000H START: MOV TMOD,#90H MOV TL1,#00H MOV TH1,#00H WAIT1: JNB P3.3,WAIT1 SETB TR1 WAIT2 : JB P3.3, WAIT2 CLR TR1 MOV R2,TL1 MOV R3,TH1 ,例5、应用T0产生1ms的定时,并使P1.0输出占空比为1:1,周期为2ms的方波。设fosc为6MHZ,并假定CPU不作其它工作。,解:方法一、采用查询的方式 1、确定计数初值(方式0) 计数初值X=213-6106110-3/12=7692=1E0CH=1111000001100B 则计数初值应为:(TH0)=0F0H , (TL0)=0CH 设置TMOD:,2、设计程序,ORG 2000H (MOV TMOD, #00H) SETB TR0 LOOP: MOV TH0, #0F0H MOV TL0, #0CH LOOP1: JNB TF0, LOOP1 CLR TF0 CPL P1.0 SJMP LOOP,方法二、采用中断方式,程序如下: ORG 0000H AJMP MAIN ORG 000BH AJMP IT0P ORG 0030H MAIN: MOV SP, #60H SETB EA SETB ET0 MOV TMO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号