第五章单片机的中断系统

Download Report

Transcript 第五章单片机的中断系统

第5章
单片机的中断系统
本章的主要内容

MCS-51单片机中断源的种类及工作方式

中断控制寄存器IE、中断优先级寄存器IP
及定时器/计数器及外部中断控制寄存器TCON的使
用方法

MCS-51型单片机中断响应过程

外部中断的结构及原理

熟练编制中断服务程序
5.1 中断系统的概述
5.1.1 中断的概念
主程序
中断响应
执行
中断请求
断点
继续
执行
执行
中断
处理
中断返回
5.1.2
中断的功能

1.实现中断及返回

2.能实现优先权排队

3.能实现中断嵌套
5.2
中断请求
5.2.1 中断源
1.中断源分类
五个中断源,分别是
外部中断0: INT0,由P3.2提供,
外部中断1: INT1,由P3.3提供,
外部中断有两种信号方式,即电
平方式和脉冲方式。
T0溢出中断; 由片内定时/计数器0提供
T1溢出中断; 由片内定时/计数器1提供
串行口中断RI/TI; 由片内串行口提供
2 中断请求
中断源开放
0
INT 0
1
中断开放
EX 0
IT 0
PT 0
1
0
INT1
1
EX 1
IT1
PX 1
IE
中断源
中断
向量
1
0
ET 1
PT 1
TF1
T1
高级中断
请求
0
ET 0
0
查询硬件
PX 0
IE 0
TF 0
中断优先
级寄存器
1
1
0
低级中断
请求
1
ES
PS
R1
0
EA
中断源
中断
向量
3.中断源入口地址
中断源
入口地址
INT0
T0
INT1
T1
RI/TI
0003H
000BH
0013H
001BH
0023H
5.2.2中断寄存器

在中断请求被响应前,中断请求是由CPU锁存在
特殊功能寄存器TCON和SCON相应中断标志位中。
与中断控制有关的控制寄存器有四个:
TCON ---IE ----
定时控制寄存器,
中断允许控制寄存器,
IP ---- 中断优先级控制寄存器,
SCON ----及串行口控制寄存器。
1.中断允许控制寄存器IE
D7 D6
EA
D5
D4
D3
D2
D1
ES
ET1 EX1 ET0 EX0
0 禁止,1允许
D0
2.中断优先级的设定

基本原则是:
(1)高优先级不能被低优先级中断;
(2)低优先级可被高优先级中断。
(3)任何一种中断(不管是高级还是低级),
一旦得到响应,不会再被它的同级中断所中断。
(4)两个同一级的中断源同时向CPU发出中断
申请,CPU通过内部硬件查询,按自然优先级确
定优先响应哪一个中断要求
中断优先级控制寄存器(IP)
D7





D6
D5
D4 D3 D2 D1 D0
PS PT1 PX1 PT0 PX0
PS: 串行口中断优先级控制位。
PT1:定时计数器T1中断优先级控制位。
PX1:外部中断1中断优先级控制位。
PT0:定时计数器T0中断优先级控制位。
PX0:外部中断0中断优先级控制位。
注意:单片机复位后,IP寄存器被清0,所有中断源为
低级中断。
3. 定时控制寄存器TCON
D7 D6 D5 D4 D3 D2 D1 D0
TF1
TF0
IE1 IT1 IE0 IT0
1)TCON.7 TF1:T1溢出中断标志。T1被启动计数后,从初值
开始加1计数,直至计满溢出由硬件使TF1=1,向CPU请求中断,
此标志一直保持到CPU响应中断后,才由硬件自动清“0”。也可
用软件查询该标志,并由软件清“0”。
2)TCON.5 TF0:T0溢出中断标志。其操作功能类似于TF1。
3)TCON.3 IE1:外部中断1标志。IE1=1表明外部中断1向
CPU申请中断。
4)TCON.1 IE0:外部中断0标志。其操作功能与IE1类似。
4. 串行口控制寄存器SCON
D7
D6
D5
D4
D3
D2
D1
D0
TI
RI
说明:SCON.1 TI:串行发送中断标志。CPU将一个
字节数据写入发送缓冲器SBUF后启动发送,每发送完一
个串行帧,硬件置位TI。但CPU响应中断后,并不能自
动清除TI标志,必须由软件清除。
5.3 中断处理过程
中断处理过程分为三个阶段:中断响应、
中断处理和中断返回。

中断响应

中断处理(又称中断服务)

中断返回

中断请求的撤除
应
响
断
中
中
断
返
回
5.3.1 中断处理过程
1.CPU的中断响应条件
① 无同级或高级中断正在服务;
② 当前指令周期结束,如果查询中断请求的机器
周期不是当前指令的最后一个周期,则不行;
③ 若现行指令是RETI、RET或访问IE、IP指令,
则需要执行到当前指令及下一条指令响应。


2.响应过程
① 置位中断优先级有效触发器,即关闭同级
和低级中断:

② 调用入口地址,断点入栈,相当于LCALL
指令;

③ 进入中断服务程序。
响应时间--从查询中断请求标志位到转向中断服
务入口地址所需的机器周期数。
(1)最快响应时间
以外部中断的电平触发为最快。
从查询中断请求信号到中断服务程序需要三
机器周期:
1个周期(查询)+2个周期(长调用LCALL)
(2)最长时间
若当前指令是RET、RETI和IP、IE指令,紧接
着下一条是乘除指令发生,则最长为8个周期。
5.3.2 中断处理

中断处理(又称中断服务),程序从入口地址
开始执行,直到返回指令“RETI”为止,这个过
程称为中断处理。

包括两部分内容:
(1)保护现场,
(2)处理中断源的请求。
中断处理过程示意图
中断源发中断请求
N
中断响应条件
是否满足?
Y
Y
中断是否受阻?
N
把PC断点地址压入堆栈
相应中断源的中断入口地址
送入PC,转向中断服务程序
由硬件
自动完成
关中断
中
断
服
务
程
序
保护现场
保护现场和
恢复现场的
过程中不允
许中断,以
免现场遭到
破坏。
开中断
中断服务
关中断
保护和恢复现场之后
的开中断是为了允许
有更高级中断打断此
中断服务程序。
恢复现场
开中断
中断返回
断点地址由堆栈弹入PC
硬件自
动完成
中断处理
INTT0: PUSH ACC
PUSH
DPH
PUSH DPL
PUSH
保护现场
PSW
中断源服务
POP
PSW
POP
DPL
POP
DPH
POP
ACC
RETI
恢复现场
5.3.2 中断返回
 中断返回是指中断服务完
应
响
断
中
中
断
返
回
后,计算机返回到原来暂停
的位置(即断点),继续执行
原来的程序。

中断返回由专门的中断
返回指令RETI来实现。
5.4 外部中断的触发方式

外部中断的方式选择是通过定时/计数器及外部
中断控制寄存器TCON中的标志位选择的。

1)TCON.2 IT1:外部中断1触发方式控制位。
当 IT1=0,外部中断1为电平触发方式。
 若IT1=1,外部中断1控制为边沿触发方式。

2)TCON.0 IT0:外部中断0触发方式控制。
5.5 中断源的扩展

举例:利用单片机扩展5个外部中断源,中断
的优先次序为X0~X4,其中X0接到外部中断上,
X1~X4接到外部中断上;单片机的P1.4~P1.7接
4个发光二极管用来作输出指示;
(1) 当有X1~X4其中一个外部中断发生时,相
应的发光二极管D1~D4点亮;
(2) 当X0外部中断发生时,4个发光二极管全
亮。

ORG
AJMP
0000H
MAIN

ORG
0003H

AJMP
ZHD0

ORG
0013H

AJMP
ZHD1

ORG
0030H


MAIN:MOV SP,#70H
;中断0服务程序入口地址
;中断1服务程序入口地址
;设置堆栈指针

SETB IT0
; 外部中断0为边沿触发方式

SETB IT1
;外部中断1为边沿触发方式

MOV IP,#00000001B


MOV IE,#10000101B
MOV A,#0FFH
;外部中断0为
;开放外部中断0,1
;关闭发光二极管














MOV P1,A
LOOP: AJMP LOOP
ZHD0: PUSH PSW
PUSH A
MOV A,#0FH
MOV P1,A
POP A
POP PSW
RETI
ZHD1: PUSH PSW
PUSH A
ORL P1,#0FH
JNB P1.0,IN1
的中断服务程序
;保护现场
;4个发光二极管全亮
;恢复现场
;中断返回
;保护现场
;读取P1口的低4位
;中断源查询,并转向相应




FH1:



IN1:



IN2:





IN3:
JNB P1.1,IN2
JNB P1.2,IN3
JNB P1.3,IN4
POP A
POP PSW
RETI
MOV A,#11101111B
MOV P1,A
AJMP FH1
MOV A,#11011111B
MOV P1,A
AJMP FH1
MOV A,#10111111B
MOV P1,A
AJMP FH1
;恢复现场
;中断服务程序1
;D1发光二极管亮
;中断服务程序2
;D2发光二极管亮
;中断服务程序3
;D3发光二极管亮




IN4:MOV A,#01111111B
MOV P1,A
AJMP FH1
END
;中断服务程序4
;D4发光二极管亮
5.6 中断请求的撤除
CPU响应某中断请求后,在中断返回前,应该撤
除该中断请求,否则会引起另一次中断。
定时器0或1溢出:CPU在响应中断后,硬件清除
了有关的中断请求标志TFO或TF1,即中断请求是
自动撤除的。
串行口中断:CPU响应中断后,没有用硬件清除
T1、R1,要靠软件来清除相应的标志。
边沿激活的外部中断:CPU在响应中断后,也是
用硬件自动清除有关的中断请求标志IE0或IE1。
电平激活的外部中断源中断标志撤除
电平触发外部中断撤除方法较复杂。
因为在电平触发方式中,CPU响应中断 时不会
自动清除IE1或IE0标志,所以在响应中断后应立即
撤除INT0或INT1引脚上的低电平。
 在硬件上,CPU对INT0和INT1引脚的信号不能控
制,所以这个问题要硬件软件来配合解决。
撤除外部电平请求信号的方案( 参见P124 图5-7)
ANL
ORL
P1,#0FEH
P1,#01H
CLR P1.0
D型触发器
外部
设备
D
Q
CP SD
MCS-51
SETB P1.0
INTX
P1 .0
服务程序
主体
RETI
硬件电路部分
中断服务程序
由图可知,外部中断请求信号不直接加 INT 或 INT
1
0
引脚上,而是加在D触发器的CLK端。由于D端接地,当外
部中断请求的正脉冲信号出现在CLK端时,Q端输出为0,
INT0 或 INT1为低,外部中断向单片机发出中断请求。利用
P1口的P1.0作为应答线,当CPU响应中断后,可在中断服务
程序中采用两条指令:
ANL
P1,#0FEH
ORL
P1,#01H
来撤除外部中断请求。第一条指令使P1.0为0,因
P1.0与D触发器的异步置1端SD相连,Q端输出为1,从
而撤除中断请求。第二条指令使P1.0变为1,SD = 1,
无效,Q继续受CLK控制,即新的外部中断请求信号又
能向单片机申请中断。第二条指令是必不可少的,否
则,将无法再次形成新的外部中断。
采用定时器(T0,T1)中断,其中断请求的撤除
由硬件自动完成,无须采取其它措施。
5.7 中断初始化

中断系统初始化步骤如下:

⑴ 开相应中断源的中断;

⑵ 设定所用中断源的中断优先级;

⑶ 若为外部中断,则应规定低电平还
是负边沿的中断触发方式。


【例1】请写出 INT1 为低电平触发的中断系统初始
化程序。
①采用位操作指令
SETB EA
SETB EX1
;开外部中断1
SETB PX1
;令外部中断1为高优先级
CLR IT1
;令外部中断1为电平触发
②采用字节型指令
MOV IE,#84H
;开外部中断1中断
ORL IP,#04H
;令为外部中断1高优先级
ANL TCON,#0FBH ;令外部中断1为电平触发
IE ( A8H)
IP ( B8H)
EA
ES
ET1 EX1 ET0 EX0
PS
PT1 PX1 PT0 PX0
SCON 98H
TCON 88H
TF1 TR1
TF0 TR0
IE1
IT1
TI
RI
IE0
IT0

5.8 外部中断的系统设计应用
举例:外设数据经P1口输入单片机,每准备好一个数
据,外设发出选通信号,经触发器和非门至INT0。
数据传送过程:
P1口
数据
P3.0
INT0
8031
1
Q CLR
D
CLK
+5V
选通信号
1. 选通信号有
效,发中断
请求;
2. 执行中断读
取数据,同
时将中断请
求撤除
(P3.0=0,使
INT0=1)
ORG 0000H
START:LJMP MAIN
ORG 0003H
LJMP IINT0
ORG 0030H ;主程序
MAIN: CLR IT0
;低电平触发
SETB EA
SETB EX0 ;开中断
MOV DPTR,#1000H
...
IINT0: PUSH PSW
PUSH ACC
CLR P3.0
NOP
NOP
SETB P3.0
MOV A,P1
MOVX @DPTR,A
INC DPTR
...
POP ACC
POP PSW
RETI
;中断处理程序
;撤除INT0
;输入数据
;保存数据
;恢复现场
;返回主程序