第六章 定时计数器
单片机讲义1(第六章定时器计数器)
脚与T0的逻辑关系框图如下图所示。
定时器/计数器T0分为2 个独立的8位计数器:TL0和 TH0。 TL0使用T0的状态控制位 C/ T GATE、TR0、 INT0 ,而TH0被 固定为1个8位定时器(不能 为外部计数模式),并使用 定时器T1的状态控制位TR1 和TF1,同时占用定时器T1 的中断请求源TF1。
6.2.2 方式1
6.2.3 方式 2
6.2.4 方式 3
在方式3下,T1只作 波特率发生器。在这样 情况下,T1将TF1、TR1 资源出借给T0使用。因 此,在方式3下,T0可以 构成两个独立的计数器 结构,如图6-6(a)和 图6-6(b)所示。
TL0构成一个完整的8 位定时器/计数器,而 TH0则是一个仅能对 fOSC/12脉冲计数的8位 定时器。
(l)计算初值 初值的计算公式为: X 2 n
设:需要装入T0的初值为X,则有:
t f
osc
12
16
其中:n=13、16、8 (由计数器的的工作方 式来决定n 的取值)
∵X= 2
n
t . f osc 现 n 16 12
t 1 ms
f osc 6 M Hz
∴X= 2
∵ X= 2
n
t . f osc 12
现 n 16 f osc 6 M Hz t 100 ms
所以:X=15 536=3CB0H 因此:TH0=3CH, TL0=B0H
(3)10次计数的实现 对于中断10次计数,可使T0工作在定时方式,采用循环程序的方法实现。 (4)程序设计 ORG 0000H RESET:LJMP MAIN ;上电,转主程序入口MAIN 0RG 000BH ;T0的中断入口地址 LJMP IT0P ;转T0中断处理程序ITOP ORG 1000H MAIN: MOV SP,#60H ;设堆栈指针 M0V B,#0AH ;设循环次数10次
单片机原理及应用 第06章定时计数器
20
6.5 定时器/计数器的编程
初始化
1 根据要求给方式寄存器TMOD送一个方式控制 字,以设定定时器的工作方式; 2 根据需要给TH和TL选送初值,以确定需要的 定时时间或计数的初值; 3 根据需要给中断允许寄存器IE送中断控制字, 以开放相应的中断和设定中断优先级;
也可用查询方式来响应定时器。
JBC TF1,RP1 SJMP DEL2
30
6.6.4 长定时时间的产生
例 假设系统时钟为6MHz,编写定时器T0产生 1秒定时的程序。 (1)T0工作方式的确定 定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时16.384ms;
方式1最长可定时131.072ms; 方式2最长可定时512μs。 选方式1,每隔100ms中断一次,中断10次为1s。
8
6.3 定时/计数器的4种工作方式 方式0、方式1(13位、16位定时计数方式)
T1工作于方式0的等效框图(M1M0=00、01)
GATE=0、A=1、TR1=1 GATE=1、INT1=1、TR1=1。注意定时器初值与定时时间的不同
9
6.3.1 方式0、方式1的说明 定时/计数器T1工作在方式0时,为13位的计数器,由TL1 的低5位和TH1的8位所构成。TL1低5位溢出向TH1进 位,TH1计数溢出置位TCON中的溢出标志位TF1。 GATE位的状态决定定时/计数器运行控制取决于TR1 一个条件还是TR1和INT1引脚这两个条件。 当GATE=0时,A点电位恒为1,则只要TR1被置为1,B 点电位即为1,定时/计数器被控制为允许计数(定时/计 数器的计数控制仅由TR1的状态确定,TR1=1计数, TR1=0停止计数)。 当GATE=1时,B点电位由INT1输入的电平和TR1的状 态确定,当TR1=1,且INT1=1时,B点电平才为1,才 允许定时器/计数器计数(计数控制由TR1和INT1二个条 件控制)。 方式1时,TL1的8位都参与计数,因而属于16位 定时/计数器。其控制方式,等效电路与方式0完全相 10 同。
第6章AT89C51定时器计数器
所示 , 图中Tcy为机器周期。
图6- 12
6.4 定时器/计数器的编程和应用 4种工作方式中 ,方式0与方式1基本相同 , 由于方式0是为兼容
MCS-48而设 ,初值计算复杂 ,在实际应用中 ,一般不用方式 0 ,而采用方式1。 6.4. 1 方式1应用 例6- 1 假设系统时钟频率采用6MHz ,要在P1.0上输出一个周期 为2ms 的方波 ,如图6- 13所示。
M1 、M0=01 , 16位的计数器。
图6-5 6.2.3 方式2 计数满后自动装入计数初值。
M1 、M0= 10 ,等效框图如下:
图6-6
TLX作为常数缓冲器 , 当TLX计数溢出时 ,在置“ 1 ”溢出标志 TFX的同时 ,还自动的将THX中的初值送至TLX ,使TLX从初 值开始重新计数。
定时器/计数器的方式2工作过程如图6-7 (X=0, 1) 。
图6-7 省去用户软件中重装初值的程序 ,来精确定时。
6.2.4 方式3 增加一个附加的8位定时器/计数器 , 从而具有3个定时器/计数
器。
只适用于定时器/计数器T0 。T1不能工作在方式3 。 T1方式3时相当于TR1=0 ,停止计数(此时T1可用来作串行口
图6-8( a)
图6-8(b)
2. T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时 , T0才工作在方式3 。 T0为方式3时 , T1可定为方式0 、方式1和方式2 ,用来作为串
行口的波特率发生器 , 或不需要中断的场合。 ( 1)T1工作在方式0
图6-9
(2) T1工作在方式1
第06章 MCS-51单片机定时计数器
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 ;查询是否溢出
▪
第6章1 定时器和计数器PPT课件
那么计数器是如何作为定时器来用的呢?
一个闹钟,定时在 1个小时后闹响,换言之,也 可以说是秒针走了( 3600 )次,所以时间就转化 为秒针走的次数的,也就是计数的次数了,那么它们 的关系是什么呢?那就是秒针每一次走动的时间正好 是1秒。所以,只要计数脉冲的间隔相等,则计数值 就代表了时间的流逝 。
(3)计数初值寄存器
TH0
TL0
T0计数初值寄存器
TH1
TL1
T1计数初值寄存器
6.3 定时/计数器的工作方式 (1) 方式1 M0 M1为01——16位定时/计数器
震荡器
12
T1(P3.5)脚
TR1 GATE
C/T=0 C/T=1
1 2
K
控 制
3
TL1 TH1 (8位) (8位)
TF1
中断
INT1脚
main ()
{
TMOD = 0x01; //设置T0定时方式1(0000 0001B)
TR0=1;
//启动T0
for(;;){
TH0 = 0xfc; //装载计数初值
TL0 = 0x18;
do{ } while(!TF0); //等待TF0溢出
P1_0 =!P1_0; //定时时间到P1.0反相
TF0 = 0;
注意:方式0的TL0高3位未用,可填0 ,因此
a= 0110 0011 0001 1000 = 6318H
6
3
1
8H
01 10 0 0 1 1 0001 1 0 00
TH0
TL0
编程时将此初值装载到Tx中,例如: TH0 = 0x63; TL0 = 0x18;
(4)方式3
TH0+TF1+TR1组成的8位定时器 TL0+TF0+TR0组成的8位定时/计数器 T1组成的无中断功能的定时器 特点:方式3下T0可有2个具有中断功能的8位定时器 在定时器T0用作方式3时,T1仍可设置为方式0~2。
第6章 单片机的定时器计数器
T0(P 3.4)
T0 (8CH) (8AH)
TH0(8位) TL0 (8位)
7 0 7 0
T1 (8DH) (8BH)
TH1(8位) TL1 (8位)
7
0
7
0
CPU
溢 启 出 动 溢 出
启 动
工作方式 TMOD(89H)
工 作 方 式
TCON(88H)
定时/计数器逻辑结构
T0
2个16位T/C分别由8位计数器TH0、TL0、 TH1、TL1组成 “+1” 计数器 T1 控制寄存器TCON:控制T/C的启停、中断等
第6章 单片机的定时器/计数器
6.1 定时/计数器的结构与工作原理
6.2 定时器/计数器的控制
6.3 定时/计数器的工作方式
6.4 定时/计数器的编程和应用
实现定时一般有三种方法: 利用软件实现(延时程序); 优点:简单,控制方便;缺点:CPU效率低。 硬件实现,专门设计一个单稳态定时器: 优点:CPU效率高;缺点:修改参数麻烦。 利用计数器实现 1us 输入脉冲 计算机一般利用第三种方法实现 8位 计数器 预置数 256us 溢出
控制T0
GATE C/T M1 M0 0 0 0 1
查 询 方 式
#include <reg51.h> sbit P1_0=P1^0; void main (void) { TMOD=0x01; //定时器0方式1 TR0=1; for( ; ; ) { TH0=(65536-1000)/256; //置计数初值 TL0=(65536-1000)%256; while(!TF0); //查询等待TF0复位 P1_0=!P1_0; //定时时间到P1.0反相 TF0=0; //软件清TF0 } }
第6章定时计数器
6.4.4 定时 计数器的4种工作方式 定时/计数器的 种工作方式 计数器的
方式0 (1) 方式0 M1、M0为00 ,定时器/计数器的框图: M1、M0为 定时器/计数器的框图:
图6-16
决定工作模式: 为13位的计数器 ,C/T* 位决定工作模式: 13位的计数器 0:开关打在上面,为定时器工作模式; 开关打在上面, 定时器工作模式; 工作模式 1:开关打在下面,为计数器工作模式,计数脉冲为 开关打在下面, 计数器工作模式, 工作模式 P3.4、P3.5引脚上的外部输入脉冲, P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变 引脚上的外部输入脉冲 时,计数器加1。 计数器加1 GATE位:决定定时器/计数器的运行取决于TRx一个条件还是 GATE位 决定定时器/计数器的运行取决于TRx一个条件还是 运行取决于TRx TRx和 引脚两个条件。 TRx和INTx*引脚两个条件。 (1)0:A点(见图6-2)是否计数,仅取决于TRx的状态。 见图6 是否计数,仅取决于TRx的状态。 TRx的状态 点电位由INTX 的输入电平和TRX TRX的状态这两个条 ( 2 ) 1 : B 点电位由 INTX* 的输入电平和 TRX 的状态这两个条 件来确定。是否计数是由TRx和 二个条件来控制的。 件来确定。是否计数是由TRx和INTx*二个条件来控制的。 TRx 计数器溢出后停止计数,直到新的初值送达。 计数器溢出后停止计数,直到新的初值送达。
X= 为1CH)
213
- 100=8092=1F9CH=1111110011100B(前八位为FCH,后五位
即TH0应设为FCH,TL0应设为1CH。
2.定时器方式 若时钟振荡器频率为fosc,计数器位数为n,定时时间为t秒,则时间 常数: X=
第6章 定时计数器及应用
● 教学目标
介绍定时/计数器的结构和原理 介绍定时/计数器的四种工作方式的应用 介绍定时/计数器时应注意的几个问题
● 学习要求
了解定时/计数器的结构 熟悉定时/计数器的工作原理 掌握定时/计数器的初始化及应用程序设计 掌握定时/计数器精确定时要采取的相应措施
6.1 MCS-51定时/计数器概述
TE
INTX
图6-1 定时/计数器T0或T1的结构原理图
6.1.2定时器/计数器的工作原理
由图6-1可见,定时/计数器的核心是一个加1计数器, 每输入一个脉冲,计数值加1,当计数到计数器全为1 时,再输入一个脉冲就使计数值回零,同时从最高位 溢出一个脉冲使控制寄存器TCON的TFX(X=0或1)位 置1,作为计数器的溢出中断标志。加1计数器由两个 8位特殊功能寄存器TH X 和TL X(X=0或1)组成,它们 可以被程控为不同的组合状态(13位、16位、两个分 开的8位等),从而形成定时/计数器的四种工作方式。 加1计数器计数工作的启动和停止由相应的电路控 制,方式寄存器TMOD的GATE位为0时,由寄存器 TCON的TR X(X=0或1)位启动(这时TR X=1)或停止(这 时TR X=0);GATE位为1,且TR X(X=0或1)为1时,由 中断引脚INT X(X=0或1)的外部信号电平启动(这时INT X=1)或停止(这时INT X=0)。
例6-1 利用T0方式0产生宽度为2μ s,周期为2ms的定时 负脉冲,由P1.7送出,系统采用12MHz的晶振。
解 由于晶振为12MHz,机器周期为1μ s,这样利用T0方式0产生周期 为2ms定时的初值X为:
X =N-t/T =213-2×10-3/(1×10-6) =8192-2000 =6192 =1830H =1100000110000B 则TH0=11000001B=0C1H,TL0=00010000B=10H
第六章定时器计数器08精品PPT课件
TL1 TH1 (8位) (8位)
TL1
(8位)
TH1
(8位)
方式0和方式1:13位和16位的计数器模式。
➢ 启动后,从某一个初值的基础上进行“加一”计数。当“全 1”时再来一个计数脉冲,计数器就会产生一个“溢出”即 TF=1,此时计数器本身为“全零”。
➢ 如果需要重复性的完成某一值的定时或计数,需要在每一次 计数前不断的重新预装初值,称之为“软件重装初值”。
方式2:8位计数器的模式。 ➢ 8位计数器的模式,定时或计数的范围远远小于模式0和模式1;
➢ 具备初值“硬件自动重装”功能,适合进行重复性定时的场合, 如产生连续方波信号等。编程中省去软件重装初值的麻烦 ;
➢ TL做计数器,TH做初值寄存器,工作前TL1,TH1分别预置相同 的初值。
方式3:拆分、组合模式。
GATE C/T M1 M0 GATE C/T M1
TCON 定时器/计数器控制寄存器 88H
TF1 TR1 TF0 TR0 IE1 IT1
IE0
中断
M0 IT0
IT00 P3.2 INT0
1 P3.4 T0
IT01 P3.3 INT1
1
P3.5 T1
P3.1 TX P3.0 RX
TCON
IE0
TF0
IE0/IE1和IT0/IT1:用于管理外部中断。
2、TMOD: 定时器/计数器工作方式控制寄存器 89H
GATE C/T M1 M0 GATE C/T M1 M0
M1 M0:工作方式选择位 。 0 0 :13位定时器/计数器; 0 1 :16位定时器/计数器(常用); 1 0 :可自动重装的8位定时器/计数器(常用); 1 1 :T0 分为2个8位定时器/计数器;仅适用于T0。
第6章 计数器和定时
+1计数器
溢出
中断
控制 开关
计数原理——定时器 单片机内部脉冲每输入一个脉冲,计数器加1,当 加到计数器各位都为1时,再输入一个脉冲,计数 器各位全变为0,溢出,中断标志置1(SFR中 TCON的TF0、TF1),从而向CPU申请中断。 由预置计数值就可以算出从加1计数器启动到计满 溢出所需的时间,即定时时间。 8位28 = 256;13位213 = 8192;16位 216 = 65536
可编程定时/计数器。
6.1 定时/计数技术概述
在单片微机应用系统中,常常会需要定时或计数,通常采用以 下三种方法来实现: 1.硬件法 硬件定时功能完全由硬件电路完成,不占用 CPU 时间。但 当要求改变定时时间时,只能通过改变电路中的元件参数来实 现,很不灵活。 2.软件法 软件定时是执行一段循环程序来进行时间延时,优点是无 额外的硬件开销,时间比较精确。但牺牲了CPU的时间,所以软 件延时时间不宜长,而在实时控制等对响应时间敏感的场合也 不能使用。
8E
TF0
8D
TR0
8C
IE1
8B
IT1
8A
IE0
89
IT0
88
• 8位寄存器,可位寻址 • 低4位用于外部中断INT0、INT1控制 • 高4位用于T0、T1控制
3、定时/计数器控制寄存器TCON
TCON
位地址
TF1
8F
TR1
8E
TF0
8D
TR0
8C
IE1
8BIT18A NhomakorabeaIE0
89
IT0
88
• TR0(TCON.4):T0的运行控制位 当GATE=0时,TR0=0则T0停止运行;TR0=1时 T0允许运行 • TF0(TCON.5):T0溢出兼中断申请标志
单片机定时器,计数器
第六章定时器/计数器第一节概述8051内部提供两个十六位的定时器/计数器T0和T1,它们既可以用作硬件定时,也可以对外部脉冲计数。
1.计数功能:所谓计数功能是指对外部脉冲进行计数。
外部事件的发生以输入脉冲下降沿有效,从单片机芯片T0(P3.4)和T1(P3.5)两个引脚输入,最高计数脉冲频率为晶振频率的1/24。
2.定时功能:以定时方式工作时,每个机器周期使计数器加1,由于一个机器周期等于12个振荡脉冲周期,因此如单片机采用12MHz晶振,则计数频率为12MHz/12=1MHz。
即每微秒计数器加1。
这样就可以根据计数器中设置的初值计算出定时时间。
第二节定时器/计数器的基本结构、工作方式及应用一、定时器/计数器基本结构定时器/计数器的基本结构如图6-1。
T0由TH0和TL0两个八位二进制加法计数器组成十六位二进制加法计数器;T1由TH1和TL1两个八位二进制加法计数器组成十六位二进制加法计数器。
图6-1 定时器/计数器基本组成110二、定时器/计数器控制寄存器1.定时器方式控制寄存器TMOD定时器方式控制寄存器地址89H,不可位寻址。
TMOD寄存器中高4位定义T1,低4位定义T0。
其中M1,M0用来确定所选工作方式如表6—1:定时/计数器T1 定时/计数器T0111定时器控制寄存器TCON地址88H,可以位寻址,TCON主要用于控制定时器的操作及中断控制。
有关中断内容在第四章已说明。
此处只对定时控制功能加以介绍。
表6—2给出了TCON有关控制位功能:系统复位时,TMOD和TCON寄存器的每一位都清零。
112113三、工作方式及应用用户可通过编程对专用寄存器TMOD 中的M1,M0位的设置,选择四种操作方式。
(一)方式0(以T0为例)在此方式中,定时寄存器由TH0的8位和TL0的5位(其余位不用)组成一个13位计数器。
当GATE=0时,只要TCON 中的TR0为1,13位计数器就开始计;当GATE=1以及TR0=1时,13位计数器是否计数取决于INT0引脚信号,当INT0由0变1时开始计数,当INT0由1变为0时停止计数。
第6章定时计数器2015(共39张PPT)
3. 方式2
TMOD--M1M0=10:定时器工作(gōngzuò)在方式2。 方式2是8位的可自动重装载的定时计数方式。
TL0用作8位计数器, TH0用以保持计数初值。 当TL0计数溢出,置位TF0,TH0中的初值自动装入TL0,继续 计数,循环重复计数。 用于计数工作方式时,最大计数值为:
SJMP AGAI SHI:RL A
SJMP NEXT
共三十九页
②中断方式 ORG 0000H LJMP MAIN
;单片机复位(fù wèi)后从0000H开始执行
ORG 001BH
AJMP IV1
;转移到IV1
ORG 0030H
;主程序
MAIN:MOV A,#01H
MOV P1,A ;置第一个LED亮
T0由2个8位持殊功能寄存器TH0和TL0构成, T1由2个8位持殊功能寄存TH1和TL1构成。 每个定时器都可由软件设置(shèzhì)为定时工作方式或
计数工作方式。 T0和T1受特殊功能寄存器TMOD和TCON控制。
共三十九页
1. 定时 工作方式 (dìnɡ shí)
定时器计数的脉冲是由51单片机片内振荡器经12分 频后产生的。
2 .方式 1 (fāngshì)
TMOD: M1M0=01----定时计数器工作在方式1。
该模式是一个16位定时/计数方式。 寄存器TH0和TL0是以全16位参与操作, 计数方式时最大计数 216=65536(个外部脉冲)
用于定时工作方式时,定时时间为:
t=(216一T0初值) ×时钟周期×12 16位寄存器(THX和TLX) 中THX提供高8位、TLX提供低8位计 数初值
TH0只可用作定时功能,占用定时器T1的控制位TR1和T1 的中断标志位TF1,其启动和关闭仅受TRl的控制。 定时器T1无模式 3, 可工作于方式0、1、2,但不能使用中 断方式。 只有将T1用做串行口的波特率发生器时,T0才工作在方式3, 以便增加一个定时器。
第6章80C51的定时计数器
C/T:模式选择位。 清0为定时模式,置1为计数方式。 M1M0:工作方式设置位。可设置四种工作方式(见下页)。
2013-7-9
4
M数器
明
01
10 11
方式1
方式2 方式3
16位定时/计数器
8位自动重装定时/计数器 T0分成两个独立的8位定时/计数器; T1此方式停止计数
TR0=1预备
2013-7-9
23
ORG AJMP ORG MAIN:MOV MOV MOV MOV L1:JB SETB L2:JNB L3:JB CLR MOV DEC MOV SJMP END
2013-7-9
0000H MAIN 0200H TMOD,#09H TH0,#00H TL0,#00H R0,#31H P3.2,L1 TR0 P3.2,L2 P3.2,L3 TR0 @R0,TL0 R0 @R0,TH0 $
2013-7-9
7
初值计算:
公式法 C/T=1时,则为计数模式,有: 13 X=2 -N=8192-N C/T=0时,则为定时模式,有: X=213-N=8192-N,N=t/Tcy 求补法 :X=对N求补
【例5-3】若计数个数N为2,求计数初值。 公式法计算:X=8192-2=8190=1FFEH 求补法计算:对0 0000 0000 0010B取反加1为: 1 1111 1111 1110B(1FFEH)
2013-7-9 8
门控位作用
当GATE=0时 仅由TR0控制与门的开启。与门输出1时,控制开关 接通,计数开始; 当GATE=1时 与门的开启由INT0和TR0共同控制。这种方式可以用 来测量INT0引脚上正脉冲的宽度。 注意:方式0的计数初值高8位和低5位确定麻烦 ,实际 应用中常由16位的方式1取代。
单片机的定时计数器
6.3.1 定时器/计数器的初始化
2. 定时初值或计数初值的计算方法 不同工作方式的定时初值或计数初值的计算方法如下表所 示。
工作方式 计数位数
最大计数值
最大定时时 定时初值计算公
间
式
计数初值计算公式
方式0
13
213=8192
213T机
X=213-T/T机
X=213-计数值
方式1
16
216=65536
6.3.2 方式0及应用实例
定时器/计数器0方式0逻辑结构
振荡器
12 分频 CC//TT =0
T0(P3.4) TR0
GATE
1
INT0(P3.2)
CC/TT =1
& ≥1
TH0 TL0 (8 位) (5 位)
TF0
中断
6.3.2 方式0及应用实例
【例2】 在P1.0输出周期为1 ms(频率1kHz)的方波,采用定时器1 方式0设计程序,晶振频率为12MHz。
6.1.3 定时器/计数器的功能
定时器/计数器具有定时和计数两种功能,应用范围如下。 1. 定时与延时控制方面
可产生定时中断信号,以设计出各种不同频率的信号源; 产生定时扫描信号,对键盘进行扫描以获得控制信号,对显 示器进行扫描以不间断地显示数据。 2. 测量外部脉冲方面 对外部脉冲信号进行计数可测量脉冲信号的宽度、周期, 也可实现自动计数。 3. 监控系统工作方面 对系统进行定时扫描,当系统工作异常时,使系统自动复 位,重新启动以恢复正常工作。
(1) 确定定时器/计数器的工作方式,确定方式控制字,并写入 TMOD。
(2) 预置定时初值或计数初值,根据定时时间或计数次数,计 算定时初值或计数初值,并写入TH0、TL0或TH1、TL1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章定时/计数器及应用第一节定时/计数器1.定时/计数器工作原理在实际应用中,常用定时器实现定时检测、定时控制。
计数器主要用于事件的计数。
许多物理量的测量经过外部电路设计都可将其转换为定时或计数功能。
51单片机内部集成了两个16位可编程的定时/计数器T0和T1(为描述方便,后面将以下标x来代表T0和T1的相关参数),他们具有定时和计数两种工作方式。
定时/计数器T x由特殊功能寄存器TH x、TL x及相关控制寄存器构成。
定时器/计数器本质上就是16位加法计数器,由TH x、TL x存各自的计数值。
计数工作方式下,加法计数器对芯片引脚T0(P3.4)、T1(P3.5)上输入的脉冲计数;定时工作方式下,加法计数器对内部机器周期脉冲进行计数,定时时间为:计数值×机器周期。
计数初值由用户编程设定,设置的初值不同,计数值或定时时间就不同。
因为加法计数器计数满后将回零溢出并申请中断,且在二进制数的补码表示形式中,-1的形式为全1,加1后也将回0溢出,所以计数初值可以用负数的补码来表示。
2.控制寄存器定时器/计数器两种工作方式是由用户对定时器工作方式控制寄存器TMOD编程设定的,定时器/计数器的启动、停止及溢出等情况是由定时器控制寄存器控制的。
工作方式控制寄存器TMOD其中,低4位控制T0,高4位控制T1,各位的作用为:M1M0:工作模式选择位。
定时器的工作模式由M1M0设定。
M1M0工作模式功能0 0 模式0 13位定时器/计数器0 1 模式1 16位定时器/计数器1 0 模式2 自动重装初值的8位定时器/计数器1 1 模式3 T0分为两个8位定时器/计数器;T1停止(1)C/T :工作方式选择位C/T = 1工作在计数方式,计数脉冲来自于外部脉冲输入端(P3.4,P3.5引脚);C/T = 0工作在定时方式,计数脉冲来自于内部机器周期。
(2)GATE:门控位GA TE = 0 时,定时器由TCON中的TR x(x =0,1)位进行控制,置1定时器/计数器启动,该位清0定时器/计数器停止;GA TE = 1时,外部中断引脚( INT0 或INT1 )上的高电平与TR x 共同控制。
(如:TR x 置1且相应外部中断引脚为高电平,定时器/计数器启动)。
定时器控制寄存器TCON0TF 0:定时/计数器0中断请求标志TR 1:定时/计数器1运行控制位TF 1:定时/计数器1中断请求标志3.定时器/计数器的工作模式工作模式的选择由TMOD 中的M 1M 0的值来决定,定时器/计数器T 0有4种工作模式(模式0、1、2、3),T1有3种工作模式(模式0、1、2),前3种工作模式,T 0和T 1除了所使用的寄存器、控制位和标志位不同外,其他的操作完全相同。
(1)工作模式0当M 1M 0为00时,定时器/计数器工作于模式0。
模式0为13位计数模式,最大计数值为213(8192),TH x 提供高8位,TL x 提供低5位。
程序初始化时,向TH x 和TL x 装入计数初值,启动计数后,开始加1计数,TL x 的低5位溢出后,向TH x 的最低位进位,TH x 溢出后将置位TCON 中的TF x,以申请中断。
由于此时TH x 、TL x 均回0,若需要继续计数,用户应在程序中再次装入计数初值。
由于模式0的进位特点,在装入计数初值时,13位二进制的高8位装入TH x 中,低5位装入TL x 中(TL x 的高3位无效,可补0)。
例:T0的计数初值为1000,TH 0、TL 0中的代码应该是什么?分析:由于补码的特点与定时/计数器回0溢出以申请中断的原理相同,故计数初值用-1000的补码(即1111,1100,0001,1000)来表示;由于模式0的特点,TH 0中装入E0H ,TL 0中装入18H 。
(2)工作模式1当M 1M 0为01时,定时器/计数器工作于模式1。
模式1为16位计数模式,最大计数值为216(65536),TH x 提供高8位,TL x 提供低8位。
其他情况和模式0相似。
(3)工作模式2当M 1M 0为10时,定时/计数器工作于模式2。
模式2为自动重装初值的8位计数器,TL x 作为工作计数器,TH x 作为初值寄存器。
程序初始化过程中,TH x 、TL x 装入相同的计数初值,启动计数器后,TL x 开始计数,TL x 溢出时,硬件置位TF x ,向CPU 发出中断请求,同时TH x 中的计数初值自动送入TL x 中,TL x 从初值开始从新计数,直到计数器被停止。
由于该方式省去了软件重装计数初值,所以该方式适合用于定时或计数较精确的情况。
(4)工作模式3当M1M0为11时,定时/计数器工作于模式3。
模式3仅适用于T0,此方式下,TH0和TL0成为两个独立的8位计数器。
TL0可以当作定时/计数器使用,占用T0在TMOD和TCON中的控制位和标志位;TH0只能用作定时器,占用T1的TR1和TF1。
此时T1仍可用于模式0,1,2,但不能使用中断方式。
在单片机串行通信中,一般将T1作为串行口波特率发生器,工作在模式2,此时将T0设置为模式3,可以额外增加一个8位的定时器。
4.对计数器输入信号的要求定时/计数器作计数器使用时,外部脉冲由T0(P3.4)或T1(P3.5)输入,在每个机器周期的S5P2期间采样一次该引脚电平,若前一次检测为“1”,后一次检测为“0”,则加法计数器加一。
新的计数值将在此后一个机器周期的S3P1期间装入TH x和TL x中,所以所采样的外部脉冲的“0”和“1”的持续时间都不能少于一个机器周期。
由于需要两个机器周期才能识别高电平到低电平的跳变,所以外部计数脉冲的周期应大于2倍机器周期。
如使用12MHZ 时钟,机器周期为1us,外部计数频率不能超过500KHZ。
对外部脉冲的占空比无特殊要求。
第二节定时/计数器应用编程单片机内部的2个定时/计数器是可编程器件,可以通过程序设定其功能。
其应用编程主要包括下述几个步骤:(1)根据定时要求或计数要求计算计数初值。
(2)根据要求确定工作模式,并将控制字写入TMOD。
(3)将计数初值写入TH x和TL x。
(4)若使用中断方式,开放中断(5)启动定时/计数器,即将TR x置位。
前4条在系统初始化程序部分完成,应根据具体的应用要求,在系统服务程序中利用TR x控制定时/计数器的启停。
例4-2利用定时计数器1定时,采用查询方式,在P1.1引脚输出1000HZ方波。
设T1为工作方式2,设置为定时状态,定时时间为方波周期的1/2即0.5mS,查询0.5mS 时间到,将P1.1的状态取反(假设晶振为6MHZ)。
先设置TMOD控制字:定时器/计数器1为定时器工作方式,C/T(TMOD.6) = “0”;非门控方式,GATE(TMOD.7)= “0”;采用工作方式2,M1(TMOD.5)=“1”,MO(TMOD.4)=“0”,定时器/计数器0没有使用,相应的D7~D4为随意态“X”,若取“X”为 0,则(TMOD)= 20H。
再计算0.5mS定时的T1初始值:由fosc = 6MHZ得Tc = 2μs,工作方式2时有T =(256 - X)Tc =(256 - X)* 2μs=500μS得 TH1 = TL1 = 06H。
程序如下:ORG 0100HSQU: MOV TMOD,#20H ;设置定时器/计数器工作方式MOV TH1,#06H ;设置定时初始值MOV TL1,#06HSETB TR1 ;启动定时器/计数器1LOOP: JBC TF1,$ ;定时时间不到循环等待CPL P1.1 ;P1.1状态取反SJMP LOOP例4-3 P1.0、P1.1经7407驱动LED交替发光并以每秒一次的频率闪烁。
硬件连接见图4-6。
(采用6MHZ 晶振)闪烁周期为1S,亮、灭各占一半,定时时间需要500mS。
使用6MHZ 晶振,单片机最长定时时间仅为131mS,所以需要采用软件记数方法扩展定时时间。
使用定时/计数器0,定时方式,工作方式1。
8051设置TMOD 控制字: TMOD = 01H 图4-6 驱动LED 电路图使用6MHZ 晶振,机器周期为2μs ,设定时时间100mS ,定时初值: 100 mS/2μs =50000,其十六进制补码:3CB0H 。
定时器溢出5次为500mS 。
软件流程见图4-7。
程序如下:ORG 0140H LED1: MOV TMOD,#01H ;设置定时器工作方式SETB P1.0 ;输出初始状态CLR P1.1 SETB TR0 ;启动定时器LOOP0: MOV R2,#05H ;送软件计数初值LOOP1: MOV TL0,#0B0H ;送定时常数MOV TH0,#3CH JBC TF0,$ ;循环等待定时时间到 DJNZ R2,LOOP1 ;软件计数–1≠0循环 XRL P1,#03H ;P1.0、P1.1求反 SJMP LOOP0 ;循环例4-4 当GATE X =“1”时,定时/计数器只有INT X 为高电平才能进行计数。
利用这一点,可以方便的测量脉冲信号的宽度。
设被测脉冲接至INT1引脚,将定时/计数器1设置为定时方式,即可进行脉宽测量。
要求测量脉宽单位为1μs ,选用12MHZ 晶振。
设置TMOD 控制字:GATE1 =“1”,定时/计数器1为定时方式C/T =“0”,选用工作方式1。
TMOD = 90H 。
定时初值为零,在脉冲下跳沿读出计数器的计数值即为脉冲宽度。
程序如下:ORG 0180HPULSEW : MOV TOMD ,#90H ;设置定时/计数 器工作方式CLR A ;定时初值为零MOV TH1,AMOV TL1,AJB P3.3,$ ;在低电平时启动定时,保证测量整个脉冲宽度。
SETB TR1 ;启动定时器JNB P3.3,$ ;等待脉冲到来JB P3.3,$ ;等待脉冲结束CLR TR1 ;停止计数MOV R2,TH1 ;读出脉冲宽度MOV R3,TL1……运行上面程序后,只要将R2、R3两单元内容转换成十进制数,即可送显示以读出脉冲图4-7 驱动LED 程序流程图宽度。
由于工作方式1的最大计数值为65536,所以上面程序所测脉冲宽度不能大于65536μs。
例4-5 利用单片机定时/计数器测量脉冲信号频率。
频率定义为单位时间1S内的周期数,用定时/计数器测频率,需要用一路定时器产生单位时间,另一路计数器对脉冲计数。
若被测量的信号频率较高,而测量精度有限的话,单位时间可以小于1S。
单位时间选用10mS,其间计的脉冲数乘以100即为信号频率。
设置工作方式:设单片机系统时钟频率fosc = 12MHz。
定时/计数器1定时,工作方式1,产生10mS 单位时间;定时/计数器0计数,工作方式1。