单片机定时计数器及其应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.1.2.2 方式1
M1、M0=01,16位的计数器。
TL计满溢出向TH进位。 16位计满溢出时TF1置位。
在方式0和方式1中,计数计满溢出后,使 其值为0。在循环定时或计数应用中,必须反 复预置计数初值,不仅会影响定时精度,而且 给程序设计带来不便。
8.1.2.3 方式2
计数满后自动装入计数初值。
温度
保温5分钟 淬火 开始定时 回火3小时
开始定时
清洗
空冷
实际控制可以由单片机定时发出信号控制自动完成整 个工艺过程。
2.计数功能: 对外界发生的事件计数(输入脉冲),当达到程序 规定的计数值时,输出一脉冲信号,申请中断。 例如一啤酒生产线,如下图所示
光电信号 计 数 24 瓶 24瓶装完申请中断 转入中断服务程序装箱
(2)计算计数初值 因为:(216-X)×2×10-6 = 10-1 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=0B0H (3)10次计数的实现 采用循环程序法。 (4)程序设计 参考程序 :
ORG
RESET: LJMP ORG LJMP ORG
0000H
MAIN 000BH 1000H ;上电,转主程序入口MAIN ;T0的中断入口
方波的周期用T0来确定,让T0每隔1ms计数溢出1次 (每1ms产生一次中断),CPU响应中断后,在中断服 务程序中对P1.0取反。 (1)计算初值X 设初值为X,则有: (216-X)×2×10-6=1×10-3 216-X=500 X=65036
X化为16进制,即X=FE0CH=1111111000001100B。
ET0
;允许T0中断
EA ;CPU开放中断 HERE ;等待中断 TL0,#0B0H ;T0中断子程序,重装初值 TH0,#3CH ; B,LOOP TR0 ;1s定时时间到,停止T0工作
2、方式2的应用 省去程序中重装初值的指令,并可 产生相当精确的定时时间。 例 当T0(P3.4)引脚上发生负跳变时, 从P1.0引脚上输出一个周期为1ms的方波, 如图所示。(系统时钟为6MHz)
8.1 MCS-51的定时器
两个可编程的定时器/计数器T1、T0。 2种工作模式: (1)计数器工作模式 (2)定时器工作模式 4种工作方式(方式0-方式3)
定时脉冲信号 外部事件信号
定时 +1记数器 计数 计数初值 计数溢出
1、计数原理
对外部事件进行计数。 1)预先装入一个计数初值。
2)每来一个外部脉冲输入,记数器+1。
问题/知识点
1. T0/T1 有哪几种工作模式? 2. 方式1、2 各有什么突出特点? 3. T0/T1 的计数信号来源于何处? 4. 对外部信号计数时的最高允许频率为多少? 5. 如何启动T0/T1 定时或计数? 6. TF0、TF1 在什么情况下会自动置1?何时 会自动清零? 7. 相关的SFR 有哪几个?
8.1.3 定时器/计数器的编程和应用
4种工作方式中,方式0与方式1基本相 同,由于方式0是为兼容MCS-48而设,初 值计算复杂,在实际应用中,一般不用方 式0,而采用方式1。
8.1.3.1 计算初值的计算
• 1、定时方式下的计数初值
• 定时时间 •
• 或者
12 t (2 x ) f osc
;转主程序 ;T0的中断入口 ;转T0中断处理程序IT0P ;设堆栈指针 ;设置T0为方式1
ACALL HERE: AJMP PT0M0: MOV MOV SETB SETB SETB RET ITOP: MOV MOV CPL RETI
PT0M0 HERE TL0,#0CH TH0,#0FEH TR0 ET0 EA
M1、M0=10 ,等效框图如下:
THx作为常数缓冲器,当TLx计数溢出时,在置“1”溢出标 志TFx的同时,还自动的将THx中的初值送至TLx,使TLx从 初值开始重新计数。
定时器/计数器的方式2工作过 程如图(X=0,1)。 初始化时,将初值分别 付给THx和TLx。
省去用户软件中重装初值的程序,精确的 定时。 定时器作串口波特率发生器时,常选用定 时方式2。
12 fosc
8.1.1 定时器/计数器的控制
TMOD:选择定时器/计数器T0、T1的工作模式和工 作方式。 TCON:控制T0、T1的启动和停止计数,同时锁存T0、 T1的状态。
系统复位时,TMOD和TCON的所有位清0
用户可用软件 对TMOD和 TCON进行写 入和更改。
8.1.1.1 定时器/计数器控制寄存器TCON
(1)GATE——门控位 0:以TRx(x=0,1)来启动定时器/计数器运行。 1:用外中断引脚(/INT0或/INT1)上的高电平和 TRx来启动定时器/计数器运行。 (2) C/T*——计数器模式和定时器模式选择位 1:计数方式,计数脉冲从外部引脚引入。 T0-P3.4 T1-P3.5 0:定时器方式,计数脉冲为内部脉冲。 脉冲周期=机器周期
TR0 ;接通T0 TH0,#0FEH ;T0置初值 TL0,#0CH TF0,LOOP1 ;查询TF0标志 TF0 ;T0溢出,清TF0 P1.0 ;P1.0的状态求反 LOOP
例 假设系统时钟为6MHz,编写定时器T0产生 1秒定时的程序。
(1)T0工作方式的确定 定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512s。 选方式1,每隔100ms中断一次,中断10次为1s
输送带
★ 定时器(Timer)与计数器(Counter)的区别 ★ 定时计数器在单片机应用系统中的地位和作用 时间基准、延时、电子音乐、电机速度控制 工业测量(电机速度、产量、信号频率、脉冲宽度) ★ 51 系列单片机片上定时计数器的基本特性: 可编程(3 个方面): 1)位数 2)启动方式 3)定时/计数方式 ★其它计数器: 74LS161、163、160、162 (不可编程)
第八章 定时计数器及其应用
第八章 定时计数器及其应用 • 8.0 引言 • 8.1 T0/T1的基本结构和工作方式 • 8.2 定时器的应用
8.0 引言
一、定时器计数器的功能:
1.定时器的功能:定时发出脉冲信号,向CPU申请中断,其定时 间隔的长短及起始控制的时间均可由程序控制。
例如某机械零件的热处理工艺曲线为:
(2) T1工作在方式1
0~7
(3) T1工作在方式2
回顾
1. T0/T1 有哪几种工作模式? 2. 方式1、2 各有什么突出特点? 3. T0/T1 的计数信号来源于何处? 4. 对外部信号计数时的最高允许频率为多少? 5. 如何启动T0/T1 定时或计数? 6. TF0、TF1 在什么情况下会自动置1?何时 会自动清零? 7. 相关的SFR 有哪几个?
(3)M1、M0——工作方式选择位 M1 M0 工 作 方 式 0 0 方式0,13位定时器/计数器。 0 1 方式1,16位定时器/计数器。 1 0 方式2,8位常数自动重新装载 1 1 方式3,仅适用于T0,T0分成两个8 位计数器,T1停止计数。
8.1.2
定时器/计数器的4种工作方式
8.1.2.1 定时工作方式0 M1、M0为00 ,定时器/计数器的框图:
所以,T0的初值为: TH0=0FEH TL0=0CH (2)初始化程序设计
主程序
中断服务程序
对寄存器IP、IE、TCON、TMOD的相应位进行 正确设置,将计数初值送入定时器中。 (3)程序设计 中断服务程序除产生方波外,还要注意将计数初 值重新装入定时器中,为下一次中断作准备。 参考程序:
ORG RESET: AJMP ORG AJMP ORG MAIN: MOV MOV 0000H MAIN 000BH IT0P 0100H SP,#60H TMOD,#01H
n
8.1.3.2 初始化编程
定时/计数器初始化基本步骤
1)根据定时时间或计数要求,确定计数初值
2)确定工作方式,写控制字到TMOD
3)预置定时或者计数的初值x
4)根据需求开放定时器/计数器的中断 5)启动定时器/计数器
8.1.3.3 应用举例
1、方式1应用 例:假设系统时钟频率采用6MHz,要在P1.0上输出一 个周期为2ms的方波,如图所示。
TL计满溢出向TH进位。 13位计满溢出时TF1置位。
方式0——13位的计数器 C/T* 位决定工作模式: 0:开关打在上面,为定时器工作模式; 1:开关打在下面,为计数器工作模式,计数脉冲为 P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳 变时,计数器加1。 GATE位:决定定时器/计数器的运行是取决于TRx一个条件 还是TRx和INTx*引脚两个条件。 GATE=1 TR1=1时由/INT1信号控制计数脉冲的接通 或断开。常用于测量外部输入信号的脉冲宽度。
IT0P ;转T0中断处理程序IT0P
MAIN: MOV
MOV
SP,#60H
B,#0AH
;设堆栈指针
;设循环次数10次
MOV
MOV MOV
TMOD,#01H ;设T0工作在方式1
TL0,#0B0H ;给T0设初值 TH0,#3CH
SETB TR0
;启动T0
SETB
SETB HERE: SJMP ITOP: MOV MOV DJNZ CLR LOOP: RETI
n
t (2 x ) T
n
计数初值:
f osc x 2 t 12 t n x2 T
n
方式0:n=13
方式1:n=16 方式2:n=8
计数方式下的计数初值
在计数方式下,可分为两种情况: 1、已知计数脉冲的个数C
x M C 2 C
n
2、未知计数脉冲来使用定时器
SETB TR1 SETB TR0 CLR CLR JBC TR1 TR0 TF1,L1;查询TF1,为1则转向L1且TF1清零。
8.1.1.2
工作方式控制寄存器TMOD
TMOD的字节地址为89H,不能按位寻址, 只能用字节传送指令来设置。 8位分为两组,高4位控制T1,低4位控制T0。
(1)工作方式选择 T0为方式1计数,初值 0FFFFH,即外部计数输入 端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢 出标志TF0置“1”,发中断请求。在进入T0中断程 序后,把F0标志置“1”,说明T0脚已接收了负跳变 信号。 T1定义为方式2定时。在T0脚发生一次负跳变后,
启动T1每500s产生一次中断,在中断服务程序 中对P1.0求反,使P1.0产生周期1ms的方波。 (2)计算T1初值 设T1的初值为X: 则 (28-X)×2×10-6=5×10-4 X=28-250=6=06H (3)程序设计 ORG 0000H RESET: LJMP MAIN ;复位入口转主程序 ORG 000BH JMP IT0P ;转T0中断服务程序
3)记数器计满回零,产生溢出中断请求。
N Nc x
计数值 当前值
初值
2、定时原理
对周期性的定时脉冲进行计数。 1)预先装入一个计数初值。 2)周期性+1记数。 3)记数器计满回零,产生溢出中断请求。
t ( M x)
定时时间 记数器的模 初值 计数脉冲的周期
MCS-51单片机的定时 1 fosc 脉冲频率为系统晶振频率的 T 12 12分频,即一个机器周期。
;调用子程序PT0M0 ;自身跳转 ; ;启动T0 ;允许T0中断 ;CPU开中断
TL0,#0CH ;T0中断服务子程序,T0置初值 TH0,#0FEH P1.0 ;P1.0的状态取反
查询方式的参考程序:
MOV
SETB LOOP: MOV MOV LOOP1:JNB CLR CPL SJMP
TMOD,#01H ;设置T0为方式1
低4位与外部中断有关,已介绍。高4位的 功能如下: (1) TF1、TF0——计数溢出标志位 (2) TR1、TR0——计数运行控制位 1:启动定时器/计数器工作 0:停止定时器/计数器工作
标志位
计满溢出时,单片机内部硬件对TF0(TF1) 置“1”。 中断方式:作为中断标志位。在响应中断转 向中断服务程序后,由硬件自动对TF清“0”。 查询方式:作为定时器状态位以供查询。查 询有效后以软件及时将该位清“0”。