当前位置: 首页 > >

第5章 MCS-51中断系统g讲解

发布时间:

第5章 MCS-51单片机中断系统
5.1 中断概述 5.2 MCS-51中断系统 5.3 响应中断的条件和过程 5.4 关于外部中断 5.5 应用举例

一、中断概述
?1.1中断的概念
中断是单片机实时地处理内部或外部 事件的一种内部机制。当某种内部或外部 事件发生时,单片机的中断系统将迫使 CPU暂停正在执行的程序,转而去进行中 断事 件的处理,中断处理完毕后,又返回 被中断的程序处,继续执行下去。

几个例子
? 生活中的例子 ? 打印机中断 ? 网络中断 ? 软中断

几个名词
CPU在处理某一事件A时,发生了另 一事件B请求CPU迅速去处理(中断发 生);
CPU暂时中断当前的工作,转去处理 事件B(中断响应和中断服务);
待CPU将事件B处理完毕后,再回到 原来事件A被中断的地方继续处理事件A (中断返回)。

主程序A

断点

响应 中断服务程序B

返回

……

RETI

引起CPU中断的根源,称为中断源。中断 源向CPU提出的中断请求。CPU暂时中断原 来的事务A,转去处理事件B。对事件B处理完 毕后,再回到原来被中断的地方(即断点),
称为中断返回。实现上述中断功能的部件称为 中断系统(中断机构)。

中断的特点和优点
随着计算机技术的应用,人们发现中断技 术不仅解决了快速主机与慢速I/O设备的数据 传送问题,而且还具有如下优点:
? 分时操作。CPU可以分时为多个I/O设备 服务,提高了计算机的利用率;
?实时响应。CPU能够及时处理应用系统的 随机事件,系统的实时性大大增强;
?可靠性高。CPU具有处理设备故障及掉电 等突发性事件能力,从而使系统可靠性提高。

二、80C51中断系统的结构
2.1 简介 80C51的中断系统有5个中断源(8052 有 6个) ,2个优先级,可实现二级中 断嵌套。

TCON

IE

IP

INT0 IT0 1
01
T0 INT1 IT1 1
01
T1
RX TX

EX0 1 EA 1 IE0

ET0 1 TF0

EX1 1 IE1

ET1 1 TF1

RI

ES 1

TI

≥1

SCON

中断示意图

PX0 1
0 PT0 1
0 PX1 1
0 PT1 1
0 PS 1
0

硬件查询









1





级 中断入口

中断源





0









级 中断入口

中断源

80C51的中断源 中断源详解

TCON

IE

IP

硬件查询

INT0 IT0 1
01
T0 INT1 IT1 1
01
T1
RX TX

EX0 1 EA 1 IE0

ET0 1 TF0

EX1 1 IE1

ET1 1 TF1

RI

TI

≥1

SCON

ES 1

PX0 1
0 PT0 1
0 PX1 1
0 PT1 1
0 PS 1
0









1





级 中断入口

中断源





0









级 中断入口

中断源

1、 INT0 (P3.2)。可由IT0(TCON.0)选择其为 低电*有效还是下降沿有效。当CPU检测到P3.2 引脚上出现有效的中断信号时,中断标志 IE0(TCON.1)置1,向CPU申请中断。

TCON

IE

IP

硬件查询

INT0 IT0 1
01
T0 INT1 IT1 1
01
T1
RX TX

EX0 1 EA 1 IE0

ET0 1 TF0

EX1 1 IE1

ET1 1 TF1

RI

TI

≥1

SCON

ES 1

PX0 1
0 PT0 1
0 PX1 1
0 PT1 1
0 PS 1
0









1





级 中断入口

中断源





0









级 中断入口

中断源

2、INT1 (P3.3)。可由IT1(TCON.2)选择其为低电* 有效还是下降沿有效。当CPU检测到P3.3引脚上出 现有效的中断信号时,中断标志IE1(TCON.3)置1, 向CPU申请中断。

TCON

IE

IP

硬件查询

INT0 IT0 1
01
T0 INT1 IT1 1
01
T1
RX TX

EX0 1 EA 1 IE0

ET0 1 TF0

EX1 1 IE1

ET1 1 TF1

RI

ES 1

TI

≥1

PX0 1
0 PT0 1
0 PX1 1
0 PT1 1
0 PS 1
0









1





级 中断入口

中断源





0









级 中断入口

中断源

SCON

3、TF0(TCON.5),片内定时/计数器T0 溢出中断请求标志。当定时/计数器T0发生 溢出时,置位TF0,并向CPU申请中断。

TCON

IE

IP

硬件查询

INT0 IT0 1
01
T0 INT1 IT1 1
01
T1
RX TX

EX0 1 EA 1 IE0

ET0 1 TF0

EX1 1 IE1

ET1 1 TF1

RI

ES 1

TI

≥1

PX0 1
0 PT0 1
0 PX1 1
0 PT1 1
0 PS 1
0









1





级 中断入口

中断源





0









级 中断入口

中断源

SCON

4、TF1(TCON.7),片内定时/计数器T1 溢出中断请求标志。当定时/计数器T1发生 溢出时,置位TF1,并向CPU申请中断。

TCON

IE

IP

硬件查询

INT0 IT0 1
01
T0 INT1 IT1 1
01
T1
RX TX

EX0 1 EA 1 IE0

ET0 1 TF0

EX1 1 IE1

ET1 1 TF1

RI

ES 1

TI

≥1

PX0 1
0 PT0 1
0 PX1 1
0 PT1 1
0 PS 1
0









1





级 中断入口

中断源





0









级 中断入口

中断源

SCON

5、RI(SCON.0)或TI(SCON.1),串行口 中断请求标志。当串行口接收完一帧串行数 据时置位RI或当串行口发送完一帧串行数据 时置位TI,向CPU申请中断。

2.2、中断相关寄存器 TCON的中断标志
IT0(TCON.0),外部中断0触发方式控制位。 当IT0=0时,为电*触发方式。 当IT0=1时,为边沿触发方式(下降沿有效)。 IE0(TCON.1),外部中断0中断请求标志位。 IT1(TCON.2),外部中断1触发方式控制位。 IE1(TCON.3),外部中断1中断请求标志位。 TF0(TCON.5),定时/计数器T0溢出中断请求标志位。 TF1(TCON.7),定时/计数器T1溢出中断请求标志位。

SCON的中断标志
?RI(SCON.0),串行口接收中断标志位。当允 许串行口接收数据时,每接收完一个串行帧,由 硬件置位RI。同样,RI必须由软件清除。 ?TI(SCON.1),串行口发送中断标志位。当 CPU将一个发送数据写入串行口发送缓冲器时, 就启动了发送过程。每发送完一个串行帧,由硬 件置位TI。CPU响应中断时,不能自动清除TI, TI必须由软件清除。

中断允许控制 CPU对中断系统所有中断以及某个中断源的开
放和屏蔽是由中断允许寄存器IE控制的。
?EX0(IE.0),外部中断0允许位; ?ET0(IE.1),定时/计数器T0中断允许位; ?EX1(IE.2),外部中断0允许位; ?ET1(IE.3),定时/计数器T1中断允许位; ?ES(IE.4),串行口中断允许位; ?EA (IE.7), CPU中断允许(总允许)位。

中断优先级控制 80C51单片机有两个中断优先级,即可实现二级
中断服务嵌套。每个中断源的中断优先级都是由中断 优先级寄存器IP中的相应位的状态来规定的 。
?PX0(IP.0),外部中断0优先级设定位; ?PT0(IP.1),定时/计数器T0优先级设定位; ?PX1(IP.2),外部中断0优先级设定位; ?PT1(IP.3),定时/计数器T1优先级设定位; ?PS (IP.4),串行口优先级设定位; ?PT2 (IP.5) ,定时/计数器T2优先级设定位。

同一优先级中的中断申请不止一个时,则
有中断优先权排队问题。同一优先级的中断 优先权排队,由中断系统硬件确定的自然优 先级形成,其排列如所示:

同级优先级

? 序号 中断请求标志 中断源

1

IE0

外部中断0

高2

TF0

定时器/计数器 0 溢出中断

3

IE1

外部中断1

4

5

TF1 RI+TI

定时器/计数器 1 溢出中断 串口通讯中断

6

TF2+EXF2 定时器/计数器 1 溢出中断

80C51单片机的中断优先级有三条原则:
?CPU同时接收到几个中断时,首先响应优先级别最 高的中断请求。
?正在进行的中断过程不能被新的同级或低优先级的 中断请求所中断。
?正在进行的低优先级中断服务,能被高优先级中断 请求所中断。
为了实现上述后两条原则,中断系统内部设有两 个用户不能寻址的优先级状态触发器。其中一个置1, 表示正在响应高优先级的中断,它将阻断后来所有 的中断请求;另一个置1,表示正在响应低优先级中 断,它将阻断后来所有的低优先级中断请求。

遇以下任一条件,硬件将受阻,不产生LCALL指令: ?CPU正在处理同级或高优先级中断; ?当前查询的机器周期不是所执行指令的最后一个机器周期。 即在完成所执行指令前,不会响应中断,从而保证指令在执行 过程中不被打断; ?正在执行的指令为RET、RETI或任何访问IE或IP寄存器的指 令。即只有在这些指令后面至少再执行一条指令时才能接受中 断请求。
若由于上述条件的阻碍中断未能得到响应,当条件 消失时该中断标志却已不再有效,那么该中断将不被 响应。就是说,中断标志曾经有效,但未获响应,查 询过程在下个机器周期将重新进行。

三、响应中断的条件和过程
3.1中断响应条件
中断源有中断请求; ? 此中断源的中断允许位为1; ? CPU开中断(即EA=1)。 同时满足时,CPU才有可能响应中断。

?中断服务的进入:
CPU执行程序过程中,在每个机器周期 的S5P2期间,中断系统对各个中断源进行 采样。这些采样值在下一个机器周期内按 优先级和内部顺序被依次查询。
如果某个中断标志在上一个机器周期的 S5P2时被置成了1,那么它将于现在的查询 周期中及时被发现。接着CPU便执行一条 由中断系统提供的硬件LCALL指令,转向 被称作中断向量的特定地址单元,进入相 应的中断服务程序。

?3.2中断响应时间 某中断的响应时序如图:

M1

M2

M3

M4

M5

S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6

中断 ε 标志
有效 锁存

标志查询

保护断点,长调用至入口

中断服务

?若M1周期的S5P2前某中断生效,在S5P2期间其中 断请求被锁存到相应的标志位中去;M2恰逢指令的 最后一个机器周期,且该指令不是RETI或访问IE、 IP的指令。于是,M3和M4便可以执行硬件LCALL 指令,M5周期将进入了中断服务程序。

?80C51的中断响应时间(从标志置1到进入相应的中 断服务),至少要3个完整的机器周期。

3.3中断响应的过程
?将相应的优先级状态触发器置1(以阻断 后来的同级或低级的中断请求)。
?执行一条硬件LCALL指令,即把程序计 数器PC的内容压入堆栈保存,再将相应的 中断服务程序的入口地址送入PC。 ?执行中断服务程序。
中断响应过程的前两步是由中断系统内 部自动完成的,而中断服务程序则要由用 户编写程序来完成。

中断返回
RETI指令的具体功能是:
?将中断响应时压入堆栈保存的断点地址从栈 顶弹出送回PC,CPU从原来中断的地方继续 执行程序;
? 将相应中断优先级状态触发器清0,通知中 断系统,中断服务程序已执行完毕。
注意,不能用RET指令代替RETI指令。在 中断服务程序中PUSH指令与POP指令必须成 对使用,否则不能正确返回断点 。

四、外部中断
INT0 和 INT1由外部产生并输入中断请求信号, 故称为
外部中断

? 电*触发方式
若外部中断定义为电*触发方式,中断标志位 的状态随CPU在每个机器周期采样到的外部中断 输入引脚的电*变化而变化,这样能提高CPU对 外部中断请求的响应速度。但外部中断源若有请 求,必须把有效的低电*保持到请求获得响应时 为止,不然就会漏掉;而在中断服务程序结束之 前,中断源又必须撤消其有效的低电*,否则中 断返回之后将再次产生中断。

? 跳变触发方式
若外部中断定义为边沿触发方式,在相继连续的 两次采样中,一个周期采样到外部中断输入为高电 *,下一个周期采样到为低电*,则在IE0或IE1中 将锁存一个逻辑1。即便是CPU暂时不能响应,中 断申请标志也不会丢失,直到CPU响应此中断时才 清零。这样,为保证下降沿能被可靠地采样到,外 中断引脚上的高低电*(负脉冲的宽度)均至少要 保持一个机器周期(若晶振为12MHz时,为1微 秒)。

五、中断程序举例

?

ORG 0000H

?START:LJMP MAIN

;跳转到主程序

?

ORG 0003H

?

LJMP INTO

;转向中断服务程序

?

ORG 0030H

;主程序

? MAIN:CLR IT0

;设为电*触发方式

?

SETB EA

;CPU开放中断

?

SETB EX0

;允许中断

?

MOV DPTR,#1000H ;设置数据区地址指针

?

……

?

ORG 0200H

;中断服务程序

? INT0:PUSH PSW

;保护现场

?

PUSH ACC

?

CLR P3.0

;由P3.0输出0

?

NOP

?

NOP

?

SETB P3.0

;由P3.0输出1,撤除

?

MOV A,P1

;输入数据

?

MOVX @DPTR,A ;存入数据存储器

?

INC DPTR

;修改数据指针,指向下一个单元

?

……

?

POP ACC

;恢复现场

?

POP PSW

?

RETI

;中断返回

例 多外部中断源的系统示例。
设有5个外部中断源,中断优先级排队顺序为: XI0、XI1、XI2、XI3、XI4。试设计它们与80C51 单片机的接口。

ORG 0003H LJMP INSE0 ORG 0013H LJMP INSE1 …… …… INSE0: PUSH PSW PUSH ACC …… …… POP ACC POP PSW RETI

;转外部中断0服务程序入口 ;转外部中断1服务程序入口
;XI0中断服务程序

INSE1:PUSH PSW ;中断服务程序

PUSH ACC

JB P1.0,DV1 ;P1.0为1,转XI1中断服务程序

JB P1.1,DV2 ;P1.1为1,转XI2中断服务程序

JB P1.2,DV3 ;P1.2为1,转XI3中断服务程序

JB P1.3,DV4 ;P1.3为1,转XI4中断服务程序

INRET:POP ACC

POP PSW

RETI

DV1:… …

;XI1中断服务程序

AJMP INRET

DV2:… …

;XI2中断服务程序

AJMP INRET

DV3: … …

;XI3中断服务程序

AJMP INRET

DV4:… …

;XI4中断服务程序

AJMP INRET




友情链接: