第六章AT89S51单片机的定时器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
冲。 同步脉冲输出后T0又恢复外部事件计数方式。
32
方法2:计数用T0,采用查询方式,定时用T1中断,均采用模 式2。 T0工作在外部事件计数方式,当计数达到0FFH时候,再加 1计数器就会溢出。
T1工作在定时工作方式,设晶振频率为6MHz,500μs相当
ET0(ET1)=1
17
允许定时器/计数器中断
6.3 定时器的4种模式及应用
计数器工作方式选择
M1
0
建议不采用该工 作方式!
M0
0
工作方式
方式0
功能说明
13位计数器 在精确定时采用
该工作方式!
0 1
1 0 1 1
Leabharlann Baidu
方式1
方式2 方式3
16位计数器
自动重装8位计数器 定时器0:分成两个8位 定时器1:停止计数
}
26
书上例题6.4.1
如何控制LED闪烁时间
注意:计算初值的思路。
27
书上例题6.4.2
计数器的应用
控制LED闪烁。
28
例题6-2 用单片机和内部定时器来产生矩形 波,要求频率为100Hz,占空比为0.25, 设单片机的时钟频率为12MHz。 占空比:在一串理想的脉冲周期序列中, 正脉冲的持续时间与脉冲总周期的比值。
18
模式0
模式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成 TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志, 向CPU发出中断请求。 该方式计算不方便, 建议不采用!
TMOD D7 溢出 TH0 TL0 13位计数器 8位 5位 &
≥1
TCON TF1 申请 中断 TR1
7
计数器工作原理
计数方式下,单片机在每个机器周期的 S5P2对计 数脉冲输入引脚进行采样。如果前一个机器周期
为高电平,后一个机器周期为低电平,即为一个
有效的计数脉冲,在下一个机器周期的 S3P1进行
计数。由于采样计数脉冲是在2个机器周期完成的,
所以计数脉冲的周期不能小于2个机器周期。
8
定时器工作原理
29
5.3.2 模式2及其应用
模式2为自动重装初值的8位计数方式。
TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出8位计数器 TL0 & 1 0 T0引脚 0 1 TMOD M0 M1 C/T 机器周期 GATE M0 1 INT0引脚 M1 C/T GATE D7 D0
TH1重装单元
3.中断方式时,则对IE赋值,开放中断。
4.使TR0或TR1置位,启动定时计数器。
23
程序流程:
开
始
P1.1置1 T1模式设置 T1初值设置(10ms) 中断设置 P1.1取反 开中断 启动定时器T1 中断返回 中断入口 T1初值设置(10ms)
循环等待中断
主程序流程
24
中断服务子程序流程
程序(主程序)
TR1 = 1; //定时器开始计数
while(1); }
25
程序(定时器1中断服务程序) void timer1_int(void) interrupt 3
{
TH0 = (65536-10000)/256;
TL0 = (65536-10000)%256;
P1_1 = ~P1_1;
//重新装入计数初值
#include <reg52.h> #define uchar unsigned char
#define uint unsigned int
sbit P1_1 = P1^1;
void main() { TMOD = 0x10;//T1模式1,16位计数器 TH1 = (65536-10000)/256; TL1 = (65536-10000)%256; // EA = 1; //开总中断 ET1 = 1; //开定时器1中断 装入计数初值
的是计数器计数的最大值与这一计数值的差值。
设最大值为 M ,计数值为 N ,初值为 X ,则 X 的计算方
法为:
定时与计数都是利 用计数实现!!
计数状态: X = M-N
定时状态: X = M-(定时时间∕机器周期)
10
6.2 定时器的控制 62.1 工作模式寄存器:TMOD
字节地址:89H
C/T = 0 C/T = 1 定时工作方式 计数工作方式
GATE: 门控位
GATE=0 以运行控制位(TR0或TR1)启动定时器
GATE=1 以外部中断请求信号(INT0 或INT1)启
动定时器
13
6.2.2定时器/计数器控制寄存器:TCON
字节地址:88H 位地址:88H ~ 8FH
位 序 D7 GATE D6 C/T 位符号
(不可位寻址)
D5 M1 D4 M0 D3 GATE D2 C/T D1 M1 D0 M0
定时器/计数器 1
定时器/计数器 0
功能:用于设定定时器/计数器的工作方式(只能用字节 传送指令设置其内容) TMOD的低半字节对应定时器/计数器 0,高半字节对应 定时器/计数器 1,前后半字节的位格式完全对应。
14
位地址 8FH 8EH 8DH
位符号 TF1 TR1 TF0
8CH
TR0
8BH
IE1
8AH
IT1
89H
IE0
88H
IT0
TF0和TF1:计数溢出标志位
当计数器产生计数溢出时,相应的溢出标志位由硬 件置“1”。 计数溢出标志位的使用有两种情况:
• 使用中断方式时,作中断请求标志位来使用,在转 向中断服务程序时由硬件自动清“0”。 • 使用查询方式时,作查询状态位来使用,查询有效 后应以软件方法及时将该位清“0”
器组成。TMOD是定时器/计数器的工作方式寄存器,确定工作方式和功能; TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
T1计数器
T1引脚
T0计数器
T0引脚
机器周 期脉冲
TH1
TL1
TH0
TL0
内部总线
GATE TF1 TR1 TF0 TR0 C/T C/T M1 M0 M1 M0
TCON
字节地址:0A8H
位地址
位符号
位地址:0A8H ~ 0AFH
0ADH
—
0AFH
EA
0AEH
—
0ACH
ES
0ABH
ET1
0AAH
EX1
0A9H 0A8H
ET0 EX0
其中与定时器/计数器有关的控制位共3位: EA:中断允许总控制位 ET0和ET1:定时器/计数器中断允许控制位 ET0(ET1)=0 禁止定时器/计数器中断
31
例6-3
当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500us的同步脉冲, 请编程实现该功能。
●方法1(只用T0) 按照查询方式编程(请同学们自行编写)。 选择T0为模式2 电平发生负跳变采用外部计数方式。当P3.4引脚上发生负跳变时,T0计数器加1,
溢出标志TF0置1,然后改变T0为500us定时方式,并使P1.0同步输入一个500us脉
定时功能
定时功能是通过对单片机内部脉冲进行计数来实
现的。即每个机器周期产生1个计数脉冲,使计数
器加 1。
在使用定时器时,既可以根据计数值计算定时时
间,也可以根据定时时间的要求计算出计数器的
预置值。
9
加法计数器是计满溢出时才申请中断,所以在给计数
器赋初值时,不能直接输入所需的计数值,而应输入
T0引脚 1 1
0 0
M0 M1 C/T GATE M0
D0
中断请求 TF0 TR0
计数/定时选择 0 机器周期
1 D0 INT0引脚
19
M1 C/T GATE D7
6.3.1 模式1及应用
模式1的计数位数是16位,由TL0(TL1)作为低8位、 TH0(TH1)作为高8位,组成了16位加1计数器 。
TL1 = (65536-10000)%256; // while (TF1 != 1); TF1 = 0; } }
22
装入计数初值
//清除T1溢出标志位
P1_1 = ~P1_1;
用中断方式编程
初始化程序应该完成以下工作:
1.对TMOD赋值,以确定T0和T1的工作方式。
2.计算初值,并将其写入TH0、TL0或TH1、TL1。
TH1 = (65536-10000)/256; TL1 = (65536-10000)%256;
注意定时器的初 值计算方法!
21
用查询方式编程
void main()
{ TMOD = 0x10;//T1模式1,定时
TR1 = 1; //定时器开始计数
while(1) {
TH1 = (65536-10000)/256;
8位 D0
TH0
≥1
在模式2下,当计数器计满255(FFH)溢出时,CPU自动把TH 的值装入
TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。
30
二、模式 2 工作特点 可以自动重新装载的8位定时器/计数器。 在程序初始化时,TL0和TH0由软件赋予相同的初值。 用于定时工作方式时,定时时间为: t=(28-TH0初值)×振荡周期×12 用于计数工作方式时,计数长度最大为:28=256个脉冲 该模式可省去软件中重装常数的语句,并可产生相当精确 的定时时间,适合于作串行口波特率发生器。
11
M1和M0:工作方式选择位
M1 M0 0 0 1 1 0 1 0 1 工作 方式 0 1 2 3 低 5 位) 16 位定时器/计数器 自动重新装入初值的 8 位定时器/计数器 T0 分成两个独立的 8 位计数器,T1 停 说 明
13 位定时器/计数器(TH的 8 位和TL的
止工作
12
C/T :定时方式或计数方式选择位
GATE
TMOD
外部中断相关位
控制单元 T1方式
T0方式
5
计数器工作原理
计数功能
所谓计数是指对外部事件进行计数。外部事件的发
生以输入脉冲表示,因此计数功能的实质就是对外 来脉冲的计数。 AT89S51芯片的信号引脚T0(P3.4)和T1(P3.5)分 别是两个计数器的计数输入端。外部输入的脉冲在 负跳变时有效,供计数器进行加 1 计数。
6
计数器工作原理 计数器输入的计数脉冲源
系统的时钟占当期输出脉冲经12分频后产生,通过T0 或T1引脚对外部脉冲信号计数。
计数过程
每来一个脉冲计数器加1,当加到计数器为全1(即 FFFFH)时,再输入一个脉冲就使计数器回零,且计数器 的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时 器/计数器中断允许时)。如果定时器/计数器工作于定时 模式,则表示定时时间已到;如果工作于计数模式,则表 示计数值已满。
TCON
TF1 申请 中断 TR1 TF0 TR0 D7 溢出 T0引脚 1 0
TMOD M0 M1 D0
16 位计数器 TH0 TL0
8位 8位 &
≥1 ≥1
1 0 机器周期
C/T GATE
M0 1 M1 C/T GATE D7
D0
INT0引脚
20
例6-1
用定时器T1产生一个50Hz的方波,由P1.1输出。 方波周期为T=1/50=0.02s=20ms,用T1定时10ms,单片机采用 12MHZ晶振,一个机器周期是1us,即是计数器计数10000次。
位地址 8FH 8EH 8DH 8CH 8BH 8AH
(可位寻址)
89H 88H
位符号 TF1 TR1
TF0
TR0
IE1
IT1
IE0
IT0
功能:用于保存外部中断请求以及定时器的计数溢出。 TCON 既有定时器 / 计数器的控制功能,又有中断控制 功能,其中与定时有关的控制位共 4 位: TF1 、 TR1 、 TF0、TR0。
TL0和TH1、TL1组成。
3
定时器的实质
——16位加1计数器 用于定时控制、延时、外部事件计数和检测等
场合。
每个定时器可由软件设置为定时工作方式或技
术工作方式及其它灵活的可控功能方式,这些
功能由TMOD和TCON所控制。
4
定时器/计数器的结构和工作原理
定时器/计数器的结构
定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存
第六章 AT89S51单片机的定时器/计数器
1
本章主要内容:
6-1.定时器概述 6-2.定时器的控制 6-3.定时器的4种模式及其应用
6-4.定时器/计数器综合应用举例
2
6.1 定时器概述
AT89S51 单片机有 2 个 16 位的可编程定时
器/计数器,称为定时器/计数器0和定时器/计
数器 1,分别由两个 8位的特殊功能寄存器 TH0、
15
位地址 8FH 8EH 8DH 位符号 TF1 TR1 TF0
8CH TR0
8BH IE1
8AH IT1
89H IE0
88H IT0
TR0和TR1:运行控制位(软件置1或清0)
TR0(TR1)=0 TR0(TR1)=1 停止定时器/计数器工作 启动定时器/计数器工作
16
中断允许控制寄存器:IE
32
方法2:计数用T0,采用查询方式,定时用T1中断,均采用模 式2。 T0工作在外部事件计数方式,当计数达到0FFH时候,再加 1计数器就会溢出。
T1工作在定时工作方式,设晶振频率为6MHz,500μs相当
ET0(ET1)=1
17
允许定时器/计数器中断
6.3 定时器的4种模式及应用
计数器工作方式选择
M1
0
建议不采用该工 作方式!
M0
0
工作方式
方式0
功能说明
13位计数器 在精确定时采用
该工作方式!
0 1
1 0 1 1
Leabharlann Baidu
方式1
方式2 方式3
16位计数器
自动重装8位计数器 定时器0:分成两个8位 定时器1:停止计数
}
26
书上例题6.4.1
如何控制LED闪烁时间
注意:计算初值的思路。
27
书上例题6.4.2
计数器的应用
控制LED闪烁。
28
例题6-2 用单片机和内部定时器来产生矩形 波,要求频率为100Hz,占空比为0.25, 设单片机的时钟频率为12MHz。 占空比:在一串理想的脉冲周期序列中, 正脉冲的持续时间与脉冲总周期的比值。
18
模式0
模式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成 TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志, 向CPU发出中断请求。 该方式计算不方便, 建议不采用!
TMOD D7 溢出 TH0 TL0 13位计数器 8位 5位 &
≥1
TCON TF1 申请 中断 TR1
7
计数器工作原理
计数方式下,单片机在每个机器周期的 S5P2对计 数脉冲输入引脚进行采样。如果前一个机器周期
为高电平,后一个机器周期为低电平,即为一个
有效的计数脉冲,在下一个机器周期的 S3P1进行
计数。由于采样计数脉冲是在2个机器周期完成的,
所以计数脉冲的周期不能小于2个机器周期。
8
定时器工作原理
29
5.3.2 模式2及其应用
模式2为自动重装初值的8位计数方式。
TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出8位计数器 TL0 & 1 0 T0引脚 0 1 TMOD M0 M1 C/T 机器周期 GATE M0 1 INT0引脚 M1 C/T GATE D7 D0
TH1重装单元
3.中断方式时,则对IE赋值,开放中断。
4.使TR0或TR1置位,启动定时计数器。
23
程序流程:
开
始
P1.1置1 T1模式设置 T1初值设置(10ms) 中断设置 P1.1取反 开中断 启动定时器T1 中断返回 中断入口 T1初值设置(10ms)
循环等待中断
主程序流程
24
中断服务子程序流程
程序(主程序)
TR1 = 1; //定时器开始计数
while(1); }
25
程序(定时器1中断服务程序) void timer1_int(void) interrupt 3
{
TH0 = (65536-10000)/256;
TL0 = (65536-10000)%256;
P1_1 = ~P1_1;
//重新装入计数初值
#include <reg52.h> #define uchar unsigned char
#define uint unsigned int
sbit P1_1 = P1^1;
void main() { TMOD = 0x10;//T1模式1,16位计数器 TH1 = (65536-10000)/256; TL1 = (65536-10000)%256; // EA = 1; //开总中断 ET1 = 1; //开定时器1中断 装入计数初值
的是计数器计数的最大值与这一计数值的差值。
设最大值为 M ,计数值为 N ,初值为 X ,则 X 的计算方
法为:
定时与计数都是利 用计数实现!!
计数状态: X = M-N
定时状态: X = M-(定时时间∕机器周期)
10
6.2 定时器的控制 62.1 工作模式寄存器:TMOD
字节地址:89H
C/T = 0 C/T = 1 定时工作方式 计数工作方式
GATE: 门控位
GATE=0 以运行控制位(TR0或TR1)启动定时器
GATE=1 以外部中断请求信号(INT0 或INT1)启
动定时器
13
6.2.2定时器/计数器控制寄存器:TCON
字节地址:88H 位地址:88H ~ 8FH
位 序 D7 GATE D6 C/T 位符号
(不可位寻址)
D5 M1 D4 M0 D3 GATE D2 C/T D1 M1 D0 M0
定时器/计数器 1
定时器/计数器 0
功能:用于设定定时器/计数器的工作方式(只能用字节 传送指令设置其内容) TMOD的低半字节对应定时器/计数器 0,高半字节对应 定时器/计数器 1,前后半字节的位格式完全对应。
14
位地址 8FH 8EH 8DH
位符号 TF1 TR1 TF0
8CH
TR0
8BH
IE1
8AH
IT1
89H
IE0
88H
IT0
TF0和TF1:计数溢出标志位
当计数器产生计数溢出时,相应的溢出标志位由硬 件置“1”。 计数溢出标志位的使用有两种情况:
• 使用中断方式时,作中断请求标志位来使用,在转 向中断服务程序时由硬件自动清“0”。 • 使用查询方式时,作查询状态位来使用,查询有效 后应以软件方法及时将该位清“0”
器组成。TMOD是定时器/计数器的工作方式寄存器,确定工作方式和功能; TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
T1计数器
T1引脚
T0计数器
T0引脚
机器周 期脉冲
TH1
TL1
TH0
TL0
内部总线
GATE TF1 TR1 TF0 TR0 C/T C/T M1 M0 M1 M0
TCON
字节地址:0A8H
位地址
位符号
位地址:0A8H ~ 0AFH
0ADH
—
0AFH
EA
0AEH
—
0ACH
ES
0ABH
ET1
0AAH
EX1
0A9H 0A8H
ET0 EX0
其中与定时器/计数器有关的控制位共3位: EA:中断允许总控制位 ET0和ET1:定时器/计数器中断允许控制位 ET0(ET1)=0 禁止定时器/计数器中断
31
例6-3
当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500us的同步脉冲, 请编程实现该功能。
●方法1(只用T0) 按照查询方式编程(请同学们自行编写)。 选择T0为模式2 电平发生负跳变采用外部计数方式。当P3.4引脚上发生负跳变时,T0计数器加1,
溢出标志TF0置1,然后改变T0为500us定时方式,并使P1.0同步输入一个500us脉
定时功能
定时功能是通过对单片机内部脉冲进行计数来实
现的。即每个机器周期产生1个计数脉冲,使计数
器加 1。
在使用定时器时,既可以根据计数值计算定时时
间,也可以根据定时时间的要求计算出计数器的
预置值。
9
加法计数器是计满溢出时才申请中断,所以在给计数
器赋初值时,不能直接输入所需的计数值,而应输入
T0引脚 1 1
0 0
M0 M1 C/T GATE M0
D0
中断请求 TF0 TR0
计数/定时选择 0 机器周期
1 D0 INT0引脚
19
M1 C/T GATE D7
6.3.1 模式1及应用
模式1的计数位数是16位,由TL0(TL1)作为低8位、 TH0(TH1)作为高8位,组成了16位加1计数器 。
TL1 = (65536-10000)%256; // while (TF1 != 1); TF1 = 0; } }
22
装入计数初值
//清除T1溢出标志位
P1_1 = ~P1_1;
用中断方式编程
初始化程序应该完成以下工作:
1.对TMOD赋值,以确定T0和T1的工作方式。
2.计算初值,并将其写入TH0、TL0或TH1、TL1。
TH1 = (65536-10000)/256; TL1 = (65536-10000)%256;
注意定时器的初 值计算方法!
21
用查询方式编程
void main()
{ TMOD = 0x10;//T1模式1,定时
TR1 = 1; //定时器开始计数
while(1) {
TH1 = (65536-10000)/256;
8位 D0
TH0
≥1
在模式2下,当计数器计满255(FFH)溢出时,CPU自动把TH 的值装入
TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。
30
二、模式 2 工作特点 可以自动重新装载的8位定时器/计数器。 在程序初始化时,TL0和TH0由软件赋予相同的初值。 用于定时工作方式时,定时时间为: t=(28-TH0初值)×振荡周期×12 用于计数工作方式时,计数长度最大为:28=256个脉冲 该模式可省去软件中重装常数的语句,并可产生相当精确 的定时时间,适合于作串行口波特率发生器。
11
M1和M0:工作方式选择位
M1 M0 0 0 1 1 0 1 0 1 工作 方式 0 1 2 3 低 5 位) 16 位定时器/计数器 自动重新装入初值的 8 位定时器/计数器 T0 分成两个独立的 8 位计数器,T1 停 说 明
13 位定时器/计数器(TH的 8 位和TL的
止工作
12
C/T :定时方式或计数方式选择位
GATE
TMOD
外部中断相关位
控制单元 T1方式
T0方式
5
计数器工作原理
计数功能
所谓计数是指对外部事件进行计数。外部事件的发
生以输入脉冲表示,因此计数功能的实质就是对外 来脉冲的计数。 AT89S51芯片的信号引脚T0(P3.4)和T1(P3.5)分 别是两个计数器的计数输入端。外部输入的脉冲在 负跳变时有效,供计数器进行加 1 计数。
6
计数器工作原理 计数器输入的计数脉冲源
系统的时钟占当期输出脉冲经12分频后产生,通过T0 或T1引脚对外部脉冲信号计数。
计数过程
每来一个脉冲计数器加1,当加到计数器为全1(即 FFFFH)时,再输入一个脉冲就使计数器回零,且计数器 的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时 器/计数器中断允许时)。如果定时器/计数器工作于定时 模式,则表示定时时间已到;如果工作于计数模式,则表 示计数值已满。
TCON
TF1 申请 中断 TR1 TF0 TR0 D7 溢出 T0引脚 1 0
TMOD M0 M1 D0
16 位计数器 TH0 TL0
8位 8位 &
≥1 ≥1
1 0 机器周期
C/T GATE
M0 1 M1 C/T GATE D7
D0
INT0引脚
20
例6-1
用定时器T1产生一个50Hz的方波,由P1.1输出。 方波周期为T=1/50=0.02s=20ms,用T1定时10ms,单片机采用 12MHZ晶振,一个机器周期是1us,即是计数器计数10000次。
位地址 8FH 8EH 8DH 8CH 8BH 8AH
(可位寻址)
89H 88H
位符号 TF1 TR1
TF0
TR0
IE1
IT1
IE0
IT0
功能:用于保存外部中断请求以及定时器的计数溢出。 TCON 既有定时器 / 计数器的控制功能,又有中断控制 功能,其中与定时有关的控制位共 4 位: TF1 、 TR1 、 TF0、TR0。
TL0和TH1、TL1组成。
3
定时器的实质
——16位加1计数器 用于定时控制、延时、外部事件计数和检测等
场合。
每个定时器可由软件设置为定时工作方式或技
术工作方式及其它灵活的可控功能方式,这些
功能由TMOD和TCON所控制。
4
定时器/计数器的结构和工作原理
定时器/计数器的结构
定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存
第六章 AT89S51单片机的定时器/计数器
1
本章主要内容:
6-1.定时器概述 6-2.定时器的控制 6-3.定时器的4种模式及其应用
6-4.定时器/计数器综合应用举例
2
6.1 定时器概述
AT89S51 单片机有 2 个 16 位的可编程定时
器/计数器,称为定时器/计数器0和定时器/计
数器 1,分别由两个 8位的特殊功能寄存器 TH0、
15
位地址 8FH 8EH 8DH 位符号 TF1 TR1 TF0
8CH TR0
8BH IE1
8AH IT1
89H IE0
88H IT0
TR0和TR1:运行控制位(软件置1或清0)
TR0(TR1)=0 TR0(TR1)=1 停止定时器/计数器工作 启动定时器/计数器工作
16
中断允许控制寄存器:IE