第 8 章 中断
第8章中断系统-4(中断请求的撤消外部中断扩充)

中断程序的设计与应用
中断应用举例 例8.1(P194) 利用定时器T0定时,在P1.0端输出方 利用定时器T0定时, P1.0端输出方 T0定时 其周期为20ms 20ms, 波,其周期为20ms,已知晶振频率为 12MHz。 12MHz。
ቤተ መጻሕፍቲ ባይዱ
中断程序的设计与应用
的中断服务程序入口地址为000BH, 解:T0的中断服务程序入口地址为 的中断服务程序入口地址为 , 定时器T0的初值 的初值: 定时器 的初值: X=65536-10000=55536=D8F0H ORG 0000H LJMP MAIN …… ORG 000BH LJMP SUB1 ……
中断程序的设计与应用
ORG MAIN:MOV : MOV MOV MOV SETB HERE:SJMP : …… 30H TMOD,#01H , TH0,#0D8H , TL0,#0F0H , IE,#82H , TR0 HERE
中断程序的设计与应用
SUB1:MOV TH0,#0D8H : , MOV TL0,#0F0H , CPL P1.0 RETI ……
单片机原理与应用
第8章 中断系统
中断处理过程
中断请求的撤销 CPU响应某中断请求后, CPU响应某中断请求后,在中断 响应某中断请求后 返回前,应该撤消该中断请求, 返回前,应该撤消该中断请求, 否则会引起另一次中断。 否则会引起另一次中断。
中断请求的撤销
MCS—51各中断源请求撤消的方法 MCS 51各中断源请求撤消的方法 51 各不相同。 各不相同。 1.定时中断请求的撤销 1.定时中断请求的撤销 定时中断 2.脉冲方式外部中断请求的撤销 2.脉冲方式外部中断请求的撤销 脉冲方式外部中断 3.电平方式外部中断请求的撤销 3.电平方式外部中断请求的撤销 电平方式外部中断 4. 串行中断软件撤销 串行中断软件撤销 软件
第8章习题参考答案

第8章习题参考答案1. 如果认为CPU等待设备的状态信号是处于非工作状态(即踏步等待),那么在下面几种主机与设备之间的数据传送中:A主机与设备是串行工作的;B 主机与设备是并行工作的,C 主程序与设备是并行运行的。
A .程序查询方式B .程序中断方式C . DMA方式2. 中断向量地址是B。
A•子程序入口地址 B •中断服务程序入口地址C•中断服务程序入口地址指示器 D •例行程序入口地址3•利用微型机制作了对输入数据进行采样处理的系统。
在该系统中,每抽取一个输入数据就要中断CPU 一次,中断处理程序接收采样的数据,将其放到主存的缓冲区内。
该中断处理需时x秒,另一方面缓冲区内每存储n个数据,主程序就将其取出进行处理,这种处理需时y秒。
因此该系统可以跟踪到每秒 A 次的中断请求。
A . n/ (n 次 + y)B . n/(x + y) n C. min(1 /x, n/y)4•采用DMA方式传送数据时,每传送一个数据就要占用一个 C 的时间。
A .指令周期B .机器周期C.存储周期 D .总线周期5. 通道的功能是:⑴ 控制外围设备,⑵ 组织外围设备和内存之间进行数据传输______ 。
按通道的工作方式分,通道有选择通道、数组多路通道和字节多路通道三种类型。
6. 在图8.9中,当CPU对设备B的中断请求进行服务时,如设备A提出请求,CPU能够响应吗?为什么?如果设备B 一提出请求总能立即得到服务,问怎样调整才能满足此要求?答:不能,因为A、B是同级别的中断。
要使设备B一提出请求总能立即得到服务,除非将B提高到上一级,并令IM3=0,即构成一个3级IR。
7. 在图& 9中,假定CPU取指并执行一条指令的时间为t1,保护现场需t2,恢复现场需t3,中断周期需t4,每个设备的设备服务时间为t A , t B,…,t G。
试计算只有设备A , D, G时的系统中断饱和时间。
答:依次处理设备A,设备D,设备G的时间为:T1 = t1+t2+t3+t4+t AT2 = t1+t2+t3+t4+t DT3 = t1+t2+t3+t4+t G总时间为T = T1+T2+T 3 = 3*( t 1+t2+t3+t4)+ t A + t D + t G&设某机有5级中断;L o, L1, L2, L3, L4,其中断响应优先次序为:L o最高,L1次之,L4最低。
计算机组成原理课件第08章

一、接口的功能和组成
1、总线连接方式的I/O接口电路 、总线连接方式的 接口电路 在总线结构的计算机系统中,每一台 I/O设备都是通过I/O接口挂到系统总线上 的。如图示:
数据线: 数据线:传送数据信息 ,其根数一般等于存储 字长的位数或字符的位 数。双向。 设备选择线: 设备选择线:传送设备 码,其根数取决于I/O指 令中设备码的位数。单 向。 命令线: 命令线:传输CPU向设 备发出的各种命令信号 ,其根数与命令信号多 少有关。单向总线。 状态线: 状态线:向主机报告I/O 设备状态的信号线。单 向总线。
CPU在任何瞬间只能接受一个中断源 CPU在任何瞬间只能接受一个中断源 的请求。 的请求。因此,当多个中断源提出中断请 求时,CPU必须对各中断源的请求进行排 队,且只能接受级别最高的中断源的请求 ,不允许级别低的中断源中断正在运行的 中断服务程序。此时,就可用MASK来改 变中断源的优先级别。 另外,CPU总是在统一的时间,即执 CPU总是在统一的时间, 总是在统一的时间 行每一条指令的最后时刻, 行每一条指令的最后时刻,查询所有设备 是否有中断请求。 是否有中断请求。 接口电路中D、INTR、MASK和中断 查询信号的关系如图示:
2、排队器 、 当多个中断源同时向CPU提出请求时,经 排队器的排队,只有优先级高的中断源排上 队,这样就能实现CPU按中断源优先级的高 低响应中断请求。 下图是设在各个接口电路中的排队电路— —链式排队器。
其中首尾相接的虚线部分组成的门电路是排 当各中断源均无中断请求时,各INTRi 为高电 队器的核心,由一个非门和一个与非门构成。 平,其INTP1 '、 INTP2' 、 INTP3 '……均为高电平 中断源优先级最高的是1号中断源。当多个中 。一旦某中断源提出中断请求,就迫使比其优先级 断源提出中断请求时,排队器输出端INTPi, 低的中断源之INTPi '变为低电平,封锁其发中断 只有一个为高电平,表示该中断源排上队。 请求。
第8章 中断系统

中断执行示意图如下:
第18页
2012年6月11日星期一
第8章
结束当前指令?
内部中断?
中断系统
①
关中断 标志寄存器入栈 TEMP=TF(暂存) 清除IF、TF标志 断点(CS,IP)入栈 取中断向量 进入中断服务程序 开中断 执行中断服务程序 Y
N
有NMI?
有
无 N
无
有INTR?
有
IF=1?
Y Y
TF= N 1? 取中断类型码
第8页 2012年6月11日星期一
第8章
8.2.2 中断处理
中断系统
1.中断的处理过程 ⑴关中断。目的:在现场保护过程中,CPU不应该 响应更高级的中断源申请。 ⑵保存断点和现场。即将现行状态字和断点地址相 继压入堆栈。目的:在中断处理完后返回主程序时, 恢复原程序运行状态。 ⑶开中断。目的:允许更高级中断请求能够及时得 到响应,实现中断嵌套。 ⑷转入中断服务程序。目的:完成的最终目的。 ⑸ 退出中断。返回到主程序的执行。
第20页 2012年6月11日星期一
第8章
8.3.4 软件中断
中断系统
软件中断有如下特点: 1.INT n 指令,中断类型码是 n。 2.不执行中断响应总线周期,不读取中断类型码。 3.软件中断不受IF的影响。 4.可进行中断嵌套,即可以响应非屏蔽中断;当被软 件中断调用的中断处理子程序使IF=1时,那么也可响 应屏蔽中断的高优先级请求。 5.软件中断没有随机性,这是因为软件中断是由程序 中的中断指令引起的,何时执行,是事先知道的,所 以软件中断失去了随机性。
第21页 2012年6月11日星期一
第8章
8.4 中断控制器8259A
一、引言
中断系统
微机原理习题答案8章

第8章中断系统与可编程中断控制器8259A1.什么叫中断?8086微机系统中有哪几种不同类型的中断?答:在CPU执行程序的过程中,由于某个事件的发生,CPU暂停当前正在执行的程序,转去执行处理该事件的一个中断服务程序,待中断服务程序执行完成后,CPU再返回到原被中断的程序继续执行。
这个过程称为中断。
8086微机系统中有3种中断:1)外部可屏蔽中断。
2)外部不可屏蔽中断。
3)内部中断2.什么是中断类型?它有什么用处?答:通常用若干位二进制编码来给中断源编号,该编号称为中断类型号。
8086微处理器用8位二进制码表示一个中断类型,有256个不同的中断。
这些中断可以划分为内部中断、外部不可屏蔽中断、外部可屏蔽中断三类。
用处:使CPU识别中断源,从而能正确地转向该中断源对应的中断服务程序入口。
3.什么是中断嵌套?使用中断嵌套有什么好处?对于可屏蔽中断,实现中断嵌套的条件是什么?答:微处理器在处理低级别中断的过程中,如果出现了级别高的中断请求,微处理器停止执行低级中断的处理程序而去优先处理高级中断,等高级中断处理完毕后,再接着执行低级的未处理完的程序,这种中断处理方式成为中断嵌套。
使用中断嵌套的好处是能够提高中断响应的实时性。
对于某些对实时性要求较高的操作,必须赋予较高的优先级和采取中断嵌套的方式,才能保证系统能够及时响应该中断请求。
对于可屏蔽中断,实现中断嵌套的条件有:(1)微处理器处于中断允许状态(IF=1)(2)中断请求的优先级高于正在执行的中断处理程序的优先级。
(3)中断请求未被8259屏蔽。
(4)没有不可屏蔽中断请求和总线请求。
4.什么是中断向量?中断类型号为1FH的中断向量为2345H:1234H,画图说明它在中断向量表中的存放位置。
答:中断向量为每个中断服务子程序的入口地址,为32位(16位的偏移地址和16位的段地址),在中断向量表中占用4个地址单元。
在8086CPU组成的计算机系统中,采用最低的1024个地址单元(称为0页)来存储中断向量。
计算机硬件基础——第八章(中断系统)

AJMP MAIN
AJMP IT0P MAIN: MOV SP,#60H MOV TMOD, #01H MOV TH0 ,#M
DJNZ R7,DD2
DJNZ R5,DD1 RET
MOV TL0,#N
SETB TR0 SETB EA SETB ET0 SJMP $
从上例可看出中断大大提高了CPU的工作效率。
中建立堆栈。 ②在中断服务程序的开始应有保护现场的指令。 即将中断服务程序中用到的各寄存器的内容压入堆栈保存,在中 断结束之前弹回恢复,然后返回。这样就能保证返回原断点时各
寄存器内容与中断服务前相同,使原程序能正确运行。
③中断与调用子程序的异同: 中断过程中由主程序转向中断服务程序的请求是由外部设备提出 的,发生中断的时刻不确定,而在何处调用子程序则是由程序确 定的。
3
一.8031的中断请求源
有5个中断源,它们是:串行口 T1 INT1 T0 INT0
TCON (88H)中相应的位锁存它们的中断标志:
TF1 其中:
TR1
TF0
TR0
IE1
IT1
IE0
IT0
IT0 :INT0触发方式选择,0:低电平触发,1:负跳变触发
IE0 :INT0选择负跳变触发时的中断标志,0:INT0未申请中断, 1:INT0申请中断 INT0选择低电平触发时此标志无用。 IT1、IE1同上定义对INT1控制。
10
例
8000H
MOV A, #06H
①
8002H
8005H
MOV B, #05H
MUL AB MOV IE , #05H MOV R0 , #30H …………….
②
8006H 8009H 800BH
8.1 中断
安徽理工大学
8.1 中断
第8章 中断和8259A
2.8086的中断响应与处理
重点介绍从INTR引脚引入的可屏蔽中断的类型码是如 何形成的。CPU响应INTR中断后,要执行两个连续的 中断响应INTA总线周期,其时序图如图8.8
8086可处理256(0~FFH)类中断,每类中断有一个入 口地址(中断向量),包含CS和IP,共4个字节。因此 存 储 256 个 地 址 , 需 要 占 用 1K 字 节 , 它 们 位 于 内 存 00000~003FFH的区域中。
将中断类型号n乘以4就能找到规定类型的中断向量,规 定IP在前,CS在后。
安徽理工大学
8.1 中断
第8章 中断和8259A
8.1.1 中断概念和分类
1.中断的定义和功能
中断定义:
计算机在执行正常程序过程中,暂时中止当前程 序的运行,转到中断处理程序去处理临时发生的事 件,处理完后又恢复原来程序的运行,这个过程称 为中断(Interrupt)。
安徽理工大学
8.1 中断
然后找到中断服务程序的入口地址,转去执行相 应的中断服务程序。
中断服务程序结束时,执行中断返回指令IRET 返回正常程序继续执行。
如何寻找中断服务程序的入口地址,是中断处理 过程中的一个重要环节。
安徽理工大学
8.1 中断
3.中断向量表
第8章 中断和8259A
2)中断向量表
中断向量表用来存放中断服务程序的入口地址。
安徽理工大学
8.1ቤተ መጻሕፍቲ ባይዱ中断
第8章 中断和8259A
第8章_哈工大-MCS-51的中断系统
由软件可改变各中断源的中断优先级。
MCS-51的中断系统有两个不可寻址的“优先级激活触
发器”:
一个用来指示某高优先级的中断正在执行,所有后来
的中断均被阻止。
另一个用来指示某低优先级的中断正在执行,所有同
级中断都被阻止,但不阻断高优先级的中断请求。
在同时收到几个同一优先级的中断请求时,优先响应 哪一个中断,取决于内部的查询顺序。查询顺序如 下:
5.3 中断请求源 五个中断请求源 : ( 1 )INT0*—外部中断请求 0 ,由引脚 INT0*输入,中 断请求标志为IE0。 (2)INT1*—外部中断请求 1 ,由引脚 INT1*输入,中 断请求标志为IE1。 (3)定时器/计数器T0溢出中断请求,中断请求标志 为TF0。 (4)定时器/计数器T1溢出中断请求,中断请求标志 为TF1。 (5)串行口中断请求,中断请求标志为TI或RI。 由特殊功能寄存器TCON和SCON的相应位锁存。
(2)PT1——定时器T1中断优先级控制位 1:高优先级中断; 0:低优先级中断。 (3)PX1——外部中断1中断优先级控制位 1:高优先级中断; 0:低优先级中断。 (4)PT0——定时器T0中断优先级控制位 1:高优先级中断; 0:低优先级中断。 (5)PX0——外部中断0中断优先级控制位 1:高优先级中断; 0:低优先级中断。
MUL和除法指令DIV)来算,也只有4个机器周期。
(3)加上硬件子程序调用指令LCALL的执行,需要2个 机器周期。 所以,外部中断响应最长时间为8个机器周期。 如果已在处理同级或更高级中断,响应时间无法计算。
在一个单一中断的系统里,MCS-51单片机对外部中断
请求的响应的时间总是在3~8个机器周期之间。
二、采用中断时的主程序结构 常用的主程序结构如下: ORG 0000H LJMP MAIN ORG 中断入口地址 LJMP INT ⋮ ORG XXXXH MAIN:主 程 序 INT:中断服务程序 三、中断服务程序的流程
第8章习题参考答案
第8章习题参考答案1.如果认为CPU等待设备的状态信号是处于非工作状态(即踏步等待),那么在下面几种主机与设备之间的数据传送中: A 主机与设备是串行工作的;B 主机与设备是并行工作的,C 主程序与设备是并行运行的。
A.程序查询方式B.程序中断方式C.DMA方式2.中断向量地址是 B 。
A.子程序入口地址B.中断服务程序入口地址C.中断服务程序入口地址指示器D.例行程序入口地址3.利用微型机制作了对输入数据进行采样处理的系统。
在该系统中,每抽取一个输入数据就要中断CPU一次,中断处理程序接收采样的数据,将其放到主存的缓冲区内。
该中断处理需时x秒,另一方面缓冲区内每存储n个数据,主程序就将其取出进行处理,这种处理需时y秒。
因此该系统可以跟踪到每秒 A 次的中断请求。
A.n/(n×x+y) B.n/(x+y)·n C.min(1/x,n/y)4.采用DMA方式传送数据时,每传送一个数据就要占用一个 C 的时间。
A.指令周期B.机器周期C.存储周期D.总线周期5.通道的功能是:(1) 控制外围设备,(2) 组织外围设备和内存之间进行数据传输。
按通道的工作方式分,通道有选择通道、数组多路通道和字节多路通道三种类型。
6.在图8.9中,当CPU对设备B的中断请求进行服务时,如设备A提出请求,CPU能够响应吗?为什么?如果设备B一提出请求总能立即得到服务,问怎样调整才能满足此要求? 答:不能,因为A、B是同级别的中断。
要使设备B一提出请求总能立即得到服务,除非将B提高到上一级,并令IM3=0,即构成一个3级IR。
7.在图8.9中,假定CPU取指并执行一条指令的时间为t1,保护现场需t2,恢复现场需t3,中断周期需t4,每个设备的设备服务时间为t A,t B,…,t G。
试计算只有设备A,D,G 时的系统中断饱和时间。
答:依次处理设备A,设备D,设备G的时间为:T1 =t1+t2+t3+t4+t AT2 = t1+t2+t3+t4+t DT3 = t1+t2+t3+t4+t G总时间为T = T1+T2+T3 = 3*( t1+t2+t3+t4)+ t A + t D + t G8.设某机有5级中断;L0,L1,L2,L3,L4,其中断响应优先次序为:L0最高,L1次之,L4最低。
微机原理 第8章 中断控制器8259A 习题及参考
第八章中断控制器8259A1. 8259A的初始化命令字和操作命令字在设置上有什么不同?答:初始化命令字:是在计算机系统启动时,由初始化程序设置的,且一旦设定,一般在系统工作过程中就不再改变。
操作命令字:是由应用程序设定的,用来对中断处理过程作动态控制。
在系统运行过程中,可被多次设置。
2. 8259A中的中断屏蔽寄存器(IMR)与8086的中断允许标志(IF)有何差别?在中断响应过程中,它们是怎样配合工作的?答:差别有三:差别1——IMR中的某位为1时,说明对应此位的中断请求当前是受到屏蔽的;而IF位为0时,说明可屏蔽中断请求是受到屏蔽的。
差别2——IMR可以屏蔽部分中断请求;而IF为0时,屏蔽的是所有可屏蔽中断请求。
差别3——IMR是8259A中的一个8位寄存器;而IF是CPU中16位标志寄存器中的1位控制标志。
配合:只有当IMR中的某位为0且IF=1时,CPU才有可能响应对应此位的中断请求。
具体过程是:由中断请求寄存器(IRR)接收外部的中断请求并锁存中断请求,IMR中的对应位决定是否让这些请求通过。
如果IMR的对应位为1,则说明此中断当前受到屏蔽,即对它进行了封锁,而不让其进入优先级裁决器(PR);如果IMR的对应位为0,则PR把新进入的中断请求与当前服务寄存器(ISR)中指示的当前正在处理的中断作比较,若判断出新进入的中断请求具有足够高的优先级,则PR通过相应的逻辑电路使8259A的INT端为1,从而向CPU发出一个中断请求;如果此时CPU的IF=1,则CPU执行完当前指令后,就会响应该中断请求;否则,若IF=0,则CPU不予响应。
3. 8259A的全嵌套工作方式与特殊全嵌套工作方式有何不同?答:工作在全嵌套方式下,当处理某一级中断时,只有当优先级更高的中断请求到来,才会实施中断嵌套。
当同级中断请求到来时,不会给予响应;而工作在特殊全嵌套方式下,当处理某一级中断时,若有同级的中断请求到来,也会给予响应,从而实现对同级中断请求的特殊嵌套。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3. 高级中断源能中断低级的中断处理 当CPU响应某一中断源的请求,在进行中断处 理时,若有优先权级别更高的中断源发出中断申 请,则CPU要能中断正在进行的中断服务程序; 保留这个程序的断点和现场(类似于子程序嵌套), 响应高级中断,在高级中断处理完以后,再继续 进行被中断的中断服务程序。而当发出新的中断 申请的中断源的优先权级别与正在处理的中断源 同级或更低时,则CPU就先不响应这个中断申请, 直至正在处理的中断服务程序执行完以后才去处 理新的中断申请。
32
2. 雏菊花环(Daisy Chain)式或称为链式优先权排队 电路 另一种常用的硬件排队电路,如图8-8所示。 当多个输入有中断请求,则由中断输入信号的 “或”电路产生INTR信号,送至CPU。当CPU在 现行指令执行完后,响应中断,发出中断响应信 号。但CPU转向哪一个中断服务程序的入口呢?这 要由图8-8所示的链式优先权排队电路确定。 当中断响应为高电平,若F/F-A有中断请求, 则它的输出为高,于是与门A1输出为高,由它控 制转至中断1的服务程序的入口;且门A2输出为 低电平;因而使门B1、B2和C1、C2……所有下面 各级门的输入和输出全为低电平,即屏蔽了所有 别的各级中断。
3
1. 同步操作 有了中断功能,就可以使CPU和外设同 时工作。CPU在启动外设工作后,就继续执 行主程序,同时外设也在工作,当外设把 数据准备好后,发出中断申请,请求CPU中 断它的程序,执行输入或输出(中断处理), 处理完以后,CPU恢复执行主程序,外设也 继续工作。而且有了中断功能,CPU可命令 多个外设同时工作。这样大大提高了CPU的 利用率,也提高了输入输出的速度。
8
2. 实现优先权排队 在系统中通常有多个中断源,会出现两 个或更多个中断源同时提出中断请求的情 况,这样就必须要设计者事先根据轻重缓 急,给每个中断源确定一个中断级别—— 优先权。当多个中断源同时发出中断申请 时,CPU能找到优先权级别最高的中断源, 响应它的中断请求;在优先权级别最高的 中断源处理完了以后,再响应级别较低的 中断源。
第 8 章 中断
1
8.1 8.2 8.3 8.4 8.5
本章讲述: 引言 最简单的中断情况 中断优先权 中断控制器Intel8259A 8086微处理器的中断方式
2
8.1 引言 8.1.1 为什么要用中断
当CPU与外设交换信息时,若用查询的 方式,则CPU就要浪费很多时间去等待外设。 这样就存在一个快速的CPU与慢速的外设之 间的矛盾,这也是计算机在发展过程中遇 到的严重问题之一。为了解决这个问题, 一方面要提高外设的工作速度;另一方面 发展了中断的概念。实现了中断,就有以 下好处:
7
8.1.3 中断系统的功能
为了满足上述各种情况下的中断要求,中断系统应该 具有如下功能: 1. 实现中断及返回 当某一中断源发出中断申请时,CPU能决定是否响应 这个中断请求(当CPU在执行更紧急、更重要的工作时, 可以暂不响应中断),若允许响应这个中断请求,CPU必 须在现行的指令执行完后,把断点处的IP和CS值(即下一 条应执行的指令的地址)、各个寄存器的内容和标志位的 状态推入堆栈保留下来——称为保护断点和现场。然后转 到需要处理的中断源的服务程序(Interrupt Service Routine) 的入口,同时清除中断请求触发器。当中断处理完后,再 恢复被保留下来的各个寄存器和标志位的状态(称为恢复 现场),恢复IP和CS值(称为恢复断点),使CPU返回断点, 继续执行主程序。
4
2. 实现实时处理 当计算机用于实时控制时,中断是一个十分重 要的功能。现场的各个参数、信息,可在任何时 间发出中断申请,要求CPU处理;CPU则可以马 上响应(若中断是开放的话)并加以处理。这样的 及时处理在查询的工作方式下是做不到的。 3. 故障处理 计算机在运行过程中,往往会出现事先预料不 到的情况,或者出现一些故障如电源突跳、存储 出错、运算溢出等。计算机就可以利用中断系统 自行处理,而不必停机或报告工作人员。
10
8.2 最简单的中断情况
CPU由于引脚的限制,它的中断请求线 的数量是有限的,例如8080只有一条中断 请求线。最简单的情况当然是只有一个中 断源,我们就从这个最简单的情况分析起。
11
8.2.1 CPU响应中断的条件
1. 设置中断请求触发器 每一个中断源,要能发出中断请求信号, 并且这个信号能保持着,直至CPU响应这 个中断后,才可清除中断请求。故要求每 一个中断源有一个中断请求触发器A,如 图8-1所示。
21
22
8.3 中断优先权
如前所述,实际的系统中,是有多个中 断源的,但是,由于CPU引脚的限制,往往 就只有一条中断请求线。于是,当有多个 中断源同时请求时,CPU就要识别出是哪些 中断源有中断请求,辨别和比较它们的优 先权(priority),先响应优先权级别最高的中 断申请。另外,当CPU正在处理中断时,也 要能响应更高级的中断申请,而屏蔽掉同 级或较低级的中断申请。
31
若CPU不在进行中断处理时(即在执行主 程序),则优先权失效信号为高电平,当有 任一中断源请求中断时,都能通过与门2, 发出INTR信号。这样的优先权电路,如何 能做到转入优先权最高的外设的服务程序 的入口呢?当外设的个数≤8时,则它们公用 一个产生中断矢量的电路,它有三位由比 较器的编码A2A1A0供给,就能做到不同的 编码转入不同的入口地址。
12
13
2. 设置中断屏蔽触发器 因为在实际系统中,往往有多个中断源。 为了增加控制的灵活性,在每一个外设的 接口电路中,增加一个中断屏蔽触发器, 只有当此触发器为“1”时,外设的中断请求 才能被送出至CPU,如图8-2所示。可把8个 外设的中断屏蔽触发器组成一个端口,用 输出指令来控制它们的状态。
26
(2) 移位法 XOR IN RCL JC RCL JC ┇
AL,AL AL,[20H] AL,1) 询问的次序即是优先权的次序。显然, 最先询问的,优先权的级别最高。 (2) 省硬件。不需要有判断与确定优先权的 硬件排队电路。 但随之而来的缺点是: 由询问转至相应的服务程序入口的时间 长,尤其是在中断源较多的情况下。
28
8.3.2 硬件优先权排队电路
1. 中断优先权编码电路 用硬件编码器和比较器的优先权排队电路,如 图8-7所示。 若有8个中断源,当任一个有中断请求时,通 过“或”门,即可有一个中断请求信号产生, 但它能否送至CPU的中断请求线,还要受比较 器的控制(若优先权失效信号为低电平,则与门2 关闭)。 8条中断输入线的任一条,经过编码器可以产 生三位二进制优先权编码A2A1A0,优先权最高 的线的编码为111,优先权最低的线的编码为 000。而且若有多个输入线同时输入,则编码器 只输出优先权最高的编码。
29
30
正在进行中断处理的外设的优先权编码,通过 CPU的数据总线,送至优先权寄存器,然后输出 编码B2B1B0至比较器,以上过程是由软件实现的。 比较器比较编码A2A1A0与B2B1B0的大小, 若A≤B,则“A>B”端输出低电平,封锁与门1, 就不向CPU发出新的中断申请(即当CPU正在处理 中断时,当有同级或低级的中断源申请中断时, 优先权排队线路就屏蔽它们的请求);只有当A> B时,比较器输出端才为高电平,打开与门1,将 中断请求信号送至CPU的INTR输入端,CPU就中 断正在进行的中断处理程序,转去响应更高级的 中断。
14
15
3. 中断是开放的 在CPU内部有一个中断允许触发器。只 有当其为“1”时(即中断开放时),CPU才能 响应中断;若其为“0”(即中断是关闭的), 即使INTR线上有中断请求,CPU也不响应。 而这个触发器的状态可由STI和CLI指令来 改变。当CPU复位时,中断允许触发器为 “0”,即关中断,所以必须要用STI指令来 开中断。当中断响应后,CPU就自动关中断, 所以必须在中断服务程序中用STI指令来开 中断。
25
查询程序有两种方式: (1) 屏蔽法
IN TEST JNE TEST JNE TEST JNE ┇ AL,[20H];输入中断请求触发器的 状态 AL,80H;检查最高位(电源故障)是否 有请求 PWF;有,则转至电源故障处理程序 AL 40H;否,检查磁盘是否有请求 DISS;有,转至磁盘服务程序 AL 20H;否,检查磁带是否有请求 MT;有,转至磁带服务程序
6
(4) 故障源。例如电源掉电,就要求把正在执行的 程序的状态——PC(或IP)、各个寄存器的内容和 标志位的状态保留下来,以便重新供电后能从断 点处继续运行。另外,目前绝大部分微型计算机, RAM是使用半导体存储器,故电源掉电后,必须 接入备用的电池供电电路,以保护存储器中的信 息。所以,在直流电源上并上大电容,使其因掉 电、电压下降到一定值时就发出中断申请,由计 算机的中断系统执行上述的各项操作。 (5) 为调试程序而设置的中断源。一个新的程序编 制好以后,必须经过反复调试才能正确可靠地工 作。在程序调试时,为了检查中间结果,或者为 了寻找毛病所在,往往要求在程序中设置断点, 或进行单步工作(一次只执行一条指令),这些就 要由中断系统来实现。
23
8.3.1 用软件确定中断优先权
要判别和确定各个中断源的中断优先权可以用 软件和硬件两种方法。 软件采用查询技术。当CPU响应中断后,就用 软件查询以确定是哪些外设申请中断,并判断它 们的优先权。 把8个外设的中断请求触发器组合起来,作为 一个端口,并赋以设备号,如图8-5所示。 把各个外设的中断请求信号相“或”后,作为 INTR信号,故任一个外设有中断请求,都可以向 CPU送出INTR信号。当CPU响应中断后,把中断 寄存器的状态,作为一个外设读入CPU,逐位检 测它们的状态,若有中断请求就转到相应的服务 程序的入口。用软件查询技术确定中断优先权的 流程如图8-6所示。 24
当满足上述条件后,CPU就响应中断, 转入中断周期,CPU做以下几种事: 1. 关中断 8086在CPU响应中断后,发出中断响应 信号INTA的同时,内部自动地实现关中断。 2. 保留断点 CPU响应中断,封锁IP+1,并且把IP和 CS推入堆栈保留,以备中断处理完毕后, 能返回主程序。