单片机 第五章2 单片机的定时器计数器
单片机定时器计数器教学课件

单片 机开 发板
如Keil、IAR等,用于编
电
译和烧录程序到单片机
脑
中。
编
用于搭建定时器计数器
程
电路。
软
件
杜
用于编写和调试程序。
邦
线
用于连接单片机引脚和 实验设备。
电阻 、电 容等 电子 元件
实验步骤与操作
5. 实验操作
根据实验要求,操作单片机开发板,观察 定时器计数器的运行状态和输出结果,记 录实验数据。
功能
定时器计数器在单片机中主要实 现定时、计数、产生中断等功能 ,是单片机应用中不可或缺的模 块。
工作原理
工作方式
定时器计数器通常采用计数或计时的 方式工作,通过内部或外部信号的输 入进行计数或计时。
工作流程
定时器计数器接收到启动信号后开始 工作,当计数值达到预设值时,产生 相应的中断或输出信号。
自动化控制
在生产线中,单片机定时器计数 器可以用于控制机械臂的运动、 物料传送等,实现自动化生产。
精确计时
在工业控制中,单片机定时器计数 器可以用于精确计时,如控制设备 的运行时间、报警触发等。
数据采集
单片机定时器计数器可以用于采集 生产过程中的各种数据,如温度、 压力、流量等,为生产管理提供数 据支持。
单片机定时器计数器教学课件
contents
目录
• 单片机定时器计数器概述 • 单片机定时器计数器的应用 • 单片机定时器计数器的编程 • 单片机定时器计数器的实验 • 单片机定时器计数器的案例分析
01
单片机定时器计数器概述
定义与功能
定义
单片机定时器计数器是一种用于 产生时间间隔或计数的硬件设备 ,常用于控制和测量时间。
认识单片机的定时器计数器

void main(void) { TMOD=0x01;
TH0=-25000/256; TL0=-25000%256; TR0=1; ET0=1; EA=1; while(1); } void timer0(void) interrupt 1 { TH0=-25000/256;
TL0=-25000%256; P10=~P10; }
根据定时时间T,及公式(1)、(2)分别可以求出初 值N为:
方式1: N=216-T×fosc/12
(3)
方式2、方式3 :N=28-T×fosc/12 (4)
如果fosc=12MHZ,以上公式可简化为
方式1: N=216-T
方式2、方式3 :N=28-T
例如:系统的时钟频率是12MHz,在方式1下,如果希望定时 器/计数器T0的定时时间T为10ms,则初值N =216-T=6553610000=55536
任务一、认识单片机的定时器/计数器
一、定时器/计数器及其应用 在单片机应用系统中,定时或计数是必不可少的。例如: 测量一个脉冲信号的频率、周期,或者统计一段时间里 电机转动了多少圈等。常用的定时方法有:
1、软件定时 软件定时是依靠执行一段程序来实现的,这段程序本身 没有具体的意义,通过选择恰当的指令及循环次数实现 所需的定时,由于执行每条指令都需一定的时间,执行 这段程序所需总的时间就是定时时间。 软件定时的特点是无需硬件电路,但定时期间CPU被占 用,增加了CPU的开销,因此定时时间不宜过长,而且 定时期间如果发生中断,定时时间就会出现误差。
led=_crol_(led,1); 满10次变量led左移1位送P0口
P0=led;
}
}
[案例3] 用定时器的计数方式实现外部中断。如图 所示,P0口控制8只发光管轮流点亮,发光管点 亮时间为500ms,单脉冲电路控制发光管的移动 方向,按下单脉冲按钮,发光管左移,再按下发 光管右移 。
MCS-51单片机的定时器计数器

1. 定时器T0/T1 中断申请过程
(1)在已经开放T0/T1中断允许且已被启动的前提下, T0/T1加1计满溢出时 TF0/TF1标志位自动置“1” ;
(2)CPU 检测到TCON中TF0/TF1变“1”后,将产生指 令:LCALL 000BH/LCALL 001BH 执行中断服务程序;
(3)TF0/TF1标志位由硬件自动清“0”,以备下次中断申
郑州大学
docin/sundae_meng
(3)工作方式寄存器TMOD
T1
T2
GATE C / T M1 M0 GATE C / T M1 M0
M1,M0:工作方式选择位 。
=00:13位定时器/计数器; =01:16位定时器/计数器(常用); =10:可自动重装的8位定时器/计数器(常用); =11:T0 分为2个8位定时器/计数器;仅适用于T0。 C/T :定时方式/计数方式选择位。 = 1:选择计数器工作方式,对T0/T1引脚输入的外部事件 的负脉冲计数; = 0 :选择定时器工作方式,对机器周期脉冲计数定时。 如下页图所示。
CPL P1.0 MOV TH0,#15H MOV TL0,#0A0H
START:MOV SP,#60H MOV P1,#0FFH
SETB TR0 POP PSW
MOV TMOD,#01H MOV TH0,#15H MOV TL0,#0A0H
POP ACC RETI END
SETB EA
Байду номын сангаас
SETB ET0
定时器/计数器0采用工作方式1,其初值为:
21650ms/1s=6553650000=15536=3CB0H
电路图如下:
郑州大学
docin/sundae_meng
第5章AT89S52定时器计数器

图5-2 TMOD格式
8位分为两组,高4位控制T1,低4位控制T0。 TMOD各位的功能。 (1)GATE———门控位。
0:仅由运行控制位TRx(x = 0,1)来控制定时器/计数器运 行。
1:用外中断引脚( INT0*或 INT1*)上的电平与运行控制 位TRx共同来控制定时器/计数器运行。
9
5
5.1 定时器/计数器的结构 定时器/计数器T1、T0结构如图5-1所示,T0由特殊功能
寄存器TH0、TL0构成,T1由特殊功能寄存器TH1、TL1构成。
图5-1 定时器/计数器T0、T1结构框图
6
具有定时器和计数器2种工作模式,4种工作方式(方式0、 方式1、方式2和方式3)。属于增1计数器。
定时器/计数器T0分为两个独立的8位计数器TL0和TH0, TL0使用T0的状态控制位C/T*、GATE、TR0、TF0 ,而TH0
23
被固定为一个8位定时器(不能作为外部计数模式),并使用 定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断 请求源TF1。 2.T0工作在方式3时T1的各种工作方式
P1.0输出;T2OE=0,禁止定时时钟从P1.0输出。 DCEN(D0):计数方式选择。DCEN=1,T2的计数方式
由P1.1引脚状态决定。P1.1=1,T2减计数,P1.1=0,T2加 计数;DCEN=0,计数方式与P1.1无关,同T1和T0一样,采 用增1计数。
31
2. 特殊功能寄存器T2CON T2的功能选择由特殊功能控制寄存器T2CON来设定,
(2)M1、M0——工作方式选择位 M1、M0共有4种编码,对应于4种工作方式的选择,如
表6-1所示。
10
(3)C/T*—计数器模式和定时器模式选择位 0:为定时器工作模式,对单片机的晶体振荡器12分频后的
单片机计数器,定时器工作原理_

模= 1FFFH+1
=2 13
TL0低5位
1
1
1
1
1
1
0
0
X X X 1
1
1
0
0
用指令装入初值: MOV TH0,#0FCH; MOV TL0,#1CH;(xxx用‘0’填入) 方式1 (16位方式): 初值=(-64H)=10000H-64H=FF9CH 用指令装入计数初值: MOV TH0,#0FFH MOV TL0,#9CH
5-24
中断方式 ORG 0000H AJMP MAIN ;单片机复位后从0000H开始执行 ORG 001BH ;T1中断入口 AJMP TIME1 ;转到T1 中断服务程序
ORG 0030H ;主程序 MAIN:MOV A,#01H MOV P1,A ;置初值,第一个LED亮 MOV TMOD,#10H ;T1工作于定时方式1 MOV TH1,#3CH MOV TL1,#0B0H ;定时100ms SETB EA SETB TR1 SETB ET1 WAIT:SJMP WAIT ;中断总允许 ;启动T1工作 ;允许T1中断 ;等待中断
这种情况下,T1仍可工作于方式0、1、2,但不能使用中 断方式。 只有将T1用做串行口的波特率发生器时,T0才工作在方式 3,以便增加一个定时器。
5-16
4、方式3 M1M0=11
1/12fosc
K °
仅适用于T0
定时/计数器0(方式3):2个8位计数器。
振荡源 ÷ 12 C/ T=0 ° S ° C/ T=1 ≥1 °
5-22
分析 : 利用T1完成100ms的定时,当P1口线输出‘1’时, 发光二极管亮,每隔100ms,‘1’左移一次。
定时器计数器的功能

志TF0的同时,自动将TH0中所装的原初始常数送TL0,使TL0从
原初始常数开始重新计数。
FFFFH时 2μs
•.定时间初隔和始计数化的范时围:在以6TMHLZ晶0振、为例TH0中装入同样的初始常数,TH0即记忆了该
初MCPOLV始PT1.L0常, #数0CH,因; 此在中断服务程序中不必重装时间常数,省去了重装
T1
T0
GATE C/T M1 M0 GATE C/T M1 M0 字节地址89H
GATE:门控位
C/T: 1 计数 0 定时
M1 M0:00 方式0 01 方式1 10 方式2 11 方式3
3
2.定时器控制寄存器 TCON 字节地址88H 可位寻址
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
11110000 00001100 TH0=F0H TL0=0CH 即共加500次,每次耗费2μs,共耗费时间1ms
8
②讨论计数方式: 例如前述的啤酒生产线,计数24瓶中断转入装箱程序。 选T1方式0计数,TMOD的高4位为: 0 1 0 0 初始常数X的计算:
213 - X =24 X=8192 - 24=8168 8168=1FE8H 00011111 11101000B
T即H1 每= 9EH隔T1L12=/5f8H加1
T1
T0
MOV TH0, #0FAH
例如一啤酒生产线,如下图所示
首先计数器清零,在正脉冲开始时,
在正脉冲结束的下降
216 ×2×10-6 =65536 ×2×10-6 =131.
213 - X =24
1
关于定时器的小结与补充:
ORG 001BH
高电平1ms
11111111 00001000 TH1=FFH TL1=08H 加24次即溢出中断。程序如下:
单片机定时器与计数器的区别

单片机定时器与计数器的区别在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,两者的区别是什么呢?下面就跟着店铺一起来看看吧。
单片机计数器与定时器的区别计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。
当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。
在定时器和计数器中都有一个溢出的概念,那什么是溢出了。
呵呵,我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。
同样的道理,假设水龙头的水是一滴滴的往碗里滴,那么总有一滴水是导致碗中的水溢出的。
在碗中溢出的水就浪费了,但是在单片机的定时计数器中溢出将导致一次中断,至于什么是中断我们下次再讲,这里只是初步的提下概念,中断就是能够打断系统正常运行,而去运行中断服务程序的过程,当服务程序运行完以后又自动回到被打断的地方继续运行。
在定时器计数器中,我们有个概念叫容量,就是最大计数量。
方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。
把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。
在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。
假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。
问题1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想象,如果拿一个空碗去接水,那么还是得要100滴水才能溢出,但是如果我们拿一个已经装有水的碗拿去接,那就不用100滴了。
到此我们可以算出,要使10滴水让碗中的水溢出,那么碗中就先要装90滴水。
在定时计数器中,这90滴水就是我们所谓的初始值。
问题2,在一个车间我们如何利用单片机对100件产品进行计件,并进行自动包装呢?我们可以利用计数器计数100,在中断中执行一个自动包装的动作就可以了。
《单片机原理及应用》第5章 定时器及应用

计数工作方式
通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。 当输入脉冲信号产生由1至0的下降沿时定时器的值加1。 CPU检测一个1至0的跳变需要两个机器周期,故最高计 数频率为振荡频率的1/24。 为了确保某个电平在变化之前被采样一次,要求电平保持 时间至少是一个完整的机器周期。 对输入脉冲信号的基本要求如图5-2所示。
外部事件
计数电路 时间单位脉冲 单片机 计数完成信号
5.2 89C51定时器概述
• 89C51有两个16位的定时器/计数器,即定时器0(T0)和 定时器1(T1)。它们实际上都是16位加1计数器。 • T0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1 和TL1构成。
• 每个定时器都可由软件设置为定时工作方式或计数工作方
• 例:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个 500μs的同步脉冲。请编程序实现该功能。查询方式, fosc=6MHz。
解:(1)模式选择 选T0为模式2,外部事件计数方式。当P3.4引脚上的电平发生 负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为 500μs定时工作方式,并使P1.0输出由1变为0。T0定时到产生 溢出,使P1.0输出恢复高电平,T0又恢复外部事件计数方式。
T0的低5位:01100B=0CH即(TL0)=0CH T0的高8位:11110000B=F0H即(TH0)=F0H
(2)计算最大定时时间T
T0的最大定时时间对应于初值为0. 则:T=213×1/6 × 10-6×12=16.384ms
例2:利用T0的工作模式0产生1ms定时,在P1.0引脚输出 周期为2ms的方波。设单片机晶振频率fosc=12MHz。编 程实现其功能。 解:要在P1.0引脚输出周期为2ms的方波,只要使P1.0每隔 1ms取反一次即可。 (1)选择工作模式 T0的模式字为TMOD=00H,即 M1M0=00,C/T=0,GATE=0,其余位为0。 (2)计算1ms定时时T0的初值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
若晶振频率为6MHz,1个机器周期为1/6 x 10-6 x12=2μs 则最小定时时间为:[213 –(213 -1)]x2μs=2μs 最大定时时间为:[213 –0] x2μs=16384μs =16.384ms
2、 方式1 (T1,T0) 当M1M0两位为 01时,定时 /计数器被选为工作方式 1,16位计数器,其逻辑结构 如图 所示。
8FH TCON TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
TF1(TCON.7, 8FH位)----定时器T1中断请求溢出标志位。 TF0(TCON.5, 8DH位)----定时器T0中断请求溢出标志位。 TR1(TCON.6, 8EH位)----T1运行控制位。 0:关闭T1;1:启动T1运行。只由软件置位或清零。 TR0(TCON.4, 8CH位)----T0运行控制位。 0:关闭T0;1:启动T0运行。只由软件置位或清零。
1、 方式0 (T1,T0)
当 M1M0两位为 00时,定时 /计数器被选为工作方式 0, 13位计数器,其逻辑结 构如图所示。
振荡器 ÷12 C/ T = 0 TL0 低5位 C/ T = 1 控制 T0 端 TR0 GATE INT0 端 TH0 高8 位 TF0 中断
+
在方式0下,计数工作方式时,计数值的范围是: 1~8192(213 ) 定时工作方式时,定时时间的计算公式为: (213一计数初值)×晶振周期×12 或(213一计数初值)×机器周期
例4:用定时器l 以工作方式2计数,每计100次进行累计器加1操作.
(1)计算计数初值. 28—100=156D=9CH TH1=9CH,TL1=9CH TMOD寄存器初始化:MlM0=10,C/T=1,GATE=0 因此 TMOD=60H (2)程序设计序设计
例3:使用定时器0以工作方式2产生100μs定时,在P1.0输出周期为200μs
的连续方波。已知晶振频率fosc=6MHz。
(1) 计算计数初值 6MHz晶振下,一个机器周期为2μs,以TH0作重装载的预置寄存器,TL0作8位计数器,假 设计数初值为x。则: (28—x)×2μs=100μs 求解得: X=206D=11001110B=CEH 把CEH分别装入TH0和TL0中: TH0=CEH,TL0=CEH TMOD寄存器初始化 (2)定时器/计数器0为工作方式2,MlM0=10;为实现定时功能 C/T=0; 依题意GATE=0; 定时器/计数器1不用,有关位设定为0。综上情况TMOD寄存器的状态应为02H。 (3)程序设计(查询方式) : MOV TMOD,#02H MOV TH0,#0CEH MOV TL0,#0CEH SETB TR0 LOOP: JBC TF0,LOOP1 SJMP LOOP LOOP1: CPL P1.0 SJMP LOOP
2.方式寄存器TMOD (不能进行位寻址,没有位地址)
TMOD
D7 GATE D6 C/T D5 M1 D4 M0 D3 GATE D2 C/T D1 M1 D0 M0
定时计数器1 C/T----定时器/计数器方式选择 位。
M1 M0 工作方式
定时计数器0
功 能 说 明 13位计数器 16位计数器 自动再装入8位计数器 定时器0:分成两个8位计数器 定时器1:停止计数
若晶振频率为6MHz ,1个机器周期为1/6 x 10-6 x12=2μs 则最小定时时间为: [216 –(216 -1)] x2μs=2μs
最大定时时间为: [216 –0] x2μs=131072μs =131.072ms
3、 方式2 (T1,T0) 当M1M0两位为 10时,定时/计数器被选为工作方式 2,自动重加载 8位计数器, 其逻辑结构如图所示。
MOV
SETB LOOP1: JBC
TL0,#0B0H
TR0 TF0,LOOP2
SJMP LOOP1 LOOP2:MOV MOV TL0,#0B0H TH0,#3CH
DJNZ R2,LOOP1 CPL MOV P1.0 R2,#20
SJMP LOOP1
在方式2下,计数工作方式时,计数值的范围是: 1~256(28 )
28-计数初值=计数的脉冲数
定时工作方式时,定时时间的计算公式为: (28一计数初值)×晶振周期×12 =定时时间
或(28一计数初值)×机器周期=定时时间
若晶振频率为6MHz, 1个机器周期为1/6 x 10-6 x12=2μs 则最小定时时间为: [28–(28 -1)] x 2μs=2μs
最大定时时间为: [28 –0] x 2μs=512μs
最大定时时间为:[28 –0] x 2μs=512μs
4、 方式3(T0) 当 M1M0 两位为 11 时,定时 /计数器被选为工作方式 3 ,只用于定时器 0, T0被 分成两个独立的8位计数器,其逻辑结构如图所示。
振荡器
÷12
1/12 fosc
1/12 fosc
C/ T = 0
TL0 (8位) TF0 中断
即采样计数脉冲需要2个机器周期,即24个振荡周期。
因此,计数脉冲的频率最高为振荡脉冲频率的 1/24
二、方式寄存器TMOD和控制寄存器TCON
8051设有定时/计数器应用相关的控制器,即两个8位专用寄存器TMOD和 TCON。定/计工作前,必须经过由CPU将一些命令写入定/计的初始化过程。
1.控制寄存器TCON
串行口
定时器T0 用作方式3时,T1仍可用于方式0~2结构 这时,仅用C/T来切换定时或计数。
TH1 (8位)
T1方式2
第三节
1~8192(213 )
定时/计数器应用
在方式0下,计数工作方式时,计数值的范围是:
213-计数初值=计数的脉冲数
定时工作方式时,定时时间的计算公式为: (213一计数初值)×晶振周期×12=定时时间
0:定时器;1:计数器。
GATE----外部门控位。 0:不用外部门,只将 TR0/TR1置1来启动定时器; 1:使用外部门,外部请求 信号INT0/INT1(高电平)和 TR0/TR1 (置1)共同来启动 定时器。
0 0 0 1 1 0 1 1
方式0 方式1 方式2 方式3
第二节 定时器/计数器的工作方式
在方式1下,计数工作方式时,计数值的范围是: 1~65536(216 ) 216-计数初值=计数的脉冲数 定时工作方式时,定时时间的计算公式为: (216一计数初值)×晶振周期×12 =定时时间 或(216一计数初值)×机器周期=定时时间
若晶振频率为6MHz ,1个机器周期为1/6 x 10-6 x12=2μs
T0 端
C/ T = 1
控制 TR0
GATE INT0 端 1/12 fosc
+ TH0 (8位) TR1 TF1 中断
定时器T0方式3结构
振荡器
÷12
C/ T = 0
TL1
C/ T = 1
TH1
串行口
(8/5位) (8位)
T1(P3.5) 振荡器
端 ÷12
T1方式0或1
C/ T = 0
TL1 (8位) C/ T = 1 控制 T1(P3.5) 端 重新装入
在方式2下,计数工作方式时,计数值的范围是: 1~256(28 )
定时工作方式时,定时时间的计算公式为:
(28一计数初值)×晶振周期×12 或(28一计数初值)×机器周期
若晶振频率为6MHz, 1个机器周期为1/6 x 10-6 x12=2μs
则最小定时时间为:[28–(28 -1)] x 2μs=2μs
设待求的计数初值为x,则: (216—x)×1μs =50000μs ,求解得: x=15536D=3CB0H。即TH0=3CH;TL0=B0H。 (2) TMOD寄存器初始化 TMOD=00000001B
(3)程序设计
START: MOV
MOV MOV
R2,#20
TMOD,#01H TH0,#3CH
或(213一计数初值)×机器周期=定时时间
若晶振频率为6MHz,1个机器周期为1/6 x 10-6 x12=2μs 则最小定时时间为: [213 –(213 -1)]x2μs=2μs 最大定时时间为: [213 –0] x2μs=16384μs =16.384ms
我们编程时,通常是求计数初值
例1:设单片机晶振频率Fosc=6MHz,使用定时器1以方式0产生周期为
TR1=1启动,TR1=0停止
(4)程序设计 MOV MOV MOV SETB LOOP1: JBC TMOD,#00H TH1,#0FEH TL1,#0EH TR1 TF1,LOOP2
SJMP
LOOP2: MOV P1
TL1,#0EH TH1,#0FEH TF1 P1.0 LOOP1
b.计数:
对外来脉冲进行计数。 T0(P3.4)和T1(P3.5)两个引脚,作为计数输入端。
外部输入的脉冲在出现从1到0的负跳变时有效,计数器 进行加1。
计数方式下,单片机在每个机器周期的S5P2拍节时对外 部计数脉冲进行采样。如果前一个机器周期采样为高电平,后 一个机器周期采样为低电平,即为一个有效的计数脉冲。在下 一机器周期的S3Pl进行计数。
则最小定时时间为:[216 –(216 -1)] x2μs=2μs 最大定时时间为: [216 –0] x2μs=131072μs =131.072ms
例2:设单片机晶振频率Fosc=12MHz,使用定时器0以方式1产生周期为
2S的等宽正方波脉冲,并由P1.0输出。以查询方式完成。
(1)计算计数初值
振荡器
÷12
C/ T = 0
TL0 TH0 (8位) (8位) C/ T = 1 控制 T0 端 TR0 GATE INT0 端 TF0 中断