第6章定时计数器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例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 0100H PT1INT: MOV TL1,#0B0H MOV TH1,#3CH INC R7 CJNE R7, #20, PEND MOV R7, #00H CPL P1.7 PEND: RETI 用定时/计数器来实现定时,主要 考虑定时器的最大定时时间是否大于或 等于要求的定时时间。若不满足,则要 另外设置一个软计数器,对定时器基本 定时的次数进行累计。 确定基本定时时间的原则: 基本定时时间尽量长且必须与 要求的定时时间成整数倍关系。
M1
M0
0
0
0
0
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
START:
MOV TMOD,#90H
MOV TL1,#00H MOV TH1,#00H
WAIT1:
JNB P3.3,WAIT1
SETB TR1
WAIT2 : JB P3.3, WAIT2 CLR MOV MOV TR1 R2,TL1 R3,TH1 …
例5、应用T0产生1ms的定时,并使P1.0输出占空比为1:1,周期为2ms的方波。
设fosc为6MHZ,并假定CPU不作其它工作。
解:方法一、采用查询的方式 1、确定计数初值(方式0)
计数初值X=213-6×106×1×10-3/12=7692=1E0CH=1111000001100B 则计数初值应为:(TH0)=0F0H ,
设置TMOD:
(TL0)=0CH
GATE C/T
2、设计程序
6.2 定时/计数器的有关寄存器 一、TMOD定时/计数器方式寄存器(89H) 用于控制和确定T0、T1的工作模式和工作方式
GATE C/T M1 M0 GATE C/T M1 M0
T1
T0
1) C/T:工作模式选择位 =0,定时器模式,对内部机器周期(脉冲)进行计数;计数频 率为晶振频率的1/12。 =1,计数器模式,对来自T0(P3.4)或T1(P3.5)引脚上的外部负 脉冲计数。最高计数频率为晶振频率的1/24。 2) M1、M0:工作方式选择位,参看P102,表6.1
解: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 – 12×106×10×10-3/12=55536=D8F0H,即 (TH1)=D8H (TL1)=F0H
定时器初始化编程:使用定时器工作之前,先计算出计数 初值并写入控制寄存器,确定好定时器工作方式。
编程初始化格式: • MOV TMOD,# 方式字 • MOV THx, #XH • MOV TLx, #XL • SETB EA • SETB ETx • SETB TRx
;选择方式 ;装入Tx计数初值 ;开Tx中断
四、方式3:M1M0=11
T0:分成2个独立的8位定时/计数器,TL0为定时/计数器,TH0为定时器。 TL0占用T0的控制位和引脚信号:C/ T、TR0、GATE、T0引脚、T0的中断源 TH0占用T1的控制位:TR1、TF1和T1的中断源。 T1:停止工作
当T0工作于方式3时,T1只能用作方式0、方式1 和方式2,由C/T切换定时和计数工作模式,设 置好工作方式时便自动开始运行,要停止运行 时,只需设T1工作于方式3即可。
;启动Tx定时器。
例1:由P1.0输出方波信号,周期为2ms,设fosc=12MHz。 P1.0
2ms
解:每隔1ms改变一次P1.0的输出状态,即形成方波,用T0非门控方式1定时。 计算计数初值:X = 216 - t/T = 216 -1×10-3×12×106/12= 655361000 = 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 ;中断服务程序,置初值 MOV TH0,#0FCH CPL P1.0 ;取反,产生方波 RETI ;中断返回
通过上面的分析,我们回过头来看定时/计数器的工作原理。参看 P100,图6.1。
6.3 定时/计数器的4种工作方式
由TMOD中的方式选择位M1、M0来选择T0、T1的工作方式
一、 方式0:M1M0=00
13位定时/计数器。 THx 8位和TLx低5位组成13位加1计数器,此种方式 与MCS-48系列兼容,如果不是为了兼容的目的,一般不用方式0。方式0的 全部功能方式1都可以代替。最大计数脉冲个数:1~8192(213),最长定时时 间(晶振12MHz ,T=1s):1 s ~ 8192×T= 8.192ms
各种方式下的最大定时 时间见P109.
例3:定时器外部引脚T0(T1)用作外部中断信号输入端。
解:外部负脉冲引起中断请求,选计数方式,T0工作于方式2,计数初值为FFH。 程序如下:
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
M1 M0 0 0 0 1 1 0 1 1 方式 0 1 2 3 功能描述 TLx 中低 5 位和 THx 中 8 位构成 13 位定时/计数器 TLx 和 THx 构成 16 位定时/计数器 常数自动重新装入的 8 位定时/计数器 对于 T0 的 TL0 是一个 8 位的定时/计数器,TH0 是一个 8 位的定 时器,对于 T1 则停止工作,即关闭 T1
低5 位 高8 位
二、 方式1:M1M0=01
16位定时/计数器。 THx8位和TLx8位组成16位加1计数器 最大计数脉冲个数:1~65536(216),最长定时时间(晶振12MHz T=1s):1s ~ 65536×T= 65.54ms
启动计数方式:
非门控方式:当GATE=0,
控制权由 TRx 决定 TRx=1 计数开始 TRx =0 计数停止
T0 外来脉冲 T1
片内计数器 片外计数器 定时器
单片机
二、定时/计数器的组成
单片机 8031 结构框图 1、定时器T0由TH0(84H)和TL0(8AH)计数器构成; 2、定时器T1由TH1(8DH)和TL1(8BH)计数器构成; 具有两种工作模式(计数器模式和定时器模式)、4种工作方式(方 式0、方式1、方式2、方式3),其控制字均在相应的特殊功能寄存器中 (TMOD:定时/计数器方式控制寄存器;TCON:定时/计数器控制寄存 器),通过对特殊功能寄存器的编程,用户可以很方便地选择适当的工 作模式和工作方式。
二、TCON定时/计数器控制寄存器(88H)
用于控制T0、T1的操作及其中断,位地址为:88H~8FH,格式如下:
TFx:定时/计数器溢出标志,当定时/计数器溢出时,硬件电路置TFx为 “1”, 响应中断时硬件自动复位TRx。 TRx:定时/计数器运行控制位, “1”:启动计数; “0”:停止计数。
6.4 MCS-51定时/计数器的综合应用 计数初值的计算
1、计数器模式:设n为计数器位数,需计数的次数为m,则 计数初值X= 2n – m , 十进制数
2、定时器模式:设t为定时时间(s),T为机器周期(s),n为定时器位数,系统 晶振频率为fosc ,则
计数初值X= 2n - t/T= 2n -fosct/12 , 十进制数 例1:设T0以方式0工作,在外界发生100次事件时产生中断请求,求计数初值。
门控方式:当GATE=1、TRx=1 控制权由 INTx 决定 INTx=1 计数开始 INTx =0 计数停止
三、 方式2:M1M0=10
自动重装常数的8位定时/计数器。TLx作为8位加1计数器,THx作为8位重装 初值寄存器。 用于需要重复定时和计数的场合。
最大计数值:256 (28),最大定时时间(晶振12MHz时 T=1s): 256s。
脉冲 控制
+1计数器
溢出
中断
开关 8031(8051、8751) 有2个可独立控制的16位定时/计数器:
T0、T1,可用软件控制。
定时器: 对机器周期计数, 每来一个机器周期,计数器内容(值)自动加1 ; 计数器:对外来脉冲进行计数, T0、T1引脚上从高电平到低电平跳变时,计数器内 容自动加1 机器周期
第6章 MCS-51单片机的定时/计数器 6.1 定时器的定时与计数功能 6.2 定时器的有关寄存器 6.3 定时器的4种工作方式 6.4 定时器的综合应用
6.1 MCS-51定时/计数器的定时与计数功能
• 实现定时一般有三种方法:
• l 利用软件实现(延时程序); 优点:简单,控制方便;缺点:CPU效率低。 • 2 硬件实现,专门设计一个单稳态定时器; 优点:CPU效率高;缺点:修改参数麻烦。 • 3 利用计数器实现 1us 8位 计数器 预置数 计算机一般利用第三种方法实现定时/计数 256us 溢出
输入脉冲
6.1 MCS-51定时/计数器的定时与计数功能
一、定时/计数器的原理
定时器一般指硬件定时器,实质是计数器,脉冲每出现一次下降沿 , 计数寄存器数值将自动加1。 计数的脉冲如果来源于单片机内部的晶振(时钟 电路),由于其周期极为准确,这时称为定时器。计数的脉冲如果来源于单片 机外部的引脚,由于其周期一般不准确,这时称为计数器。
外部中断源0
INT0 INT1 T0 P3.4
外部中断源1
外部中断源2
8051
例4:门控方式测量正脉冲宽度(当GATE=1时,计数器受TRx
和INTx同时控制)

解:INT1引脚输入被检测信号,记录在正脉冲的时间内包含机器周 期脉冲个数。设脉宽小于65.5ms 等待查询INT1,正脉冲过后,读出TH1、TL1。 ORG 2000H
3)GATE:门控方式选择位 ,用于确定对应的外部中断请求引脚INT0(或INT1) 是否参与T0(或T1)的操作控制。 GATE=0时,定时/计数器T0(T1)的运行不受外部中断请求引脚INT0(INT1)的 控制,只要控制寄存器TCON中的TR0(TR1)位置“1”,T0(T1)就开始计数。 GATE=1时,只有INTT1)才允 许计数,这时可用于测量INT0(INT1)引脚上出现的正脉冲宽度。 确定定时/计数器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2,非门控定时;T1用方式1,门控计数。 MOV TMOD,#0D2H ; 11010010 B
相关文档
最新文档