当前位置:文档之家› 中断系统与定时器计数器

中断系统与定时器计数器


(2).定时器控制寄存器TCON
D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
中断请求标志 启动定时/计数器 触发方式选择
0 停止 1 启动
0 低电平 1 下降沿
三、定时器/计数器的工作方式
定时器/计数器共有四种工作方式
(1). 方式0—13位方式
响应过程--单片机响应中断后,自动执行下列操作: ① 置位中断优先级有效触发器,即关闭同级和低级
中断: ② 调用入口地址,断点入栈,相当于LCALL指令; ③ 进入中断服务程序。
响应时间--从查询中断请求标志位到转向中断服务 入口地址所需的机器周期数。 (1)最快响应时间 以外部中断的电平触发为最快。 从查询中断请求信号到中断服务程序需要三个机器 周期:
定时
振荡器
1/12
器 C/T=0
T0 TR0
GATE 1
C/T=1
& ≥1
TL0 TH0 TF0
低5位 8位
13位计数器
INT0
计数脉冲输入
计数 器
(2). 方式1—16位方式
振荡器
T0 TR0 GATE 1 INT0
1/12 C/T=0
C/T=1 &
≥1
TL0 TH0 TF0 8位 8位
16位计数器
④TR位置位控制定时器的启动和停止。
例1:设晶振频率fOSC=6MHz,使用定时器1以方式 1产生周期为500μs的方波脉冲,并由P1.0 输出。
试以中断方式实现。
8051
P1.0
500μs
① TMOD确定 T1控制
T0控制
GATE C/T M1 M0 GATE C/T M1 M0
0001XXXX
主程序
MAIN: HERE:
汇编语言源程序清单
ORG 0000H LJMP MAIN ORG 0003H LJMP INT_0 ORG 0013H LJMP INT_1 ORG 0030H ANL P1, #55H SETB EX0 SETB IT0 SETB EX1 SETB IT1 SETB EA SJMP HERE
四、定时/计数器常数的计算
(1).计数器初值的计算 设计数器的最大计数值为M(根据不同工作方 式,M可以是213、216或28),则计算初值X的 公式如下: X=M-要求的计数值
(2).定时器初值的计算
在定时器模式下,计数器由单片机主脉冲 fosc经12分频后计数。因此,定时器定时初 值计算公式:
X=M-(要求的定时值)/(12/fosc)
式中,M为定时器模值(根据不同工作方式, M可以是213、216或28)
五、定时器/计数器的应用
定时器/计数器在应用前需要进行初始化:
①确定TMOD控制字:编程时将控制字送TMOD;
②计算计数器的计数初值: 编程时将计数初值送TH、TL;
③开中断(如果使用中断方式): 编程实置位EA、ET
中断系统初始化
开相应中断源的中断;(IE) 设定中断优先级;(IP) 若为外部中断,设定外部中断的触发方式。
中断应用举例
8051单片机只有2个外部中断源和,当实际应用 中需要多个外部中断源时,可采用硬件请求和软 件查询相结合的办法进行扩展,把多个中断源通 过“或非”门接到外部中断输入端,同时又连到 某个I/O端口,这样每个中断源都能引起中断, 然后在中断服务程序中通过查询I/O端口的状态 来区分是哪个中断源引起的中断。若有多个中断 源同时发出中断请求,则查询的次序就决定了同 一优先级中断中的优先级。
(3). 方式2—8位自动装入时间常数方式
振荡器
T0 TR0 GATE 1 INT0
1/12 C/T=0
C/T=1 & ≥1
TL0 TF0 TH0
(4). 方式3—双8位方式
仅T0可以工作在方式3—此时T0分成2个独立的 计数器—TL0和TH0 ,前者用原来T0的控制信 号(TR0、TF0),后者用原来T1的控制信号 (TR1、TF1)。
方式1:最大计数值为M=216,因此定时器的 初值应为 X = 216-(1×10-3)/(2×10-6) = 65036D
= 1111111000001100B = FE0CH 此时高8位TH1的初值为FEH,低8位TL1的 初值为0CH。
方式2:最大计数值为M=28,因此定时器的初值 应为
X = 28-(1×10-3)/(2×10-6) = 256-500= -254
定时器和串行口中断分别是: T0溢出中断; 由片内定时/计数器0提供 T1溢出中断; 由片内定时/计数器1提供 串行口中断RI/TI; 由片内串行口提供
中断方式
单片机的中断为向量中断,即一响应中断就转入固
定入口地址执行中断服务程序。
具体如下:
中断源
入口地址
INT0
0003H
T0
000BH
INT1
0013H
每一中断源可编程为高优先级或低优先级中断,以实现二级嵌套。默 认的优先次序为:INT0、C/T0、INT1、C/T1、串行口中断(依次从高 到低)
中断响应
响应条件----CPU要响应中断需满足下列条件: ① 无同级或高级中断正在服务; ② 当前指令周期结束,如果查询中断请求的机器
周期不是当前指令的最后一个周期,则不行; ③ 若现行指令是RETI、RET或访问IE、IP指令,则 需要执行到当前指令及下一条指令方可响应。
控制字10H
② 计算定时器的初值;
要产生500μs 的方波脉冲,只需在P1.0端 以250μs为间隔,交替输出高低电平即可实现。 为此,定时间应为250μs 。使用6MHz晶振, 则一个机器周期为2μs,设待求定时器初值为X, 则:
(216–X)×2×10 -6 =250×10 -6 即216–X=125 X=216-125=10000H-7DH =0FF83H
ORG 000BH
;定时器T0中断入口
LJMP SQ
;跳转到定时器T0中断服务程序
ORG 0030H
;主程序入口地址
MAIN: MOV TMOD,#10H
;主程序,设置TMOD控制字
MOV TL1, #83H
;写入T0定时2毫秒初值
MOV TH1, #0FFH
MOV IE, #88H
;开中断,设置IE控制字
中断系统与定时器/计数器
中断的概念
在程序的执行过程中,由于某种外界的 原因,必须终止当前执行的程序,而去 执行相应的处理程序,待处理结束后, 再回来继续执行被终止的程序。这个过 程叫中断。
中断系统结构图
中断请 求标志
INT0 IE0
T0 TF0
INT1 IE1 T1 TF1
中断允 许控制
EX0
计算得到的初值为负值,说明当fosc=6MHz时, 不能采用方式2(即常数自动装入)来产生1ms的定 时,除非把单片机的时钟频率降得很低。
注意:响应中断后,CPU并不清零中断标志位,必须软件清零。
(3).中断允许控制寄存器IE
D7 D6 D5 D4 D3 D2 D1 D0 0 禁止
EA
ES ET1 EX1 ET0 EX0 1允许
实现两级控制 注意:复位时,禁止所有中断
(4).中断优先级控制寄存器(IP)
D7 D6 D5 D4 D3 D2 D1 D0 0 低级别 PS PT1 PX1 PT0 PX0 1高级别
方式0:最大计数值为M=213,因此定时器的初值应为 X = 213-(1×10-3)/(12/(6×10-6) = 7692D = 1111000001100B
其中高8位为TH1的初值,即F0H,低5位为TL1的初值 注意,这里TL1的初值应为00001100B即0CH,而不是 60H,因为在方式0时,TL1的高3位是不用的,应都 设为0。
(1).定时控制寄存器TCON
D7 D6 D5 D4 D3 D2 D1 D0
TF1
TF0
IE1 IT1 IE0 IT0
中断请求标志
触发方 0 低电平 式选择 1 下降沿
注意:电平触发时,在中断返回前应撤除中断源。
(2).串行口控制寄存器SCON
D7 D6 D5 D4 D3 D2 D1 D0 串行中断 TI RI 请求标志
所以,初值为: TH1=0FFH,TL1=83H
③ 采用中断方式:编程时将IE控制字设置为 88H,实现开中断。
④ 由定时器控制寄存器TCON中的TR1位控制定 时器的启动和停止。 TR1=1,启动; TR1=0,停止。
汇编语言源程序清单
ORG 0000H
;复位地址
LJMP MAIN
;跳转到主程序
T1
001BH
R跳转指令,跳到真正的中
断服务程序,这是因为给每个中断源安排的空间只
有8个单元。
与中断有关的特殊功能寄存器
与中断有关的特殊功能寄存器有四个:
TCON----定时控制寄存器, IE----中断允许控制寄存器, IP----中断优先级控制寄存器, SCON----及串行口控制寄存器。
一、定时器/计数器的功能
定时/计数器的核心部件是二进制加1计数 器(TH0、TL0或TH1、TL1) 。 1. 定时功能----计数输入信号是内部时钟脉 冲,每个机器周期使技数器的值加1。
2. 计数功能----计数脉冲来自相应的外部输入 引脚,T0为P3.4,T1为P3.5。
在特殊功能寄存器TMOD中,有一个控制位(C/ T),分别用于控制定时/计数器工作在定时器方 式还是计数器方式。
SETB P1.1
L1:
JNB P1.2, L2
SETB P1.3
L2:
JNB P1.4, L3
SETB P1.5
相关主题