第六章 定时器计数器
合集下载
单片机讲义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 同。
单片机第六章定时器

计数溢出时,TFx置位。如果中断允许,CPU响应中 断并转入中断服务程序,由内部硬件清TFx。TFx也可以 由程序查询和清零。
这种方式下,计数寄存器由13位组成,即THx高八位(作计数器)
和TLx的低5位构成。TLx的高3位未用。
计数时,TLx的低5位溢出后向THx进位,THx溢出后 将TFx置位,并向CPU申请中断。
用软件控制,置 l时,启动 T1;清0时,停止 T1。
TF0(TCON.5)——T0的溢出标志。
TR0(TCON.4)——T0的运行控制位。
用软件控制,置1时,启动T0;清 0时,停止 T0。
• IE1(TCON.3)——外部中断1中断请求标志位。
• IE0(TCON.1)——外部中断0中断请求标志位。
器之外,还可用作串行接口的波特率发生器。
6.2
定时器/计数器T0、T1
T0、T1 的内部结构简图示于图6-1中。从图中 可以看出,T0、T1由以下几部分组成:
• 计数器TH0、TL0和TH1、TL1;
•
•
特殊功能寄存器TMOD、TCON;
时钟分频器;
•
输入引脚T0、T1。
6.2.1 与定时器/计数器T0、T1有关的 特殊功能寄存器
⑵定时器/计数器T1
T0方式3时,T1可以工作在方式0、1、2三种方式 T1的结构如图6–6所示。 由于T0占用了原来T1的启动位TR1和溢出标志TF1, 所以此时T1溢出时不能置位溢出标志,不能申请中断, 其溢出信号送给串行口,此时T1作为波特率发生器。
T1的启停由写入方式字控制,当写入方式0/1/2 时,T1立即启动,写入方式3 时,立即停止工作。
分析:设置T0工作在方式2,计数功能,每记满100个外 部脉冲,从P1.0输出一个低电平脉冲信号(简化的打包 操作)。
这种方式下,计数寄存器由13位组成,即THx高八位(作计数器)
和TLx的低5位构成。TLx的高3位未用。
计数时,TLx的低5位溢出后向THx进位,THx溢出后 将TFx置位,并向CPU申请中断。
用软件控制,置 l时,启动 T1;清0时,停止 T1。
TF0(TCON.5)——T0的溢出标志。
TR0(TCON.4)——T0的运行控制位。
用软件控制,置1时,启动T0;清 0时,停止 T0。
• IE1(TCON.3)——外部中断1中断请求标志位。
• IE0(TCON.1)——外部中断0中断请求标志位。
器之外,还可用作串行接口的波特率发生器。
6.2
定时器/计数器T0、T1
T0、T1 的内部结构简图示于图6-1中。从图中 可以看出,T0、T1由以下几部分组成:
• 计数器TH0、TL0和TH1、TL1;
•
•
特殊功能寄存器TMOD、TCON;
时钟分频器;
•
输入引脚T0、T1。
6.2.1 与定时器/计数器T0、T1有关的 特殊功能寄存器
⑵定时器/计数器T1
T0方式3时,T1可以工作在方式0、1、2三种方式 T1的结构如图6–6所示。 由于T0占用了原来T1的启动位TR1和溢出标志TF1, 所以此时T1溢出时不能置位溢出标志,不能申请中断, 其溢出信号送给串行口,此时T1作为波特率发生器。
T1的启停由写入方式字控制,当写入方式0/1/2 时,T1立即启动,写入方式3 时,立即停止工作。
分析:设置T0工作在方式2,计数功能,每记满100个外 部脉冲,从P1.0输出一个低电平脉冲信号(简化的打包 操作)。
第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章 单片机的定时器计数器

T1(P 3.5)
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 } }
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-13所示,计数输入引脚T1(P3.5)上外接开关K1,作为 计数信号输入。按4次K1后,P1口的8只LED闪烁不停。 (1)设置TMOD寄存器
TR1位(或TR0位)=1,启动定时器工作的必要条件。 TR1位(或TR0位)=0,停止定时器工作。 该位可由软件置“1”或清“0”。
10
6.2 定时器/计数器的4种工作方式 4种工作方式分别介绍如下。
6.2.1 方式0 当M1、M0为00时,定时器/计数器被设置为工作方式0,
这时定时器/计数器的等效逻辑结构框图如图6-4所示(以定 时器/计数器T1为例,TMOD.5、TMOD.4 = 00)。
(1)GATE=0时,A点(见图6-4)电位恒为1,B点电位仅 取决于TRx状态。TRx = 1,B点为高电平,控制端控制电子 开关闭合,允许T1(或T0)对脉冲计数。TRx = 0,B点为低 电平,电子开关断开,禁止T1(或T0)计数。
(2)GATE=1时,B点电位由INTX*(x = 0,1)的输入电 平和TRx的状态两个条件来定。当TRx=1,且INTX*=1时,B 点才为1,控制端控制电子开关闭合,允许T1(或T0)计数。 故这种情况下计数器是否计数是由TRx和INTX*两个条件来共 同控制。
图6-1 AT89S51单片机的定时器/计数器结构框图
4
只不过计数信号的来源不同。 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上
的外部脉冲进行计数(见图6-1) 定时器模式是对单片机的系统时钟信号经片内12分频后的
内部脉冲信号(机器周期)计数。由于时钟频率是定值,所 以可根据对内部脉冲信号的计数值可计算出定时时间。
本例由于采用定时器T0中断,因此需将IE寄存器中的EA、 ET0位置1。 (4)启动和停止定时器T0
TR1位(或TR0位)=1,启动定时器工作的必要条件。 TR1位(或TR0位)=0,停止定时器工作。 该位可由软件置“1”或清“0”。
10
6.2 定时器/计数器的4种工作方式 4种工作方式分别介绍如下。
6.2.1 方式0 当M1、M0为00时,定时器/计数器被设置为工作方式0,
这时定时器/计数器的等效逻辑结构框图如图6-4所示(以定 时器/计数器T1为例,TMOD.5、TMOD.4 = 00)。
(1)GATE=0时,A点(见图6-4)电位恒为1,B点电位仅 取决于TRx状态。TRx = 1,B点为高电平,控制端控制电子 开关闭合,允许T1(或T0)对脉冲计数。TRx = 0,B点为低 电平,电子开关断开,禁止T1(或T0)计数。
(2)GATE=1时,B点电位由INTX*(x = 0,1)的输入电 平和TRx的状态两个条件来定。当TRx=1,且INTX*=1时,B 点才为1,控制端控制电子开关闭合,允许T1(或T0)计数。 故这种情况下计数器是否计数是由TRx和INTX*两个条件来共 同控制。
图6-1 AT89S51单片机的定时器/计数器结构框图
4
只不过计数信号的来源不同。 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上
的外部脉冲进行计数(见图6-1) 定时器模式是对单片机的系统时钟信号经片内12分频后的
内部脉冲信号(机器周期)计数。由于时钟频率是定值,所 以可根据对内部脉冲信号的计数值可计算出定时时间。
本例由于采用定时器T0中断,因此需将IE寄存器中的EA、 ET0位置1。 (4)启动和停止定时器T0
接口技术06定时器计数器8253-5

0
0
0
1
1
0
传送方式
写入计数器0的初始值 写入计数器1的初始值 写入计数器2的初始值 写入控制寄存器控制字
读自计数器0的OL 读自计数器1的OL 读自计数器2的OL
五、8253 的控制字格式:
D7
D6
D5
D4
D3
D2
D1 D0
SC1 SC0 RW1 RW0 M2
M1
M0 BCD
计数器选 择
工作方式
计数初值开始工作,见图6.5所示③。21组1
CLK
WR ① GATE
OUT
n=4
43
0 21
②
GATE OUT
0
4
4321
WR ③
n=3
GATE
OUT2 工作在1方式,进行8位二进制计数, 并设计 数 初值的低8位为BYTEL。
其初始化程序段为
MOV DX,307H
计数器:
在时钟信号作用下,进行减“1”计数,计数次数到 (减“1”计数回零),从输出端输出一个脉冲信号。
计数举例: •①对零件和产品的计数; •②对大桥和高速公路上车流量的统计,等等。
Intel8253在微机系统中可用作定时器和计数 器。定时时间与计数次数是由用户事 先设定。
2、 8253 定时与计数器与CPU的关系 8253 定时与计数操作过程与CPU相互独立,
计数器 2
GATE2 OUT2
定时器/计数器的内部结构:
①数据总线缓冲器。它是一个三态、双向 8位寄存器,用于将8253与系统数据总线 D0~D7 相连。 ②读/写逻辑。 ③控制命令寄存器。它接受CPU送来的控 制字。 ④计数器。8253有3个独立的计数器(计 数通道),其内部结构完全相同,
第6章 定时器计数器

28
期间,计数器加1。由于确认一次负跳变要花 个机器周期, 确认一次负跳变要花2个机器周期 确认一次负跳变要花 因此外部输入的计数脉冲的最高频率为系统振荡器频率的 外部输入的计数脉冲的最高频率为系统振荡器频率的 外部输入的计数脉冲的最高频率 1/24。 例如,选用6MHz频率的晶体,允许输入的脉冲频率最高为 250kHz。如果选用12MHz频率的晶体,则可输入最高频 率为500kHz的外部脉冲。 对于外部输入信号的占空比并没有什么限制,但为了确保某 占空比并没有什么限制 占空比并没有什么限制 一给定电平在变化之前能被采样一次,则这一电平至少要 至少要 保持一个机器周期。 保持一个机器周期
T 、GATE、TR0、
22
TF0 ,而TH0被固定为一个 位定时器 固定为一个8位定时器 固定为一个 位定时器(不能作为外部计数 模式),并使用定时器T1的状态控制位TR1和TF1,同时 占用定时器T1的中断请求源TF1。 2.T0工作在方式 时T1的各种工作方式 . 工作在方式 工作在方式3时 的各种工作方式 一般情况下,当T1用作串行口的波特率发生器时,T0才工 当 用作串行口的波特率发生器时 用作串行口的波特率发生器时, 才工 作在方式3。 作在方式 。T0处于工作方式3时,T1可定为方式0、方式 1和方式2,用来作为串行口的波特率发生器,或不需要中 断的场合。
18
定时器/计数器的方式 为自动恢复初值 方式2为自动恢复初值 方式 为自动恢复初值(初值自动装入)的 8位定时器/计数器 位定时器 计数器 计数器。 TLx(x = 0,1)作为常数缓冲器,当TLx计数溢出时,在溢出 自动将THx中的初值送至 中的初值送至TLx, 标志TFx置“1”的同时,还自动将 自动将 中的初值送至 使TLx从初值开始重新计数。定时器/计数器的方式2工作 过程如图6-7所示。
期间,计数器加1。由于确认一次负跳变要花 个机器周期, 确认一次负跳变要花2个机器周期 确认一次负跳变要花 因此外部输入的计数脉冲的最高频率为系统振荡器频率的 外部输入的计数脉冲的最高频率为系统振荡器频率的 外部输入的计数脉冲的最高频率 1/24。 例如,选用6MHz频率的晶体,允许输入的脉冲频率最高为 250kHz。如果选用12MHz频率的晶体,则可输入最高频 率为500kHz的外部脉冲。 对于外部输入信号的占空比并没有什么限制,但为了确保某 占空比并没有什么限制 占空比并没有什么限制 一给定电平在变化之前能被采样一次,则这一电平至少要 至少要 保持一个机器周期。 保持一个机器周期
T 、GATE、TR0、
22
TF0 ,而TH0被固定为一个 位定时器 固定为一个8位定时器 固定为一个 位定时器(不能作为外部计数 模式),并使用定时器T1的状态控制位TR1和TF1,同时 占用定时器T1的中断请求源TF1。 2.T0工作在方式 时T1的各种工作方式 . 工作在方式 工作在方式3时 的各种工作方式 一般情况下,当T1用作串行口的波特率发生器时,T0才工 当 用作串行口的波特率发生器时 用作串行口的波特率发生器时, 才工 作在方式3。 作在方式 。T0处于工作方式3时,T1可定为方式0、方式 1和方式2,用来作为串行口的波特率发生器,或不需要中 断的场合。
18
定时器/计数器的方式 为自动恢复初值 方式2为自动恢复初值 方式 为自动恢复初值(初值自动装入)的 8位定时器/计数器 位定时器 计数器 计数器。 TLx(x = 0,1)作为常数缓冲器,当TLx计数溢出时,在溢出 自动将THx中的初值送至 中的初值送至TLx, 标志TFx置“1”的同时,还自动将 自动将 中的初值送至 使TLx从初值开始重新计数。定时器/计数器的方式2工作 过程如图6-7所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
例题一:使用 定时 使得由P0.7输出周 定时, 例题一:使用T0定时,使得由 输出周 期为2ms的方波。设单片机时钟为 的方波。 期为 的方波 设单片机时钟为6MHz。 。 使用方式0和方式 分别实现。 和方式1分别实现 使用方式 和方式 分别实现。请编制程 序。 分析: 的方波, 高电位, 分析:2ms的方波,即1ms高电位,1ms低 的方波 高电位 低 电位。可以这样实现:定时1ms中断一次, 中断一次, 电位。可以这样实现:定时 中断一次 在中断中使得P0.7状态反相。 状态反相。 在中断中使得 状态反相
7
计数初值的计算
计数器以增一的方式计数,溢出时申请中断。 计数器以增一的方式计数,溢出时申请中断。 根据定时值计算出所需要的计数时钟周期数N 1、根据定时值计算出所需要的计数时钟周期数N。 t=Tc*N N=t /Tc Tc——计数时钟周期=振荡周期X12 ——计数时钟周期 Tc——计数时钟周期=振荡周期X12 根据选择的工作方式,计算计数器溢出所需的计数初值X 2、根据选择的工作方式,计算计数器溢出所需的计数初值X 13 方式0:(13 13位 方式0:(13位)X= 2 — N 16 方式1:(16 16位 方式1:(16位)X= 2 — N 8 方式2:(8 方式2:(8位) X= 2 — N n 定时时间=振荡周期* 定时时间=振荡周期*12*( 2 — X) n n t/(Tc*12) X= 2 — t/(Tc*12)= 2 — t * f /12 化为16进制数装入TH TL中 16进制数装入TH和 3、将X化为16进制数装入TH和TL中
振荡器
÷12
C/T=0 C/T=1 控制器 B
(8位) 位 TL0 TF0 中断
T0脚(P3.4) 脚 ) TR0 GATE
A
/INT0
振荡器
+ ÷பைடு நூலகம்2
TR1
TH0 TF1 中断
6
(五)、定时器工作举例
• 定时器编程流程: 确定工作模式,确定工作方式控制字(TMOD) 1、确定工作模式,确定工作方式控制字(TMOD) 。 确定计数或定时值,计算计数初值(TL和 2、确定计数或定时值,计算计数初值(TL和TH 值)。 确定中断优先级和中断控制字。 3、确定中断优先级和中断控制字。 MOV指令将有关控制字和参数写入相关的寄存 4、用MOV指令将有关控制字和参数写入相关的寄存 用以启停T/C的运行。 T/C的运行 器中。 用以启停T/C的运行。
第六章
单片机内部定时器/ 单片机内部定时器/计数器
P3.5(T1) P3.4(T0)
(一)、结构 )、结构
TH1(8D)
TL1(8B)
TH0(8C)
TL0(8A)
CPU
TCON(88) TMOD(89)
1
(二)、定时器工作方式控制寄存器TMOD )、定时器工作方式控制寄存器TMOD 定时器工作方式控制寄存器
11
3)编制中断程序: )编制中断程序:
ORG 000BH LJMP TINT ORG 0300H TINT: CPL P0.7 : MOV TH0,#0F0H , MOV TL0,#0CH , MOV IE,#82H , RETI
12
2
(三)、定时器/计数器控制寄存器TCON )、定时器/计数器控制寄存器TCON 定时器
• 字节地址为 字节地址为88H(TCON) D7
TF1
D6
TR1
D5
TF0
D4
TR0
D3
IE1
D2
IT1
D1
IE0
D0
IT0
TF1,TF0——定时器的溢出标志位。最高位产生溢出时置1 并请求中断。 TF1,TF0——定时器的溢出标志位。最高位产生溢出时置1,并请求中断。 ——定时器的溢出标志位 用于标志T0和T1计数器是否产生了溢出中断请求。 用于标志T0和T1计数器是否产生了溢出中断请求。 T0 计数器是否产生了溢出中断请求 TR1,TR0——定时器的运行控制位1允许计数, 停止计数。 TR1,TR0——定时器的运行控制位1允许计数,0停止计数。 ——定时器的运行控制位 IE1——外部中断1请求标志(/INT1,P3.3) 测到低电平或高低脉冲, IE1——外部中断1请求标志(/INT1,P3.3)(测到低电平或高低脉冲,则 ——外部中断 认为中断请求有效。 认为中断请求有效。 IT1——外部中断1触发控制位。 为电平触发,低有效。 为边沿触发, IT1——外部中断1触发控制位。0为电平触发,低有效。1为边沿触发,下 ——外部中断 降沿有效。 降沿有效。 IE0,IT0——外部中断0请求标志(/INT0,P3.2)和触发控制位。 IE0,IT0——外部中断0请求标志(/INT0,P3.2)和触发控制位。 ——外部中断
振荡器
÷12
C/T=0 C/T=1 控制器 B
(8位) 位 中断 TL1 TF1
T1脚(P3.5) 脚 ) TR1 GATE /INT1脚 脚
+
A
TH1
5
•模式3(M1M0=1 1)仅限于T0 模式3 1)仅限于T0 模式
TL0和TH0为两个独立的 位计数器。 和 为两个独立的8位计数器 为两个独立的 位计数器。
9
1)计算定时器初值 。 )计算定时器初值X。 定时器计数脉冲周期是时钟的12倍 定时器计数脉冲周期是时钟的 倍。计时 1ms需要计数 需要计数1000/2=500个脉冲。即 个脉冲。 需要计数 个脉冲 N=500。 。 若用方式0, 位计数器 则有: 位计数器, 若用方式 ,13位计数器,则有: X= 213 — 500 = 8192—500 = 7692 换算成16进制数为 进制数为1E0CH 换算成 进制数为 用高八位和低五位表示( 用高八位和低五位表示(TH0、TL0): 、 ): F00CH
振荡器
÷12
T1脚(P3.5) 脚 ) TR1 GATE /INT1脚 脚
+
A
4
•模式1 (M1 M0=0 1) 16位计数器方式 模式1 1) 16位计数器方式 模式
结构图同模式0, 都是8位 结构图同模式 ,TL1和 TH1都是 位 和 都是
• 模式2(M1 M0=1 0)自动恢复初值的8位计数器 模式2 0)自动恢复初值的8
3
注意:计数器为增 计数器 计数器。 注意:计数器为增1计数器。
(四)、定时器/计数器的工作模式(T1) )、定时器/计数器的工作模式(T1) 定时器 (T1
• 模式0:(M1 M0=0 0) 模式0:(M1 0) 13位计数器方式 13位计数器方式
(5位) (8位) 位 位 C/T=0 C/T=1 TL1 TH1 控制器 B TF1 中断
10
2)编制初始化程序: )编制初始化程序: T0工作在方式 ,方式控制字为00H, 工作在方式0,方式控制字为 , 工作在方式 TH0=F0H,TL0=0CH , 编程: ORG 0200H 编程:
MOV TMOD,#00H , MOV TH0,#0F0H , MOV TL0,#0CH , MOV IE,#82H , SETB TR0 WAIT:SJMP WAIT :
• 方式字 方式字(TMOD) D7 D6 D5
M1
D4
M0
D3
GATE0
D2
C/T0
D1
M1
D0
M0
GATE1 C/T1
• 方式选择
M1 0 0 1 1 M0 0 1 0 1 功 能 说 明 方式0 13位定时/计数器,TH8 位定时 TL低 方式0,为13位定时/计数器,TH8位,TL低5位。 方式1 方式1,为16位定时/计数器。 16位定时/计数器。 位定时 方式2 为常数自动重新装入的8 定时/计数器。 方式2,为常数自动重新装入的8位定时/计数器。 方式3 仅适用于T0,分为两个8位计数器, T1停 方式3,仅适用于T0,分为两个8位计数器,对T1停 T0 止计数。 止计数。
例题一:使用 定时 使得由P0.7输出周 定时, 例题一:使用T0定时,使得由 输出周 期为2ms的方波。设单片机时钟为 的方波。 期为 的方波 设单片机时钟为6MHz。 。 使用方式0和方式 分别实现。 和方式1分别实现 使用方式 和方式 分别实现。请编制程 序。 分析: 的方波, 高电位, 分析:2ms的方波,即1ms高电位,1ms低 的方波 高电位 低 电位。可以这样实现:定时1ms中断一次, 中断一次, 电位。可以这样实现:定时 中断一次 在中断中使得P0.7状态反相。 状态反相。 在中断中使得 状态反相
7
计数初值的计算
计数器以增一的方式计数,溢出时申请中断。 计数器以增一的方式计数,溢出时申请中断。 根据定时值计算出所需要的计数时钟周期数N 1、根据定时值计算出所需要的计数时钟周期数N。 t=Tc*N N=t /Tc Tc——计数时钟周期=振荡周期X12 ——计数时钟周期 Tc——计数时钟周期=振荡周期X12 根据选择的工作方式,计算计数器溢出所需的计数初值X 2、根据选择的工作方式,计算计数器溢出所需的计数初值X 13 方式0:(13 13位 方式0:(13位)X= 2 — N 16 方式1:(16 16位 方式1:(16位)X= 2 — N 8 方式2:(8 方式2:(8位) X= 2 — N n 定时时间=振荡周期* 定时时间=振荡周期*12*( 2 — X) n n t/(Tc*12) X= 2 — t/(Tc*12)= 2 — t * f /12 化为16进制数装入TH TL中 16进制数装入TH和 3、将X化为16进制数装入TH和TL中
振荡器
÷12
C/T=0 C/T=1 控制器 B
(8位) 位 TL0 TF0 中断
T0脚(P3.4) 脚 ) TR0 GATE
A
/INT0
振荡器
+ ÷பைடு நூலகம்2
TR1
TH0 TF1 中断
6
(五)、定时器工作举例
• 定时器编程流程: 确定工作模式,确定工作方式控制字(TMOD) 1、确定工作模式,确定工作方式控制字(TMOD) 。 确定计数或定时值,计算计数初值(TL和 2、确定计数或定时值,计算计数初值(TL和TH 值)。 确定中断优先级和中断控制字。 3、确定中断优先级和中断控制字。 MOV指令将有关控制字和参数写入相关的寄存 4、用MOV指令将有关控制字和参数写入相关的寄存 用以启停T/C的运行。 T/C的运行 器中。 用以启停T/C的运行。
第六章
单片机内部定时器/ 单片机内部定时器/计数器
P3.5(T1) P3.4(T0)
(一)、结构 )、结构
TH1(8D)
TL1(8B)
TH0(8C)
TL0(8A)
CPU
TCON(88) TMOD(89)
1
(二)、定时器工作方式控制寄存器TMOD )、定时器工作方式控制寄存器TMOD 定时器工作方式控制寄存器
11
3)编制中断程序: )编制中断程序:
ORG 000BH LJMP TINT ORG 0300H TINT: CPL P0.7 : MOV TH0,#0F0H , MOV TL0,#0CH , MOV IE,#82H , RETI
12
2
(三)、定时器/计数器控制寄存器TCON )、定时器/计数器控制寄存器TCON 定时器
• 字节地址为 字节地址为88H(TCON) D7
TF1
D6
TR1
D5
TF0
D4
TR0
D3
IE1
D2
IT1
D1
IE0
D0
IT0
TF1,TF0——定时器的溢出标志位。最高位产生溢出时置1 并请求中断。 TF1,TF0——定时器的溢出标志位。最高位产生溢出时置1,并请求中断。 ——定时器的溢出标志位 用于标志T0和T1计数器是否产生了溢出中断请求。 用于标志T0和T1计数器是否产生了溢出中断请求。 T0 计数器是否产生了溢出中断请求 TR1,TR0——定时器的运行控制位1允许计数, 停止计数。 TR1,TR0——定时器的运行控制位1允许计数,0停止计数。 ——定时器的运行控制位 IE1——外部中断1请求标志(/INT1,P3.3) 测到低电平或高低脉冲, IE1——外部中断1请求标志(/INT1,P3.3)(测到低电平或高低脉冲,则 ——外部中断 认为中断请求有效。 认为中断请求有效。 IT1——外部中断1触发控制位。 为电平触发,低有效。 为边沿触发, IT1——外部中断1触发控制位。0为电平触发,低有效。1为边沿触发,下 ——外部中断 降沿有效。 降沿有效。 IE0,IT0——外部中断0请求标志(/INT0,P3.2)和触发控制位。 IE0,IT0——外部中断0请求标志(/INT0,P3.2)和触发控制位。 ——外部中断
振荡器
÷12
C/T=0 C/T=1 控制器 B
(8位) 位 中断 TL1 TF1
T1脚(P3.5) 脚 ) TR1 GATE /INT1脚 脚
+
A
TH1
5
•模式3(M1M0=1 1)仅限于T0 模式3 1)仅限于T0 模式
TL0和TH0为两个独立的 位计数器。 和 为两个独立的8位计数器 为两个独立的 位计数器。
9
1)计算定时器初值 。 )计算定时器初值X。 定时器计数脉冲周期是时钟的12倍 定时器计数脉冲周期是时钟的 倍。计时 1ms需要计数 需要计数1000/2=500个脉冲。即 个脉冲。 需要计数 个脉冲 N=500。 。 若用方式0, 位计数器 则有: 位计数器, 若用方式 ,13位计数器,则有: X= 213 — 500 = 8192—500 = 7692 换算成16进制数为 进制数为1E0CH 换算成 进制数为 用高八位和低五位表示( 用高八位和低五位表示(TH0、TL0): 、 ): F00CH
振荡器
÷12
T1脚(P3.5) 脚 ) TR1 GATE /INT1脚 脚
+
A
4
•模式1 (M1 M0=0 1) 16位计数器方式 模式1 1) 16位计数器方式 模式
结构图同模式0, 都是8位 结构图同模式 ,TL1和 TH1都是 位 和 都是
• 模式2(M1 M0=1 0)自动恢复初值的8位计数器 模式2 0)自动恢复初值的8
3
注意:计数器为增 计数器 计数器。 注意:计数器为增1计数器。
(四)、定时器/计数器的工作模式(T1) )、定时器/计数器的工作模式(T1) 定时器 (T1
• 模式0:(M1 M0=0 0) 模式0:(M1 0) 13位计数器方式 13位计数器方式
(5位) (8位) 位 位 C/T=0 C/T=1 TL1 TH1 控制器 B TF1 中断
10
2)编制初始化程序: )编制初始化程序: T0工作在方式 ,方式控制字为00H, 工作在方式0,方式控制字为 , 工作在方式 TH0=F0H,TL0=0CH , 编程: ORG 0200H 编程:
MOV TMOD,#00H , MOV TH0,#0F0H , MOV TL0,#0CH , MOV IE,#82H , SETB TR0 WAIT:SJMP WAIT :
• 方式字 方式字(TMOD) D7 D6 D5
M1
D4
M0
D3
GATE0
D2
C/T0
D1
M1
D0
M0
GATE1 C/T1
• 方式选择
M1 0 0 1 1 M0 0 1 0 1 功 能 说 明 方式0 13位定时/计数器,TH8 位定时 TL低 方式0,为13位定时/计数器,TH8位,TL低5位。 方式1 方式1,为16位定时/计数器。 16位定时/计数器。 位定时 方式2 为常数自动重新装入的8 定时/计数器。 方式2,为常数自动重新装入的8位定时/计数器。 方式3 仅适用于T0,分为两个8位计数器, T1停 方式3,仅适用于T0,分为两个8位计数器,对T1停 T0 止计数。 止计数。