第 5章 定时 /计数器与中断系统
5.1 定时 /计数器结构特点及控制
5.2 中断系统结构及管理
5.3 定时 /计数器及中断系统综合应
5.1 定时 /计数器结构特点及控制
5.1.1 定时 /计数器结构
5.1.2 定时 /计数器工作方式
5.1.3 定时 /计数器控制寄存器
5.1.4 定时 /计数器常数的计算返回本章首页
5.1.1 定时 /计数器结构
定时 /计数器简称定时器,8031单片机有 2个 16位的定时 /计数器:定时器 0( T0) 和定时器 1( T1
) 。 它们都有定时器或事件计数的功能,可用于定时控制,延时,对外部事件计数和检测等场合 。
T0由 2个特殊功能寄存器 TH0和 TL0构成,T1则由
TH1和 TL1构成 。 作计数器时,通过引脚 T0( P3.4
) 和 T1( P3.5) 对外部脉冲信号计数,当输入脉冲信号从 1到 0的负跳变时,计数器就自动加 1。
计数的最高频率一般为振荡频率的 1/24。
返回本节
5.1.2 定时 /计数器工作方式
每个定时 /计数器还有 4种工作模式,也就是每个定时器可构成 4种电路结构模式 。
在模式 0,1和 2,T0和 T1的工作模式相同,在模式 3,两个定时器的模式不同 。 下面以 T1为例,
分述各种工作模式的特点和用法 。
下一页
1.模式 0
图 5-1 定时 /计数器 T1( T0) 工作模式 0
下一页
2.模式 1
图 5-2 定时 /计数器 T1( T0) 工作模式 1
下一页
3.模式 2
图 5-3 定时 /计数器 T1( T0) 工作模式 2
下一页
4.模式 3
图 5-4 定时 /计数器 T1( T0) 工作模式 3
返回本节
5.1.3 定时 /计数器控制寄存器
定时器共有 2个控制寄存器 TMOD和 TCON,由软件写入 TMOD和 TCON 两个 8位寄存器,设置各个定时器的操作模式和控制功能 。
下一页
1.工作模式控制寄存器 —TMOD( 89H)
GATE C/T M 1 0M GATE C/T 1M 0M
控 制 T 1 控 制 T 0
89H
和T 类 同 0
1M 0M
00
01
10
11
方 式方式0
方式1
方式2
方式3
0
1
定时器模式计数器模式
0
1
与I NT 无关 0
0与I NT 有关图 5-5 定时器工作模式寄存器 TMOD
下一页
2.定时器控制寄存器 —TCON( 88H)
T C O N
位地址
0DD 1D 2D 3D 4D 5D 6D 7
IT 0IE 0IT 11IETR 0TF 0TR 1TF 1
88898A8B8C8D8E8F
见下一节
{
00,停T 计数
01,启T 计数
00,无T 中断(硬件复位)
{
1,有T 溢出中断 0
0,无T 中断(硬件复位)
10,停T 计数
{
1,有T 溢出中断
1,启T 计数
{
1
1
1
图 5-6 定时器工作模式寄存器 TCON
返回本节
5.1.4 定时 /计数器常数的计算
1,计数器初值的计算
把计数器计满为零所需要的计数值设定为 C,计数初值设定为 TC,由此可得到公式:
TC=M-C
式中,M为计数器模值,该值和计数器工作方式有关 。 在方式 0时 M为 213;在方式 1时 M为 216;在方式 2和方式 3时 M为 28。
下一页
2,定时器初值的计算
在定时器模式下,计数器由单片机主脉冲经 12分频后计数 。 因此,定时器定时时间 T的公式:
T=( M-TC) T计数上式也可写成,TC=M-T/T计数
式中,M为模值,和定时器的工作方式有关; T计数 是单片机振荡周期 TCLK的 12倍; TC为定时器的定时初值。
返回本节
5.2 中断系统结构及管理
5.2.1 中断请求与控制
5.2.2 中断系统的结构
5.2.3 中断控制
5.2.4 中断响应过程返回本章首页
5.2.1 中断请求与控制图
5-
7
中断流程返回本节
5.2.2 中断系统的结构
1,外部中断源由 P3.2端口线引入,低电平或下降沿引起 。
由 P3.3端口线引入,低电平或下降沿引起 。
2,内部中断源 ( 如图 5-8所示 )
T0,定时 /计数器 0中断,由 T0回零溢出引起 。
T1,定时 /计数器 1中断,由 T1回零溢出引起 。
TI/RI,串行 I/O中断,完成一帧字符发送 /接收引起 。
返回本节图 5-8 中断系统的结构框图返回
5.2.3 中断控制
1,中断允许寄存器 IE( A8H)
IE在特殊功能寄存器中,字节地址 A8H,位地址分别是 A8H~ AFH。 IE控制 CPU对中断源总的开放或禁止以及每个中断源是否允许中断 。 其格式如图 5-9所示 。
2,中断优先寄存器 IP( B8H)
IP在特殊功能寄存器中,字节地址为 B8H,位地址分别是 B8H~ BFH,IP用来锁存各中断源优先级的控制位,其格式 如图 5-10所示 。
返回本节
0,关I NT 中断 0
1,开I NT 中断 0
0,关T 中 断
1,开T 中 断 0
0
1,开T 中 断
0,关T 中 断
0,关I NT 中断
1,开I NT 中断
1
1
1
1
0,关T 中 断
1,开T 中 断 2
2
1,开所有中断
0,关所有中断
1,开串行口中断
0,关串行口中断位地址
IE EA
AF AD
ET
AC
ES
AB
ET
AA
EX
A9
ET
A8
EX 00112
图 5-9 中断允许寄存器 IE
返回图 5-10 中断优先寄存器 IP
返回
5.2.4 中断响应过程
单片机在每个机器周期的 S5P2期间,顺序采样每个中断源,CPU在下一个机器周期 S6期间按优先级顺序查询中断标志,如查询到某个中断标志为
1,将在再下一个机器周期 S1期间按优先级进行中断处理 。
中断得到响应后自动清除中断标志,由硬件将程序计数器 PC内容压入堆栈保护,然后将对应的中断矢量装入程序计数器 PC,使程序转向中断矢量地址单元中去执行相应的中断服务程序。
下一页下列任何一种情况存在中断申请将被封锁:
( 1) CPU正在执行一个同级或高一级的中断服务程序 。
( 2) 当前正在执行的那条指令还未执行完 。
( 3) 当前正在执行的指令是 RETI或对 IE,IP寄存器进行读 /写指令,执行这些指令后至少再执行一条指令才会响应中断 。
返回本节
5.3 定时 /计数器及中断系统综合应用
【 例 5.2】 设 MCS-51单片机系统时钟频率 ФCLK为
6MHZ,请编出利用定时 /计数器 T0在 P1.0引脚上产生周期为 2秒,占空比为 50%的方波信号的程序
( 1) 主程序任务:
1) T0工作方式的设定,选择方式 1( 16位方式 )
( 最大定时 131ms)
2) 定时常数的设定,TC=216-100ms/2μs=15536=3CB0H
下一页即,TH0应装 3CH,TL0应装 B0H。
3) 中断管理,允许 T0中断,开放总中断即,IE应装 10000010B。
4) 启动定时器 T0,SETB TR0
5) 设置软件计数器初值,( 如使用 R7)
即 R7应装 0AH
6) 动态停机,SJMP$
下一页主程序如下:
MAIN,MOV TMOD,#01H ; 设定 T0为方式 1
MOV TH0,#3CH ; 装入定时常数高 8位
MOV TL0,#0B0H ; 装入定时常数低 8位
MOV IE,#82H ; 开放 T0中断
SETB TR0 ; 启动 T0
MOV R7,#0AH ; 设置软件计数器
SJMP $
下一页
( 2) 中断服务程序任务,1) 恢复 T0常数; 2) 软件计数器减 1; 3) 判断软件计数器是否为 0。 为 0时,改变 P1.0状态,并恢复软件计数器初值;不为 0时中断返回 。
程序如下:
TOINT,MOV TL0,#0B0H ; 恢复定时常数
MOV TH0,#3CH ;
DJNZ R7,NEXT
CPL P1.0
MOV R7,#0AH
NEXT,RETI
下一页完整程序如下:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TOINT
ORG 0030H
MAIN,MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV IE,#82H
SETB TR0
MOV R7,#0AH
下一页
SJMP $
TOINT,MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R7,NEXT
CPL P1.0
MOV R7,#0AH
NEXT,RETI
END
返回本章首页