第06章 MCS-51单片机定时计数器

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

10
2 8位计数初值自动重装,TL(7 ~ 0)
TH(7 ~ 0)
11
3 T0运行,而T1停止工作,8位定时/计数。
▪ 2.定时/计数器控制寄存器(TCON)

D7 D6 D5 D4 D3 D2 D1 D0
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TR0:定时 / 计数器0运行控制位。软件置位,软件复位。与GATE有关, 分两种情况:
GATE = 0 时:若TR0 = 1,开启T0计数工作;若TR0 = 0,停止T0计 数。
GATE = 1 时:若TR0 = 1 且/INT0 = 1时,开启T0计数; 若TR0 = 1 但 /INT0 = 0,则不能开启T0计数。 若TR0 = 0, 停止T0计数。
TR1:定时 / 计数器1运行控制位。用法与TR0类似。
▪ (1)计算计数初值。欲产生周期为1000μs的等宽方波脉冲, 只需在P1.7端交替输出500μs的高低电平即可,因此定时 时间应为500μs。设计数初值为X,则有:
▪ (216-X)×1×10-6=500×10-6
▪ X=65536-500=65036=FE0CH
▪ 将X的低8位0CH写入TL1,将X的高8位FEH写入TH1。
;清TCON,定时器中断标志清

MOV TMOD,#10H
;工作方式1设定

MOV TH1,#0FEH
;计数1初值设定

MOV TL1,#0CH

MOV IE,#00H
;关中断

SETB TR1
;启动计数器1
▪ LOOP0:JBC TF1,LOOP1 ;查询是否溢出

SJMP LOOP0
;无溢出,查询等待
图6-3:定时/计数器工作方式1逻辑结构
可以看出,方式0和方式1的区别仅在于计数器的位数不 同,方式0为13位,方式1则为16位,由TH0作为高8位,TL0 为低8位,有关控制状态字与方式0相同。则只需将工作方 式0的计算公式中的213改为216就可得到工作方式1的计数值 计算公式和定时时间计算公式。
TL0 溢出中断服务程序(由 000BH单元转来):
TL0INT: MOV TL0, #0FFH ; 外部引脚 T0 引起中断处理程序
RETIBiblioteka TH0 溢出中断服务程序(由 001BH转来):
TH0INT: MOV TH0, #206 CPL P1.0 RETI
此处串行口中断服务程序、 外中断0和外 中断1的中断服务程序没有列出。
▪ 工作在方式2下,计数器的计数值由下式确定:
N=28-X=256-X
计数范围为: 1~256
▪ 定时器的定时值由下式确定: T=N*Tcy=(256-X)*Tcy
▪ 6.2.4.定时/计数器工作方式3
当M1,M0=10时,定时/计数器处于工作方式2,此时,定时/及数器的 等效电路如图所示
图6-5:定时/计数器工作方式3等效电路
6.2 定时器/计数器的工作方式
▪ 6.2.1.工作方式0
工作方式0是13位计数结构的工作方式,其计数器由TH的全部8位和 TL的低5位构成,TL的高3位没有使用。当C/T=0时,多路开关接通振荡脉 冲的12分频输出,13位计数器以次进行计数。这就是定时工作方式。当 C/T=1时,多路开关接通计数引脚(To),外部计数脉冲由银南脚To输入。 当计数脉冲发生负跳变时,计数器加1,这就是我们常称的计数工作方式
图6-2:定时/计数器工作方式0逻辑结构
▪ 在工作方式0下,计数器的计数值由下式确定: N=213-X=8192-X
计数值范围是: 1~8192(213)
▪ 定时器的定时值由下式确定: T=N*Tcy=(8192-X)*Tcy
▪ 6.2.2.定时/计数器工作方式1
当M1,M0=01时, 定时/计数器处于工作 方式1,此时,定时/ 及数器的等效电路如 图所示
由P1.0输出5kHz的方波,即每隔100μs使P1.0的电平发生一 次变化。则TH0中的初始值:X=M-N=256-100/2=206。
下面是有关的程序:
MOV TL0, #0FFH MOV TH0, #206 MOV TL1, #BAUD ; BAUD MOV TH1, #BAUD MOV TMOD, #27H ; 置T0工作方式3,TL0工作于计数 MOV TCON, #55H ; 启动定时器 T0、 T1, 置外部中断 0 和 1为边沿 激活方式 MOV IE, #9FH ; 开放全部中断
TR1=1为启动,TR1=0为停止 参考程序如下:
ORG 1000H
START: MOV TCON,#00H ;清TCON
MOV TMOD,#00H ;工作方式设定
MOV TH1,#0FBH ;计数初值设定
MOV TL1,#0AH
MOV IE,00H
;关中断
SETB TR1
;启动TR1
LOOP0: JBC TF1,LOOP1 ;查询是否溢出
▪ LOOP1:CLR TF1

MOV TH1,#0FEH
;重设初值

MOV TL1,#0CH

CPL P1.7
;输出取反

SJMP LOOP0
;返回状态查询
▪ END
;汇编结束
▪ 3.工作方式2的应用
【例】使用定时器T0以方式2产生200微秒定时,在P1.0输 出周期为400微秒的连续方波。已知晶振频率fosc=6MHz。 (1)计算计数初值 (256-N)×2×10-6=200×10-6 N=156=9CH (2)TMOD初始化 工作方式2时,M1M0=10,实现定时功能C/=0, GATE=0。定时器1不用,无关位设定为0,可得TMOD=02H。
▪ 6.2.3.定时/计数器工作方式2
当M1,M0=10时,定时/计数器处于工作方式2,此时,定时/及数器的等 效电路如图所示
图6-4:定时/计数器工作方式2逻辑结构
具有自动重装载功能,即自动加载计数初值 ,在这种工作方式中,16位 计数器分为两部分,以TL0为计数器,以TH0作为预置寄存器 ,当计数溢出 时 ,TH以硬件方法自动给计数器TL0重新加载 。
6.1 定时/计数器结构
▪ 1.工作方式控制寄存器(TMOD)
位 位符号
D7 D6 D5 D4
GATA
M1 M0
←T1方式字段→
D3 D2 D1 D0
GATA
M1 M0
←T0方式字段→
GATE:门控位。GATE = 0 启动不受 /INT0或 /INT1的控制;GATE = 1 启动受 /INT0
参考程序如下:
ORG 000BH LJMP LOOP0
ORG 0200H
START: MOV TCON,#00H
MOV TMOD,#02H ;定时器方式2
MOV TH0,#9CH ;计数初值
MOV TL0,#9CH
SETB EA
;允许总中断
SETB ET0
;T0中断允许
SETB TR0
;启动T0
HERE: SJMP HERE
或 /INT1 的控制。
C/ :T 外部计数器 / 定时器方式选择位。C/T = 0 定时方式;C/T = 1 计数方式。 M1M0:工作模式选择位。
M1 M0 模式
说明
00
0 13位定时/计数器,高八位TH(7 ~ 0)+ 低五位TL(4 ~ 0)
01
1 16位定时/计数器,TH(7 ~ 0)+ TL(7 ~ 0)
▪ 5. 定时器作外部中断源应用
MCS—51单片机有两个定时器/计数器,当 它们选择计数工作方式时,T0或T1引脚上的负跳 变将使T0或T1计数器加1,若把定时器/计数器 设置成计数工作方式,计数初值设定为满量程, 一旦计数从外部引脚输入一个负跳变信号,计数 器To或T1加1,产生溢出中断,这样,便可把外 部计数输入端T0(P3.4)或T1(P3.5)扩展为外部 中断源输入。
▪ 工作方式3只适用于定时/计数器T0。当T0工作在方式3时,TH0和TL0被分为 两个独立的8位计数器。TL0可作为定时器或计数器使用,占用了T0本身的 控制信号TF0和TR0。TH0只能作为定时器使用,且占用了定时/计数器T1的 两个控制信号TR1和TF1。
▪ 当T0工作于方式3时,T1只能工作在方式0、方式1或方式2,并且由 于已没有计数溢出标志位TF1可供使用,只能把计数溢出直接送给 串行口,作串行口的波特率发生器使用。等效电路图如下
SJMP LOOP0
LOOP1: MOV TH1,#0FBH ;重设初值
MOV TL1,#0AH
CPL P1.7
;输出取反
SJMP LOOP0
END
▪ 2.工作方式1应用 【例】声音报警。在单片机应用系统中,经常需要通过扬声器报
警提示,如图6-6所示。编写程序,使扬声器报警。
▪ 编程思路:要让扬声器发声报警,只需要为扬声器提供一 个音频驱动信号(如1000Hz)即可,即编写程序在P1.7引 脚上输出音频信号即可。设单片机晶振频率fosc=12MHz, 一个机器周期为1μs。1000Hz的音频信号周期为 1ms=1000μs。使用定时器1以方式1产生周期为1000μs的 等宽方波脉冲,并从P1.7输出即可,以查询方式完成。
▪ (2)TMOD初始化。题目要求定时器/计数器为工作方式1, 所以M1M0=01;为实现定时功能应使C/=0;为实现定时 器内启动,应使GATE=0。此题目不涉及定时器/计数器0, 为方便起见,设其各控制位均为0。则工作方式控制寄存 器TMOD=10H。
▪ (3)启动和停止控制。因为定时/计数器1为内启动,故当 TR1=1时,启动计数;当TR1=0时,停止计数。
▪ (4)中断的开放/禁止。题目中要求用查询方式检查T1的计 数溢出状态,故设置IE=00H,以关中断。
▪ 汇编语言参考程序如下:

ORG 0000H
;在0000H单元存放转移指令

LJMP START ;转移到主程序

ORG 0100H
;主程序从0100H开始
▪ START:MOV TCON,#00H 零,停止计数
;等待中断
ORG 0500H
;中断服务程序
LOOP0: CPL P1.0
RETI
END
▪ 4.工作方式3的应用
【例】假设有一个用户系统中已使用了两个外部中断源, 并 置定时器 T1 于方式 2, 作串行口波特率发生器用, 现要 求再增加一个外部中断源, 并由P1.0 口输出一个5 Hz的 方波(假设晶振频率为 6 MHz)。

6
本章内容

mcs
-51
1. 定时/计数器的结构

2. 定时/计数器的工作方式
时/ 3. 定时/计数器应用举例

4. 单片机音乐


定时/计数方法
1.硬件法 硬件定时功能完全由硬件电路完成,不占
用CPU时间。但当要求改变定时时间时,只能通 过改变电路中的元件参数来实现,很不灵活。 2.软件法
软件定时是执行一段循环程序来进行时间 延时,优点是无额外的硬件开销,时间比较精 确。但牺牲了CPU的时间。 3.可编程定时器/计数器
(213-N)×2×10-6=300×10-6
N=8042=1F6AH=0001111101101010B
将低5位01010B=0A写入TL1,将高8位有效值 11111011B=FBH写入TH1中。
(2)TMOD初始化 为把定时/计数器1设定为方式0,则M1M0=00。为
实现定时功能应使C/=0,为实现定时器启动应使 GATE=0,因此设定工作方式控制寄存器TMOD=00H。 (3)由TR1启动和停止定时器
图6-6:方式3下的T1作为波特率发生器等效电路
6.3 定时/计数器应用举例
▪ 在使用定时/计数器时,应做好四件事:设 置TMOD以选择工作方式;计算并设置计数 初值THX,TLX;设置IE、IP以规定中断的开 放/禁止及优先级;设置TCON以启动/停止 定时/计数器的工作。
▪ 1.工作方式0的应用
在不增加其它硬件开销时,可把定时/计数器T0置于工作方 式3,利用外部引脚T0端作附加的外部中断输入端,把TL0 预置为0FFH,这样在T0端出现由1至0的负跳变时,TL0溢 出,申请中断,相当于边沿激活的外部中断源。在方式3 下,TH0总是作8位定时器用,可以靠它来控制由P1.0输出 的5kHz方波。
【例】设单片机晶振频率fosc=6MHZ,使用定时器1以方
式0产生周期为600μs的等宽方波脉冲,并由P1.7输出, 以查询方式完成。
解:(1)计算计数初值欲产生周期为600μs的等宽方波脉 冲,只需在P1.7端以300μs为周期交替输出高低电平即可, 因此定时时间应为300μs。设待求计数初值为N,则:
相关文档
最新文档