44
第 5 第 第第第 第第第第 第第第第介介介介 介介介介 介介介介 介介介 、、 介介 MCS-51 介介介 介介介介介 介介介介介介介介介 介介介介介介介介介介介 第第第第介介介介 介介介介 介介介介介介介 介介介介介 介介介介介 介介介介介介 介介介 、、、、、、 介介介介介 介介 MCS-51 介介介介介介介介介介介介介介介介介介介介介介介 介介 介介介 / 介介介介介介介介 TCON 介介介介介介介介 SCON 介介介介介介介介介 IE 介介介 介介介介介 IP 介 介介介介介介介介介介介介介介介介介

第 5 章 中断系统及其应用

Embed Size (px)

DESCRIPTION

第 5 章 中断系统及其应用. ● 教学目标: 介绍中断、中断源、中断系统的概念 介绍 MCS-51 中断系统及中断控制 介绍中断处理的过程 介绍中断应用程序的编程 ● 学习要求: 熟悉中断、中断源、中断服务程序、保护现场、恢复现场、中断优先级、中断处理等概念; 掌握 MCS-51 中断入口地址和各中断控制寄存器的每位含义及应用:包括定时器 / 计数器控制寄存器 TCON 、串行口控制寄存器 SCON 、中断允许控制寄存器 IE 和中断优先控制器 IP ; - PowerPoint PPT Presentation

Citation preview

Page 1: 第 5 章 中断系统及其应用

第 5 章 中断系统及其应用 ● 教学目标: 介绍中断、中断源、中断系统的概念 介绍 MCS-51 中断系统及中断控制 介绍中断处理的过程 介绍中断应用程序的编程 ● 学习要求: 熟悉中断、中断源、中断服务程序、保护现场、恢复现场、中断优先级、中断处理等概念; 掌握 MCS-51 中断入口地址和各中断控制寄存器的每位含义及应用:包括定时器 / 计数器控制寄存器 TCON 、串行口控制寄存器 SCON 、中断允许控制寄存器 IE 和中断优先控制器 IP ; 掌握中断初始化和中断服务程序的编制。

Page 2: 第 5 章 中断系统及其应用

5.1 概述中断技术是计算机中的重要技术之一。引入中断技术作用:( 1 )实时处理,提高计算机处理故障的能力;( 2 )解决 CPU 和外设之间的速度匹配问题,提高 CPU 的效率。 本章将介绍中断的概念,并以 MC

S-51 的中断系统为例介绍中断的处理过程及应用。

Page 3: 第 5 章 中断系统及其应用

5.1.1 中断的概念 中断——是指中央处理器 CPU 正在执行程序,处理某件事情的时候,外部发生了某一事件,请求 CP

U 马上处理, CPU 暂时中断当前的工作,转入处理所发生的事件,处理完以后,再返回到原来被中断的地方,继续原来的工作。 实现中断功能的部件称为中断系统。 中断服务程序——中断之后所执行的处理程序通常称为中断服务程序,原来运行的程序称为主程序。 断点——主程序被断开的位置 ( 地址 ) 称为断点。 中断源——引起中断的原因,或能发出中断申请的来源,称为中断源。 中断请求——中断源要求服务的请求称为中断请求或中断申请。

Page 4: 第 5 章 中断系统及其应用

调用中断服务程序与调用子程序的区别: 调用子程序指令在程序中是事先安排好的,而调用中断服务程序事先却无法确知,因为“中断”的发生是由外设决定的,程序中无法事先安排调用指令,因而调用中断服务程序的过程是由硬件自动完成的。

Page 5: 第 5 章 中断系统及其应用

5.1.2 中断源 中断源——在中断系统中,将引起中断请求的设备或事件的来源,—般统称为中断源。常见中断源: 1 .输入、输出设备中断源 一般计算机的输入、输出设备,如键盘、磁盘驱动器、打印机等,可通过接口电路向 CPU 申请中断。 2 .故障源 故障源是产生故障信息的来源。例如: CPU 内部故障源,如除法中除数为零时的情况;外部故障源,如电源掉电情况。 在电源掉电时可以接入备用的电池供电,以保存存储器中的信息。当电压因掉电降到—定值时,就发出中断申请,由计算机的中断系统完成替换备用电源的控制。 3 .实时中断源 在实时控制中,常常将被控参数、信息作为实时中断源。例如,电压、电流、温度等超越上限或下限时,以及继电器、开关闭合断开时,都可以作为中断源申请中断。 4 .定时/计数脉冲中断源 内部定时/计数中断是由单片机内部的定时器/计数器溢出时自动产生的;外部定时 / 计数中断是由外部定时脉冲通过 CPU 的中断请求输入线或定时器/计数器的输入线引起的。

Page 6: 第 5 章 中断系统及其应用

5.1.3 中断系统的一般功能中断系统一般应具有如下功能: 1. 实现中断及返回 当某一个中断源发出中断申请时,若允许响应这个中断请求, CPU 必须在现行的指令执行完后,把断点处的 PC 值 ( 即下一条应执行的指令地址 ) 压入堆栈保存起来,称为保护断点,这是由硬件自动完成的。 保护现场——响应中断请求后,将有关的寄存器内容和状态标志位压入堆栈保存起来,这称为保护现场。 恢复现场——执行中断服务程序后,恢复原保留的寄存器的内容和标志位的状态,称恢复现场,并执行返回指令“ RETI” ,这个过程通过用户编程来实现。

Page 7: 第 5 章 中断系统及其应用

中断及返回过程如图 5—1 所示 :

主 程 序低级中断

高级中断

中断中断

返回返回图 5-2 中断嵌套流程图

执行中断服务程序

主程序

继续执行主程序RETI

图 5-1 中断流程图

Page 8: 第 5 章 中断系统及其应用

2 .实现优先权排队 优先权——给各中断源规定一个优先级别,称为优先权。 当两个或者两个以上的中断源同时提出中断请求时,计算机首先为优先权最高的中断源服务,服务结束后再响应级别较低的中断源。计算机按中断源级别高低逐次响应的过程称优先权排队。 这个过程可以通过硬件电路来实现,也可以通过程序查询来实现。

Page 9: 第 5 章 中断系统及其应用

3 .实现中断嵌套 当 CPU 响应某一中断的请求而进行中断处理时,若有优先权级别更高的中断源发出中断申请, CPU则中断正在进行的中断服务程序,并保留这个程序的断点 ( 类似于子程序嵌套 ) ,响应高级中断,在高级中断处理完以后,再继续执行被中断的中断服务程序。 中断嵌套示意图如图 5—2 所示。 中断申请的中断源的优先权级别与正在处理的中断源同级或更低时, CPU 暂时不响应这个中断申请,直至正在处理的中断服务程序执行完以后才去处理新的中断申请。

Page 10: 第 5 章 中断系统及其应用

4. 实现中断的撤除 在响应中断申请以后,返回主程序之前,中断请求应该撤除,否则,就等于中断申请依然存在,这将影响对其它中断申请的响应。 MCS-51 中断系统只能对一部分中断申请,在响应后自动撤除,使用中应注意。

Page 11: 第 5 章 中断系统及其应用

5.2 MCS-51 中断系统及中断控制 MCS-51 的中断系统结构框图如图 5—3所示,与中断有关的特殊功能寄存器有

4 个,分别为中断源寄存器 ( 即专用寄存器 TCON 和 SCON 的相关位 ) 、中断允许控制寄存器 IE 和中断优先级控制寄存器 IP 。 MCS-51 单片机有 5 个中断源,可提供两个中断优先级,即可实现二级中断嵌套。

Page 12: 第 5 章 中断系统及其应用

/ 1定时器 计数器

/ 0定时器 计数器

T1

RXD

TXD

I NT1

T0

I NT0

0ET0 中断请求

中断优先级

PT1

PX1

SCON

TF1

R1

T1串行口

1

0

I T1

I E1

EAES

ET1

PS0

1

0

EX110

1

中断优先级

低优先

I P

PT0

PX0TCON0

1

TF0I T0

I E0

I E

EX0 01

1 中断入口地址

高优先

图 5-3 MCS-51 的中断系统结构框图

Page 13: 第 5 章 中断系统及其应用

5.2..1 MCS-51 中断源及中断入口 MCS-51 的中断源可分为三类:外部中断、定时中断和串行口中断。 1 .外部中断类 外部中断是由外部原因引起的,即外部中断 0 (INT0)和外部中断 1 (INT1) : INT0—— 外部中断 0 请求信号,由 P3.2 引脚输入。由

IT0 (TCON. 0) 决定中断请求信号是低电平有效还是下降沿有效。一旦输入信号有效,即向 CPU 申请中断,并且使 IE0= 1 。 INT1—— 外部中断 1 请求信号,由 P3.3 引脚输入。由

IT1 (TCON.2) 决定中断请求信号是低电平有效还是下降沿有效。一旦输入信号有效,即向 CPU 申请中断,并且使 IE1= 1 。

Page 14: 第 5 章 中断系统及其应用

2 .定时中断类 定时中断是为满足定时或计数溢出处理的需要而设置的,当定时器/计数器中的计数结构发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位,这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由单片机芯片外部引入。 TF0— 一定时器 T0 溢出中断请求。当定时器

T0 产生溢出时,其中断请求标志 TF0= 1 ,请求中断处理。 TF1—— 定时器 T1 溢出中断请求。当定时器

T1 产生溢出时,其中断请求标志 TF1= 1 ,请求中断处理。

Page 15: 第 5 章 中断系统及其应用

3.串行口中断类 串行口中断是为串行数据的传送需要而设置的。 RI 或 TI—— 串行中断请求。当接收或发送完一串行帧数据时,使内部串行口中断请求标志 RI 或 TI= 1 ,并请求中断。 各中断源对应的中断服务程序入口地址: 中断源 入口地址 外部中断 0 0003H 定时器 T0 中断 000BH 外部中断 1 0013 定时器 T1 中断 001BH 串行口中断 0023H

Page 16: 第 5 章 中断系统及其应用

5.2..2 MCS-51 中断请求 在中断请求被响应前,中断请求标志分别由特殊功能寄存器 TCON 和 SCON 的相应位锁存。 1. TCON 中的中断标志TCON 控制寄存器各位含义: TCON 8FH 8DH 8BH 8AH 89H 88H

TFl——T1 溢出中断标志。 T1 被启动计数后,从初值开始加 1 计数,直至计满溢出后,由硬件使 TFl= l ,向 CPU 请求中断,此标志一直保持到 CPU 响应中断后,才由硬件自动清“ 0” 。也可用软件查询该标志,并由软件清“ 0” 。

TFl TF0 IE1 IT1 IE0 IT0 (88H)

Page 17: 第 5 章 中断系统及其应用

TF0——T0 溢出中断标志。其操作功能类似于TF1 。 IE1——INT1 外部中断 1 标志。 IE1= 1表明外部中断 1 向 CPU 申请中断。IT1—— 外部中断 1触发方式控制位。 ( 1) ITl= 0 ,外部中断 1 为电平触发方式,低电平有效。 ( 2) ITl= 1 ,外部中断 1 控制为边沿(先高后低的负跳变)触发方式。 IE0——INT0 外部中断 0 标志。其操作功能与IE1类同。 IT0—— 外部中断 0触发方式控制位。其操作功能与 IT1类同。

Page 18: 第 5 章 中断系统及其应用

2 . SCON 中的中断标志 SCON 是串行口控制寄存器,其低 2 位 TI 和 RI锁存串口的发送中断和接收中断标志。其格式和各位含义如下: SCON 99H 98H

TI—— 串行发送中断标志。 CPU 将一个字节数据写入发送缓冲器 SBUF 后启动发送,每发送完一个串行帧,硬件置位 TI 。 TI 标志由软件清除。 RI—— 串行接收中断标志。在串行口允许接收时,每接收完一个串行帧,硬件置位 RI 。 RI 标志由软件清除。 MCS- 51 系统复位后, TCON 和 SCON 中各位均被清“ 0” 。

( 98H)SMOD TI RI

Page 19: 第 5 章 中断系统及其应用

5.2.3 中断允许控制 中断允许寄存器 IE格式和各位含义如下: IE AFH ACH ABH AAH A9H A8H

EA——CPU 中断总允许位。EA= 1 , CPU 开放中断,每个中断源是被允许还是被禁止,分别由各自的允许位确定;EA= 0 , CPU屏蔽所有的中断请求,称关中断。 ES—— 串行口中断允许位。 ES= 1 ,允许串行口中断; ES= 0 ,禁止串行口中断 ET1 一— T1 中断允许位。 ET1= 1 ,允许 T1 中断; ET1= 0 ,禁止 T1 中断。 EX1—— 外部中断 l 允许位。 EX1= 1 ,允许外部中断 1 中断; EXl= 0 ,禁止外部中断 1 中断。 ET0 一— T0 中断允许位。 ET0= l ,允许 T0 中断; ET0= 0 ,禁止 T0 中断。 EX0—— 外部中断 0 允许位。 EX0= 1 ,允许外部中断 0 中断; EX0= 0 ,禁止外部中断 0 中断。MCS- 5l 系统复位后, IE 中各中断允许位均被清“ 0” ,即禁止所有中断。

EA ES ET1 EX1 ET0 EX0( A8H)

Page 20: 第 5 章 中断系统及其应用

5.2.4 中断优先级 中断优先级——系统设计人员给每个中断源,事先安排一个中断响应的优先顺序。然后按照轻重缓急的次序响应中断。中断源的这种优先顺序常被称为中断优先权级别,或简称中断优先级。 专用寄存器 IP 统一管理中断优先级。它具有两个中断优先级,由软件设置每个中断源为高优先级中断或低优先级中断,并可实现两级中断嵌套。 高优先级中断源可以中断正在执行的低优先级中断服务程序,除非在执行低优先级中断服务程序时设置了 CPU 关中断或禁止某些高优先级中断源的中断。同级或低优先级的中断源不能中断正在执行的中断服务程序。

Page 21: 第 5 章 中断系统及其应用

专用寄存器 IP 为中断优先级寄存器,其格式和各位含义如下: IP BCH BBH BAH B9H B8H

PS—— 串行口中断优先级控制位。 PT1——T1 中断优先级控制位。 PX1—— 外部中断 l 中断优先级控制位。 PT0——T0 中断优先级控制位。PX0—— 外部中断 0 中断优先级控制位。 以上对应位为 1 ,高优先级;为 0 ,低优先级。 当系统复位后, IP 低 5 位全部清“ 0” ,将所有中断源设置为低优先级中断。

PS PT1 PX1

PX1 PX0 ( B8H)

Page 22: 第 5 章 中断系统及其应用

自然优先级由硬件形成,排列次序如下: 中断源 自然优先级 外部中断 0 最高级 定时器 T0 中断 外部中断 1 定时器 T1 中断 串行口中断 最低级 当重新设置优先级时,则顺序查询逻辑电路将会相应改变排队顺序。例如,给中断优先级寄存器 IP 中设置的优先级控制字为 11H ,则 PS 和 PX0均为高优先级中断。当这两个中断源同时发出中断申请时, CPU将先响应自然优先级高的 PX0 的中断申请,而后响应自然优先级低的 PS 的中断申请。

Page 23: 第 5 章 中断系统及其应用

5.2.5 中断响应时间不同的情况对中断响应的时间不同:( 1 ) 最短的响应时间,需要 5 个机器周期。调用指令本身要用 2 个机器周期,从外部中断请求有效到开始执行中断服务程序的第一条指令,至少需要 3 个机器周期。( 2 )如果遇到中断受阻的情况,中断响应时间会更长一些。 不同中断受阻情况,附加的等待时间为 1~5 个机器周期。( 3 )若系统中只有一个中断源,则响应时间为 3~ 8 个机器周期。( 4 )如果有两个以上中断源同时申请中断,则响应时间将更长。 — 般情况下,可不考虑响应时间,但在精确定时控制的场合需要考虑此问题。

Page 24: 第 5 章 中断系统及其应用

5.2.6 中断请求的撤除 CPU 响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会引起另一次中断。( 1 )定时器 0 或 1 溢出中断, CPU 在响应中断后,中断请求自动撤除。( 2 )边沿激活的外部中断, CPU 在响应中断后,硬件自动清除有关的中断请求 。( 3 )串行口中断, CPU 响应中断后,靠软件来清除相应的标志。 电平激活的外部中断撤除方法较复杂。

Page 25: 第 5 章 中断系统及其应用

图 5—4 是撤除电平激活的中断的可行的方案之一。 用 P1.0 接在触发器的 S端作为应答线,当CPU 响应中断后可使用如下两条指令:

ANL Pl , # 0FEH ORL P1 , # 01H 执行第一条指令使 P1.0 输出为“ 0” ,其持续时间为 2 个机器周期,足以使 D触发器置位,从而撤除中断请求。执行第二条指令使

P1.0变为“ 1” ,否则 D触发器的 S端始终有效, INT0端始终为“ 1” ,无法再次申请中断。

Page 26: 第 5 章 中断系统及其应用

P 1 . 0

MC S - 5 1

I N T 1或I N T 0

外 部 中 断请 求 信 号

DR 0Q

S 0C

Q

图 5-4 撤除外部中断请求的电路

Page 27: 第 5 章 中断系统及其应用

5.3 中断处理过程 一个完整的中断处理的基本过程应该包括:中断请求、中断响应、中断处理以及中断返回。中断处理流程图如图 5-5 所示。

不同的计算机由于中断系统的硬件结构不完全相同,因而中断响应的方式有所不同。在此,仅以 MCS—51 单片机为例来介绍中断处理的过程。

中止现行程序,保护断点转入中断服务程序入口

保护现场 中断服务 恢复现场

中断返回( RETI) 图 5-5 中断处理流程图

中断响应

中断返回

中断处理

中断请求 CPU 响应中断

中断请求

Page 28: 第 5 章 中断系统及其应用

5.3.1 中断请求 中断请求是中断源(或者通过接口电路)向 CPU 发出请求中断的信号,要求 CPU 中断原来执行的程序,转去为它服务。 一般单片机提供有多条中断请求线,当中断源有服务要求时,可通过中断请求线,向 C

PU 发出信号,请求 CPU 中断。 中断请求信号可以是电平信号,也可以是脉冲信号。中断请求信号应该一直保持到 CP

U做出反应时为止。

Page 29: 第 5 章 中断系统及其应用

5.3.2 中断响应 中断响应是在满足 CPU 的中断响应条件之后,

CPU对中断源中断请求的回答。在这一阶段,CPU 要完成中断服务以前的所有准备工作,包括保护断点和把程序转向中断服务程序的入口地址 ( 通常称为矢量地址 ) 。

1 . CPU 的中断响应条件(1) 有中断源发出中断申请;(2) 中断总允许位 EA= 1 ,即 CPU 允许所有中断源申请中断;(3) 申请中断的中断源的中断允许位为 1 ,即此中断源可以向 CPU 申请中断。

Page 30: 第 5 章 中断系统及其应用

有下列任何一种情况存在,中断响应都会受到阻断:(1) CPU 正在执行一个同级或高一级的中断服务程序;(2) 当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令完成前,任何中断请求都得不到响应;(3) 正在执行的指令是返回 (RETI) 指令或者对专用寄存器 IE 、 IP进行读/写的指令,此时,在执行 RETI或者读写 IE 或 IP 之后,不会马上响应中断请求。 若存在上述任何一种情况,则不会马上响应中断,而把该中断请求锁存在各自的中断标志位中,在下一个机器周期再按顺序查询。 由于存在中断阻断的情况而未被及时响应,待上述封锁中断的条件被撤消之后,由于中断标志还存在,仍会响应。

Page 31: 第 5 章 中断系统及其应用

2 .中断响应过程 MCS-51 中断入口地址和中断输入引脚是一一对应的,从哪个中断输入引脚进入的中断请求,它的中断服务程序入口地址一定是某个固定值。 如从 INT0( P3.2)引脚进入的中断请求,转向的中断入口地址是 0003H单元。

Page 32: 第 5 章 中断系统及其应用

5.3. 3 中断处理 中断处理 (又称中断服务 ) 程序从入口地址开始执行,直到返回指令“ RET

I” 为止,这个过程称为中断处理。 一般包括保护现场和处理中断源的请求及恢复现场三部分内容。 一般主程序和中断服务程序都可能会用到累加器、 PSW 寄存器和一些其它寄存器。 CPU 在进入中断服务程序后,用到上述寄存器时就会破坏它原来存在寄存器中的内容,一旦中断返回,将会造成主程序的混乱。

Page 33: 第 5 章 中断系统及其应用

5.3.4 中断返回 中断返回是指执行完中断服务程序后,程序返回到断点 ( 即原来程序执行时被断开的位置 ) ,继续执行原来的程序。 中断返回由专门的中断返回指令“ R

ETI” 实现,该指令的功能是把断点地址取出,送回到程序计数器 PC 中去。 特别要注意不能用子程序返回指令“ RET”代替中断返回指令“ RETI” 。

Page 34: 第 5 章 中断系统及其应用

5.4 中断应用程序举例 中断程序一般包含中断控制程序(即中断初始化程序)和中断服务程序两部分。5.4.1 中断初始化程序 中断初始化程序实质上就是对 TCON 、 SCON 、 IE和 IP 寄存器的管理和控制。只要这些寄存器的相应位按照要求进行了状态预置, CPU 就会按照人们的意图对中断源进行管理和控制。 中断初始化程序一般不独立编写,而是包含在主程序中,根据需要进行编写。中断初始化程序需完成以下操作: 1 .开中断; 2 .某一中断源中断请求的允许与禁止 (屏蔽 ) ; 3 .确定各中断源的优先级别; 4 .若是外部中断请求,则要设定触发方式是电平触发还是边沿触发。

Page 35: 第 5 章 中断系统及其应用

例 5-1 假设规定外部中断 0 为电平触发方式,高优先级,试写出有关的初始化程序。解:可用两种方法完成。 ① 方法 1 ,用位操作指令完成: SETB EA ;开中断允许总控制位SETB EX0 ;外中断 0 开中断SETB PX0 ;外中断 0 高优先级CLR IT0 ;电平触发② 方法 2 ,用其它指令也可完成同样功能:MOV IE , #81H ;同时置位 EA 和 EX0ORL IP , #01H ;置位 PX0ANL TCON , #0FEH ;使 IT0 为 0 这两种方法都可以完成题目规定的要求。一般情况下,用方法 1 简单些。因为,在编制中断初始化程序时,只需知道控制位的名称就行了,而不必记住它们在寄存器中的确切位置。

Page 36: 第 5 章 中断系统及其应用

5.4.2 中断服务程序 中断服务程序是一种为中断源的特定情况要求服务的独立程序段,以中断返回指令 RETI结束,中断服务完后返回到原来被中断的地方 ( 即断点 ) ,继续执行原来的程序。 中断服务程序的固定入口: 0003H 单元——外部中断 INT0 的中断服务程序入口 000BH 单元——内部定时器/计数器 T0 的中断服务程序入口 0013H 单元——外部中断 INT1 的中断服务程序入口 001BH 单元——内部定时器/计数器 T1 的中断服务程序入口 0023H 单元——串行口的中断服务程序入口 中断服务程序和子程序一样,在调用和返回时,也有一个保护断点和现场的问题。 在中断响应过程中,断点的保护主要由硬件电路自动实现。它将断点压人堆栈,再将中断服务程序的入口地址送入程序计数器 PC ,使程序转向中断服务程序,即为中断源的请求服务。

Page 37: 第 5 章 中断系统及其应用

中断时,现场保护由中断服务程序来完成。因此在编写中断服务程序时必须考虑保护现场的问题。在 MCS—51 单片机中,现场一般包括累加器 A 、工作寄存器 R0~R7 以及程序状态字 PSW 等。保护的方法与子程序相同。 在编写中断服务程序时还应注意以下三点: (1) 各中断源入口地址之间只相隔 8 个字节。中断服务程序放在此处,一般容量是不够的。常用的方法是在中断入口地址单元处,存放—条无条件转移指令,如“ LJMP Addr

ess” ,使程序跳转到用户安排的中断服务程序起始地址去。 (2) 在执行当前中断程序时,为了禁止更高优先级中断源的中断请求,可先用软件关闭 CPU 中断,或屏蔽更高级中断源的中断,在中断返回前再开放被关闭或被屏蔽的中断。 (3) 在多级中断情况下,应在保护现场之前关掉中断,在恢复现场之后打开中断。如果在中断处理时允许有更高级的中断打断它,则在保护现场之后开中断,恢复现场之前关中断。

Page 38: 第 5 章 中断系统及其应用

5.4.3 应用举例 在设计中断服务程序时 , 是按中断源的要求,根据中断处理所要完成的任务来进行的。 保护现场和恢复现场一般采用 PUS

H 和 POP 指令来实现。 PUSH 和 POP指令一般成对出现,以保证寄存器的内容不会改变。要注意堆栈操作的“先进后出,后进先出”的原则。

Page 39: 第 5 章 中断系统及其应用

例 5-2 设在主程序中用到了寄存器 PSW 、 ACC 、 B 、DPTR ,而在执行中断服务程序时需要用到这些寄存器。因此,在中断服务程序里要保护 PSW 、 ACC 、 B 、 DPTR 的内容,以免破坏主程序中相应用到的寄存器 PSW 、ACC 、 B 、 DPTR 内容。

程序如下:SERVICE : PUSH PSW ;保护程序状态字 PUSH ACC ;保护累加器 A

PUSH B ; 保护寄存器 BPUSH DPL ;保护数据指针低字节PUSH DPH ;保护数据指针高字节 ┇ ;中断处理POP DPH ;恢复现场,即恢复各寄存器内容POP DPLPOP BPOP ACCPOP PSWRETI 中断在实时控制中应用很多,在后面的章节中,会陆续讲到。下面举一例予以介绍。

Page 40: 第 5 章 中断系统及其应用

例 5-3 图 5-5 为多个故障显示电路,当系统无故障时, 4个故障源输入端 X1~ X4全为低电平,显示灯全灭;当某部分出现故障,其对应的输入由低电平变为高电平,从而引起 MCS- 51 单片机中断,中断服务程序的任务是判定故障源,并用对应的发光二极管 LED1~ LED4进行显示。

图 5-5 多个故障源进行显示

Page 41: 第 5 章 中断系统及其应用

编程如下: ORG 0000H ;程序开始

AJMP MAIN ;转主程序ORG 0003H ;外部中断 INT0 入口地址

AJMP SERVICE ;转中断服务程序MAIN : 0RL P1 , #0FFH ;灯全灭,准备读入 SETB IT0 ;选择边沿方式 SETB EX0 ;允许 INT0 中断 SETB EA ; CPU 开中断 AJMP $ ;等待中断SERVICE : JNB P1.3 , N1 ;若 X1 无故障转 CLR P1.4;若 X1 有故障, LED1亮N1 : JNB P1.2,N2 ;若 X2 无故障转

CLR P1.5;若 X2 有故障, LED2亮N2 : JNB P1.1,N3 ;若 X3 无故障转

CLR P1.6;若 X3 有故障, LED3亮N3 : JNB P1.0,N4 ;若 X4 无故障转

CLR P1.7;若 X4 有故障, LED4亮N4: RETI

Page 42: 第 5 章 中断系统及其应用

这个程序主要分为主程序和中断服务程序两部分。主程序主要完成初始化的工作,中断服务程序主要检测故障源是否发生,如果某故障源发生,则将相应的指示灯点亮。在此主程序和中断服务程序中,没有存在使用寄存器之间的干涉问题。因此,在中断服务程序中不用保护现场和恢复现场。

Page 43: 第 5 章 中断系统及其应用

小 结 本章就中断的概念、中断系统、中断控制、中断处理、中断服务程序的编制和应用,进行了比较详细的阐述。引入中断后,计算机的效率得到了很大的提高,在解决实时控制的问题时,变得非常的灵活和方便,应用非常广泛。主要内容有:中断、中断源、中断服务程序、保护现场、恢复现场等概念;中断流程、中断嵌套、中断优先级、中断处理等过程的实现;

MCS-51 中断入口地址;各中断控制寄存器的每位含义:包括定时器 / 计数器控制寄存器 TCON 、串行口控制寄存器 SCON 、中断允许控制寄存器 IE 和中断优先控制器 IP ;中断初始化和中断服务程序的编制等。

Page 44: 第 5 章 中断系统及其应用

思考题与习题五 1.什么叫中断?中断系统一般应具备哪些功能? 2. 中断服务程序和子程序的主要区别是什么? 3.MCS-51 中断系统有几个中断源 ? 中断源的名称是什么? 4.MCS-51 中断系统有几级中断优先级 ? 它是如何控制的? 5.MCS-51 单片机响应中断后,中断入口地址各是多少? 6. 一个完整的中断处理的基本过程包括哪些内容? 7. 中断响应后,是怎样保护断点和保护现场的 ? 8.试编写一段对中断系统进行初始化的程序,使之允许 INT0 、 INT1 、 T0 和串行口中断,且使串行口中断为高优先级中断。