Top Banner
第5第 中中中
37

第 5 章 中断系统

Dec 30, 2015

Download

Documents

candice-bowers

第 5 章 中断系统. 5.1 微机的输入 / 输出方式 程序控制传送方式 无条件传送方式 查询传送方式 中断传送方式 直接存储器存取方式 (DMA). 5.2 中断的概念. CPU 中止正在运行的程序,转向为外部设备服务的过程称为 中断 。当完成中断后, CPU 再回到原来的“ 断点 ”继续原来的程序。 中断是由外部产生,具有 随机性、不可知性 。. 主程序. 响应中断请求. 中断服务子程序. 断点. 继续执行主程序. 采用中断可 提高 CPU 的工作效率 , 实现以下功能 : 1. 分时操作 2. 实时处理 3. 故障处理. 返回主程序. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 第 5 章 中断系统

第 5 章 中断系统

Page 2: 第 5 章 中断系统

5.1 微机的输入 / 输出方式 程序控制传送方式

1. 无条件传送方式

2.查询传送方式

中断传送方式

直接存储器存取方式 (DMA)

Page 3: 第 5 章 中断系统

断点

响应中断请求

继续执行主程序

主程序

返回主程序

RETI

中断服务子程序

采用中断可提高 CPU 的工作效率 , 实现以下功能 :

1. 分时操作

2. 实时处理

3. 故障处理

5.2 中断的概念CPU 中止正在运行的程序,转向为外部设备服务的过程称为中断。当完成中断后, CPU 再回到原来的“断点”继续原来的程序。中断是由外部产生,具有随机性、不可知性。

Page 4: 第 5 章 中断系统

一、中断系统结构8051 共有五个中断源 , 两个中断优先级

INT0----- 外部中断 0 请求,通过 P3.2 脚输入 INT1----- 外部中断 1 请求,通过 P3.3 脚输入 T0-------- 定时器 / 计数器 0 溢出中断请求 T1-------- 定时器 / 计数器 1 溢出中断请求 TX/RX --- 串行口中断请求 , 当串行口完成一帧数据的发

送或接收时 , 便请求中断 每个中断源都对应一个中断请求标志位 , 它

们分别设置在 TCON 和 SCON 中。

5.3 8051 的中断系统

Page 5: 第 5 章 中断系统

中断控制器 8259A 方框图

IR0

IR7

::

中断请求寄存

IRR

优先权电路

在服务寄存器

ISR

中断屏蔽寄存器 IMR

控 制 逻 辑

数据总线缓冲

读 / 写逻辑

级连缓冲 /

比较器

INTA INTR

DB

RDWRA0

CS

CAS0CAS1CAS2

SP / EN 内部总线

Page 6: 第 5 章 中断系统

MCS-51MCS-51 的中断系统结构图的中断系统结构图返回优先级结构

Page 7: 第 5 章 中断系统

二、中断控制

定时器控制寄存器 TCON ( 用 6 位 ) 串行口控制寄存器 SCON ( 用 2 位 ) 中断允许寄存器 IE 中断优先级寄存器 IP

Page 8: 第 5 章 中断系统

中断请求标志 TCON 中的中断标志位

Page 9: 第 5 章 中断系统

SCON 中的中断标志位 TI RI

串行口发送中断请求标志位

串行口接收中断请求标志位

SCON 中的中断标志位

Page 10: 第 5 章 中断系统

中断允许控制位 (IE)

EA :总允许位。 EA=0 :禁止一切中断; EA=1 中断开放。ES :串行口中断允许位。 ES=1 :允许 RI 、 TI 引发中断; ES=0 :禁止中断。ET1 、 ET0 :定时器 T1 、 T0 允许位。 ET=1 允许, =0 禁止。EX1 、 EX0 :外中断 / int1 、 /int0 允许位。 ET =1 允许, =0 禁止。

EA X X ES ET1 EX1 ET0 EX0

中断允许寄存器 IE( 0A8H )

Page 11: 第 5 章 中断系统

中断优先级控制位 (IP)

PS :串行口中断优先级设定位; PT1 、 PT0 :定时器 T1 、 T0 中断优先级设定位; PX1 、 PX0 :外中断 int1 、 0 中断优先级设定位; =1 : 高优先级, =0 :为低优先级。

X X X PS PT1 PX1 PT0 PX0

中断优先级寄存器 IP( 0B8H )

Page 12: 第 5 章 中断系统

表 同级内第二优先级次序

Page 13: 第 5 章 中断系统

例如 , 某软件中对寄存器 IE 、 IP 设置如下 :

MOV IE, # 8FH

MOV IP, # 06H

则此时该系统中 :

· CPU 中断允许 ;

· 允许外部中断 0 、 外部中断 1 、 定时器 / 计数器 0 、 定时器 / 计数器 1 提出的中断申请 ;

· 允许中断源的中断优先次序为 :

定时器 / 计数器 0> 外部中断 1> 外部中断 0> 定时器 /

计数器 1 。

X X X PS PT1 PX1 PT0 PX0

EA X X ES ET1 EX1 ET0 EX0

1 0 0 0 1 1 1 1

0 0 0 0 0 1 1 0

Page 14: 第 5 章 中断系统

优先级结构 由于 IP 寄存器的设定,将 5 个中断源分为两个级别。中断的

发生将遵循下面的 3 条基本原则:

1. 低级中断在响应执行中可被高级中断所中断,反之则不能。

2. 一个中断(不论是什么优先级)一旦得到响应,与它同级的中断则不能再中断它。

3. 当 CPU 同时收到几个同一级别的中断要求时, CPU 响应哪个中断源取决于硬件的查询顺序(见图)。

Page 15: 第 5 章 中断系统

如何改变中断源的优先级顺序

从中断系统的结构图可以清楚地看出同一级别中 5 个中断源的查询顺序。很明显,要改变这种顺序只能通过 IP 的设置。

如:要想将串行口的级别设为最高时,将 IP 中的 PS 置 1 。 即使用指令: setb ps

或 mov 0b8h,#10h 完成对 IP 设置。

X X X PS PT1 PX1 PT0 PX0IP 寄存器

Page 16: 第 5 章 中断系统

例 : 能否由高到低安排下列中断源的优先级结构?

定时器 0 串行口中断 外部中断 0 外部中断 1 定时器 1

解答:能。

设定时器 0 、串行口中断为高级别中断;设外部中断0 、外部中断 1 、定时器 1 为低级别中断。再由内部查询顺序即可得到。

Page 17: 第 5 章 中断系统

三、中断查询与响应条件 在每一个机器周期中,所有的中断源都要按照其顺序检查

一遍。到 S6 状态时,就查找到所有被激活的中断申请并排好优先权。在下一个机器周期的 S1状态,只要不受阻断,就开始响应高级中断。

如果发生下列情况,中断将被阻止: 1 ,同级或高级中断正在执行时; 2 ,当前的机器周期不是指令的最后一个机器周期; 3 , CPU 正在执行的指令是 RETI 或访问 IE、 IP 寄存器

时, CPU 是不会响应中断,而且要等到该指令的下一条指令执行完后中断才能响应。

Page 18: 第 5 章 中断系统

四、中断响应过程 CPU 查询到某一中断源后,使相应的

“优先级激活触发器”置位,用以阻断同级或低级中断。

在硬件控制下,将当前程序计数器 PC的内容——断点地址进栈 ,并将相应的中断矢量装入 PC,使 CPU 转向对应的中断服务程序,同时清除中断请求标志( TI 、 RI除外)。

中断服务程序最后一条指令是 RETI ,它将清除“优先级激活触发器”,从堆栈中弹出断点地址并装入 PC 中,使 CPU 回到原来的主程序继续运行。

矢量入口的指令应当是转移指令。

(上电启动地址)

( INT0 中断入口)

( T0 中断入口)

( INT1 中断入口)

( T1 中断入口)

(串口中断入口)

0000H

0003H

000BH

0013H

001BH

0023H

Page 19: 第 5 章 中断系统

注意: 1 、上述过程只保护断点而不保护现场(如 PS

W 的内容)。 2 、不能清除 RI 、 TI 以及外部输入申请信号 /

INT0 和 /INT1 。 3 、中断服务子程序的最后一条指令应是 RET

I ,它将清除“优先级激活”触发器。

Page 20: 第 5 章 中断系统

编程中应注意 :

(1 ) 在 0000H 放一条跳转到主程序的跳转指令 , 这是因为 MCS-51单片机复位后 , PC 的内容变为 0000H, 程序从 0000H 开始执行 , 紧接着 0003H 是中断程序入口地址 , 故在此中间只能插入一条转移指令 ;

(2 ) 响应中断时 , 先自动执行一条隐指令“ LCALL 001

3H”, 而 0013H至 001BH (定时器 1 溢出中断入口地址)之间可利用的存储单元不够 , 故放一条无条件转移指令。

(3 ) 在中断服务程序的末尾 , 必须安排一条中断返回指令 RETI, 使程序自动返回主程序。

Page 21: 第 5 章 中断系统

五、 外部中断 在 MCS-51 引脚上有 /INT0 、 /INT1

两个外部的中断输入,作为外部事件的触发信号。

CPU 在每一个机器周期对它们进行一次检测。

系统设定了两种触发方式: 边沿触发(下降沿); 电平触发(低电平)。 具体由 TCON 中的 IT0 、 IT1 来确

定。

MCS-51

/INT0

/INT1

Page 22: 第 5 章 中断系统

1. 边沿触发方式:在相邻的两个机器周期,如果第一次采集是高电平,第二次采集是低电平时,则 TCON中的标志 IE0 或 IE1 置位。所以,在边沿触发方式时:外部设备发出的边沿信号(高电平和低电平)的时间应大于一个机器周期,否则信号将可能漏检。

2.“ 电平”触发方式: CPU 采集到 /INT0 或 /INT1的引脚为低电平时将激活中断。所以在这种触发方式中,外部的低电平至少应保留一个机器周期。

如果外电路的信号不能满足要求,可使用触发器解决。

MCS-51单片机对 /INT信号的要求

Page 23: 第 5 章 中断系统

六、中断请求的撤除

以外中断电平触发为例:当 CPU 响应该中断并进入到服务程序后,在执行 RETI返回主程序前,必须将外部的低电平撤掉,否则,当 CPU返回主程序后,会因为外部的低电平信号而再次进入中断,使主程序无法正常运行。

同理,其它中断源也存在类似的问题。所以在使用中断时必须清楚在响应某一中断时,其中断请求(标志)是否要撤除,如何撤除等问题。

Page 24: 第 5 章 中断系统

MCS-51 的中断标志的撤除方法

中断源 中断标志 说 明 撤除方法INT0 、 INT1

IE0 、 IE1

外部边沿触发 自动清除标志

INT0 、 INT1 无 外部电平触发 电路、软件撤除

T0 、 T1TF0 、 TF

1定时计数器中断 自动清除标志

ES RI 、 TI 串行口中断 软件清除标志

注:此表指使用中断服务程序来处理中断事件时的情况。如果采用查询的方法来处理事件时,都需要软件来清除标志。

Page 25: 第 5 章 中断系统

撤除外部电平请求信号的方案

MCS-51

INTX

P1 .0

D Q

CP S

外部设备

D型触发器CLR P1.0

SETB P1.0

中断服务程序

RETI

服务程序主体

外设 (CP)

触发器 Q

P1.0

Page 26: 第 5 章 中断系统

七、中断响应时间(以外部中断 INTx为例) 每个机器周期的 S5P2 时刻, INTx 引脚的电平被锁

存到内部寄存器中,待下一个周期查询。 1 、最短时间:中断请求有效,查询后在下一个周期便开始

执行一条硬件的子程序的调用(时间是两个周期),然后开始执行服务程序的第一条指令。这样从锁存电平的周期到执行中断服务程序,中间相隔 3 个机器周期。

C5C4C3C2C1

电平锁存 中断查询 长调用 执行入口地址中的指令 保护断点,关闭 CPU 中断 转移到中断的入口地址

Page 27: 第 5 章 中断系统

2 、最长时间:如果中断信号发生在前面所说的 3 种情况时,响应时间就要变长:

第 1 种情况:响应时间取决于正在执行的同级或高级中断的执行时间;

第 2 种情况:指当前 CPU 执行的指令是多周期指令,如乘除法指令

( 4 个周期),最坏情况,还要等 3 个周期。这样响应周期变为 3+3=6个周期;

第 3 种情况:CPU 当前执行的指令是 RETI 或访问 IE 、 IP 寄存器时,

本指令( 1 个周期)没有响应,且下一条指令执行完后才能响应,这样附加的等待时间最长不会超过 5 个周期( 1+4 )。整个响应为 5+3=8 个周期。若为单中断源系统,整个中断响应的时间范围应当是: 3~ 8 个机器周期。

Page 28: 第 5 章 中断系统

5.4 中断应用程序举例

例 1:

将 P1 口的 P1.4~P1.7 作为输入口 ,P1.0~P1.3 作为输出口 , 要求利用 8031 将开关所设的数据读入单片机内 ,并依次通过 P1.0~P1.3 输出 ,驱动发光二极管 , 以检查 P1.4~P1.7 输入的电平情况 . 采用中断边沿触发方式 , 每次中断完成一次读 / 写操作 .

Page 29: 第 5 章 中断系统
Page 30: 第 5 章 中断系统

ORG 0000HAJMP MAINORG 0003HAJMP INSERORG 0030H

MAIN:SETB EX0SETB IT0SETB EA

HERE:SJMP HERE

INSER:MOV A,#0F0H ;P1.4~P1.7 为输入口MOV P1,AMOV A,P1SWAPAMOV P1,ARETIEND

Page 31: 第 5 章 中断系统

例 2:

用中断电路实现系统的故障显示 , 当系统

的各部分正常工作时 ,四个故障源的输入均为低电平 , 显示灯不亮 , 当某个部分出现故障时 ,

则相应的低电平变为高电平 ,相应的灯亮。

Page 32: 第 5 章 中断系统
Page 33: 第 5 章 中断系统

ORG 0000HAJMP MAINORG 0003HAJMP INSERORG 0030H

MAIN: ANL P1,#55H SETB EX0

SETB IT0 SETB EA

HERE: SJMP HEREINSER: JNB P1.0,L1

SETB P1.1L1: JNB P1.2,L2

SETB P1.3L2: JNB P1.4,L3

SETB P1.5L3: JNB P1.6,L4

SETB P1.7L4: RETI

END

Page 34: 第 5 章 中断系统

5.5 外部中断的扩展

5.5.1 利用定时器扩展外部中断源 当设定时器为计数方式 , 计数初值设置为满量程 FFH, 一旦外部信号从计数器引脚输入一个负跳变时 , 计数器加 1 产生溢出中断从而可实现外部中断。

5.5.2 中断加查询扩展中断源 利用 8051 的两根外部中断输入线 , 每个中断

输入线可以通过“线或”的关系连接多个外部中断源 , 同时利用输入端口线作为各中断源的识别线。

Page 35: 第 5 章 中断系统
Page 36: 第 5 章 中断系统

ORG 0003H LJMP INTRP ;INT0 中断服务程序入口

….INTRP: PUSH PSW

PUSH ACCJB P1.0,DV1JB P1.1,DV2JB P1.2,DV3JB P1.3,DV4

EXIT: POP ACCPOP PSWRETI

DV1: …;装置 1 中断服务程序AJMP EXIT

DV2: …;装置 2 中断服务程序AJMP EXIT

DV3: …;装置 3 中断服务程序AJMP EXIT

DV4: …;装置 4 中断服务程序AJMP EXIT

Page 37: 第 5 章 中断系统

作业

P 95

2 、 9 、 12 、 13 ( 2 )、( 4 )