第06章 MCS-51单片机定时计数器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.定时/计数器工作方式2 M1,M0=10时 自动重装载功能,即自动加载计数初值 ,TL0为计数 器,以TH0作为预置寄存器 ,当计数溢出时,TH以硬 件方法自动给计数器TL0重新加载 。
工作在方式2下,计数器的计数值由下式确定: N=28 -X= 256 - X 计数范围为: 1~256 定时器的定时值由下式确定: T=N * Tcy = (256-X) * Tcy
4.定时/计数器工作方式3
M1,M0=11时TL0占用TR0、TF0;TH0占用TR1、TF1
当T0工作于方式3时,T1只能工作在方式0、方式1或方 式2,并且由于已没有计数溢出标志位TF1可供使用,只 能把计数溢出直接送给串行口,作串行口的波特率发生 器使用。等效电路图如下
C/T=0
串行口
TH1 TL1 (8位) (8位或5位)
定时器0
方式说明 13 位定时/计数器 16 位定时/计数器 8 位自动重置定时/计数器 两个8 位定时/计数器(仅T0有此方式)
M1 0 0 1 1
M0 0 1 0 1
定时/计数器的方式寄存器TMOD
C/T=1 计数方式 C/T=0 定时方式 GATE —— 控制定时/计数器的启动是否 受外部中断请求信号的影响 GATE=1 —— 外部中断请求高电平启动计 数 GATE=0 —— 定时/计数器启动与外部中 断请求无关
8位计数初值自动重装,TL(7--0) ; TH(7--0) T0运行,而T1停止工作,8位定时/计数。
2.定时/计数器控制寄存器(TCON)
位 位符号
D7 TF1
D6 TR1
D5 TF0
D4 TR0
D3 IE1
D2 IT1
D1 IE0
D0 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类似。
例6-5 利用T1的方式2对外部信号计数,要求每计满 100个数, 将P1.0取反。 (PROTEUS仿真—学生) 本例是方式2计数模式的应用。
(1)选择工作方式
外部信号由T1(P3.5) 脚输入,每发生一次负跳变计数器加1, 每输入100个脉冲,计数器产生溢出中断,在中断服务程序 中将P1.0取反一次。 T1 方式2的控制字为TMOD=60H。不使用T0时,TMOD的低4位可 任取,但不能使T0进入方式3,这里取全0。
1.工作方式0的应用
设单片机晶振频率fosc=6MHZ,使用定时器1以方式0产生为 600μS 的等宽方波脉冲,并由P1.7输出,以查询方式完成。
解:(1)计算计数初值欲产生周期为600μs的等宽方波脉冲,只 需在P1.7端以300μs为周期交替输出高低电平即可,因此定时 时间应为300μs。因为fosc=6MHZ,所以一个机器周期 T=12/6=2×10-6 秒。设待求计数初值为N,则: (213-N)×2×10-6=300×10-6 N=8042=1F6AH=0001111101101010B 将低5位01010B=0A写入TL1,将高8位有效值11111011B=FBH写 入TH1中。
START: MOV MOV MOV MOV SETB SETB SETB HERE: SJMP ORG LOOP0: CPL RETI END
TCON,#00H TMOD,#02H ;定时器方式2 TH0,#9CH ;计数初值 TL0,#9CH EA ;允许总中断 ET0 ;T0中断允许 TR0 ;启动T0 HERE ;等待中断 0500H ;中断服务程序 P1.7
定时器/计数器的工作方式
1工作方式0
13位计数结构,由TH 8位和TL低5位构成,TL高3位没用。 当C/T=0时,接通振荡脉冲的12分频输出,13位计数器:即定时 工作方式。 当C/T=1时,接通计数引脚,外部计数脉冲T0输入。当计数脉冲 发生负跳变时,计数器加1,即计数工作方式。
在工作方式0下,计数器的计数值由下式确定:
(2)TMOD初始化 把定时/计数器1设定为方式0,则M1M0=00。为实现 定时功能应使C/T=0,为实现定时器启动应使GATE=0, 因此设定工作方式控制寄存器TMOD=00H。 (3)由TR1启动和停止定时器 TR1=1为启动,TR1=0为停止 参考程序如下:
ORG 1000H START:MOV TCON,#00H MOV TMOD,#00H MOV TH1,#0FBH MOV TL1,#0AH
;重设初值 ;输出取反
产生3个周期=T,2T,4T方波?
2.工作方式1应用
已知某生产线上不断地有产品单向传送,产品之间有 较大间隔,如图6-6所示。使用光电开关统计一定时间 内的产品个数。假定红灯亮时停止统计,红灯灭时才在 上次统计结果的基础上继续统计,试用单片机定时/计 数器T1的方式1完成该项产品的计数任务。 解:(1) 初始化: GATE=1, C/T=1, M1M0=01,故 TMOD=11010000B=0D0H,TCON=00 (2)T1在方式1时, 溢出产生中断, 且计数器回零, 故 在中断服务程序中, 需用R0计数中断次数,以保护累积 计数结果。 (3) 启动T1计数, 开T1中断。
T1工作方式0(或1)
C/T=0
12分频
OSC T1(P3.5)
C/T=1
12分频
OSC
T1(P3.5)
串行口
TL1 (8位)
C/T=1
TH1 (8位)
T1工作方式2
方式3下的T1作为波特率发生器等效电路
定时/计数器应用举例
在使用定时/计数器时,应做好四件事:
设置TMOD以选择工作方式; 计算并设置计数初值THX,TLX; 设置IE、IP以规定中断的开放/禁止及优先级; 设置TCON以启动/停止定时/计数器的工作。
MSC-51单片机定时/计数器的结构
MCS-51有两个16位可编程 的定时器/计数器: 定时器 /计数器0和定时器/计数器 1; 四种工作方式:其控制字和 状态均在相应的特殊功能 寄存器中,通过对控制寄 存器的编程,选择适当的 工作方式。
定时/计数器结构
使用定时/计数器的步骤
C/ T : 外部计数器 / 定时器方式选择位。C/ T = 0 定时方式;C/ T = 1 计数方式。 M1M0:工作模式选择位。
M1 M0 0 0 模式 0 说明 13位定时/计数器,高八位TH(7--0)+ 低五位TL(4--0)
0ຫໍສະໝຸດ Baidu
1 1
1
0 1
1
2 3
16位定时/计数器,TH(7--0)+ TL(7--0)
方式选择——TMOD 初值设置——TH0、TL0( TH1、TL1 ) 中断允许——EA、ET0( ET1 ) 启动操作——TR0(TR1)
定时/计数器的方式寄存器TMOD
定义两个定时/计数器的工作方式
D7
GATE
D6
C/T
D5
M1
D4
M0
D3
GATE
D2
C/T
D1
M1
D0
M0
定时器1
工作方式 0 1 2 3
外部中断控制
定时器/计数器的控制寄存器
1.工作方式控制寄存器(TMOD)
位 D7 D6 D5 D4 D3 D2 D1 D0
位符号
GATE
C/
T
M1
M0
GATE
C/
T
M1
M0
←T1方式字段→
←T0方式字段→
GATE:门控位。= 0 启动不受 /INT0或 /INT1的控制;GATE = 1 受 /INT0 或 /INT1 的控制。
(2)计算T1的初值
X=28-100=156=9CH 因此,TL1的初值为9CH,重装初值寄存器TH1=9CH
(3)程序设计 ORG LJMP ORG CPL RETI ORG MAIN: MOV MOV MOV SETB SETB SETB HERE: AJMP 0000H MAIN 001BH ;T1中断服务程序入口 P1.0 ;P1.0位取反 0100H TMOD,#60H ;设T1为方式2计数 TL1,#9CH ;T0置初值 TH1,#9CH ET1 ;开中断 EA TR1 ;启动T1 HERE
参考程序如下:
ORG 0000H
AJMP START
ORG 001BH AJMP T1INT
ORG 0100H
START: MOV SP, #60H MOV TCON, #00H MOV TMOD, #0D0H MOV TH1, #0FFH MOV TL1, #0FFH MOV R0, #00H
图6-7:产品传送带原理图
一般情况下GATE=0
定时/计数器的控制寄存器TCON
用于控制定时/计数器的启动与溢出 TF1——溢出标志 TR1——启动位(=1:启动 =0:停止) TF0——溢出标志 TR0——启动位(=1:启动 =0:停止) D7 TF1 D6 D5 TR1 TF0 D4 D3 TR0 IE1 D2 IT1 D1 IE0 D0 IT0
C51系列有2个定时/计数器(T0、T1) C52系列有3个定时/计数器(T0、T1、T2) 通过编程设置,每个定时器/计数器可以根据系统 时钟实现定时,也可以对外部信号计数(T0/P3.4、 T1/P3.5) 每个定时器/计数器都有多种工作方式 每个定时器/计数器都会在预设定时计数时间到时 产生溢出,可以通过查询或中断方式处理
第 6 章
Single Chip Microcomputer 本章内容
定 时 / 记 数 器
1.
2.
3.
定时/计数器的结构 定时/计数器的工作方式 定时/计数器的应用
概述
通常采用以下三种方法来实现定时或计数:
1.硬件法
硬件定时功能完全由硬件电路完成,不占用 CPU时间。但当要求改变定时时间时,只能通过改 变电路中的元件参数来实现,很不灵活。 2.软件法 软件定时是执行一段循环程序来进行时间延时, 优点是无额外的硬件开销,时间比较精确。但牺牲 了CPU的时间。 3.可编程定时器/计数器
51单片机定时器有几种工作方式 用来设置工作方式的标志位是什么 工作方式0和工作方式1有什么区别 在工作方式1下,晶振时钟为12MHZ,如果 设置TH0=0FFH,TL0=0F0H,则经过多少时 间产生定时中断 控制定时器0启动和停止的标志位是什么 定时器1溢出的标志位是什么
3.工作方式2的应用 定时器T0以方式2产生200微秒定时,在P1.7 输出 周期为400微秒的连续方波。已知晶振频率fosc=6MHz。 (1)计算计数初值 (256-N)×2×10-6=200×10-6 N=156=9CH (2)TMOD初始化 工作方式2,M1M0=10,实现定时功能C/T=0,GATE=0。 定时器1不用,无关位设定为0,可得TMOD=02H。 参考程序如下: ORG 0000H LJMP START ORG 000BH LJMP LOOP0 ORG 0200H
;清TCON ;工作方式设定 ;计数初值设定
MOV IE,#00H SETB TR1 LOOP0: JBC TF1, LOOP1 SJMP LOOP0 LOOP1: MOV TH1,#0FBH MOV TL1, #0AH CPL P1.7 SJMP LOOP0 END
;关中断 ;启动TR1 ;查询是否溢出
N=213 – X = 8192 - X
计数值范围是: 1~8192(213) 定时器的定时值由下式确定:
T=N*Tcy = (8192-X) * Tcy
2. 定时/计数器工作方式1
M1,M0=01时,工作方式1 方式0和方式1的区别在于计数器位数不同,方式0 为13位;方式1则为16位,TH0作高8位,TL0低8位, 有关控制状态字与方式0相同。只需将工作方式0计算 公式中213改为216就可得到工作方式1的计数值和定时 时间。
MOV P3, #28H ; 置P3.5,P3.3为输入状态 SETB TR1 SETB ET1 SETB EA MAIN: LCALL DISP … SJMP $ ORG 0A00H T1INT: INC R0 ; 需要保护怎么办? MOV TH1, #0FFH; MOV TL1, #0FFH; RETI DISP: … RET END