2011年微机原理与接口技术-课件3-8第4章中断系统_第1页
2011年微机原理与接口技术-课件3-8第4章中断系统_第2页
2011年微机原理与接口技术-课件3-8第4章中断系统_第3页
2011年微机原理与接口技术-课件3-8第4章中断系统_第4页
2011年微机原理与接口技术-课件3-8第4章中断系统_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章微型计算机的中断系统4.1中断原理4.28086CPU中断系统4.3可编程中断控制器8259A4.4中断方式输入输出4.1中断原理4.1.1中断的基本概念1.中断

由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理该事件的一个程序。该程序执行完成后,CPU接着执行被暂停的程序。这个过程称为中断。2.中断源引发中断的事件称为中断源内部中断(在CPU内部的中断源):程序异常(运算溢出等),陷阱中断(例如,单步运行程序等),软件中断(执行特殊指令)等。外部中断(发生在CPU外部的中断):外部故障(电源故障,存储器读写校验错)外部事件(定时时间到,外部特殊信号)IO事件(外部设备完成一次IO操作,请求数据传输)3.中断类型

用若干位二进制表示的中断源的编号。4.中断断点

由于中断的发生,某个程序被暂停执行。 该程序中即将执行,由于中断没有被执行的那条指令的地址称为中断断点,简称断点。5.中断服务程序

处理中断事件的程序段称为中断服务程序。

如:故障中断服务程序,输入输出中断服务程序。 不同类型的中断需要不同的中断服务程序。 中断服务程序不同于一般的子程序:子程序由某个程序调用,它的调用是由程序设定的,

它的执行时间是确定的。中断服务程序由某个事件引发,它的执行一般是随

机的,不确定的。

6.中断系统

为实现计算机的中断功能而配置的相关硬件、软件的集合称为中断系统。4.1.2中断工作方式的特点1.并行处理能力

实现CPU和多个外设同时工作,提高CPU效率。2.实时处理能力

计算机应用于实时控制时,对外部事件及时响应。故障处理能力

及时处理故障,不影响其他程序的运行。4.多道程序或多重任务的运行

在操作系统的调度下,运行多道程序或多重任务。4.1.3中断管理1.对中断全过程的控制中断源发出中断请求时,CPU能决定是否响应这一中断。若允许响应这个中断请求,CPU在保护断点后,将控制转移到相应的中断服务程序去中断处理完,CPU返回到断点处继续执行被中断的程序。2.中断源的识别

软件识别:响应中断后,CPU进入中断处理程序。在这个程序里,CPU逐个查询各中断源的状态,确

定是哪一个设备申请了中断。硬件识别:响应中断后,CPU进入一个“中断响应周期”。在这个周期里,申请中断的设备向CPU发送它的中断类型。3.中断的优先权

优先权:有多个中断源同时提出中断请求时,CPU

响应中断的优先次序。(1)软件查询法(2)分类申请法(3)链式优先权排队——菊花链法(4)可编程中断控制器——“向量”优先权排队图4-1菊花链中断优先级排队电路4.中断嵌套CPU在处理中断过程中,如果出现了级别更高的中断

请求,CPU停止执行低级中断的处理程序而去优先处

理高级中断。等高级中断处理完毕后,再接着执行低级的未处理完

的程序。这种中断处理方式称为多重(级)中断或中断嵌套。CPU在响应中断时已将IF清零,一定要在中断处理程

序中加入开中断指令,才有可能进行中断嵌套。中断嵌套

4.1.4中断过程1.中断源请求中断(1)外部中断源

由外部硬件产生可屏蔽或不可屏蔽中断的请求信号;(2)内部中断源

在程序运行过程中发生了指令异常或其他情况。(3)中断屏蔽

CPU用程序的方法允许某些中断源发出中断请求,而禁止某些中断源请求中断在外设的接口内增设一个中断屏蔽触发器

Q=0时,中断请求不能发往INTR;适当地设定中断屏蔽触发器的状态,可以控制中断

请求信号是否能够送到INTR端2.中断响应

(1)响应可屏蔽中断必须同时具备以下条件:CPU处于允许中断状态(IF=1);没有不可屏蔽中断请求和总线请求;当前指令执行结束。(2)响应不可屏蔽中断必须同时满足以下条件:

没有总线请求;当前指令执行结束。(3)响应内部中断的条件:当前指令执行结束。CPU接受中断请求后转入中断响应周期:(1)识别中断源,取得中断源的中断类型;(2)将标志寄存器FLAGS和CS、IP(断点)先后压入

堆栈保存;(3)清除自陷标志位TF和中断允许标志位IF;(4)获得相应的中断服务程序入口地址,转入中断服务

程序。中断响应周期图4-3中断过程3.中断服务

(1)保护现场:保护中断服务时要使用的寄存器(压栈);(2)开中断:中断服务时能响应更高级的中断请求;(3)中断处理:执行输入输出或非常事件的处理;(4)关中断:恢复现场时不被新的中断打扰;(5)恢复现场:将堆栈中保存的内容弹出;(6)中断返回:通过中断返回指令,弹出IP,CS,FLAGS,

程序回到被中断的地址,恢复中断前的状态。4.28086CPU中断系统4.2.18086的中断类型中断类型:用8位二进制表示,可以有256个不同的中断;中断请求输入引脚:NMI、INTR;中断优先级:

INT0(除法溢出)→溢出中断(INTO)→INTn指令

→NMI→INTR→单步中断。图4-48086CPU中断1.可屏蔽中断

IF=0时,CPU不响应INTR的中断请求;

IF=1时,CPU响应INTR的中断请求。 用STI指令使IF=1,称为开中断;

用CLI指令使IF=0,称为关中断。 系统复位后,或CPU响应了任何一种中断后,都会使

IF=0。

应使用STI指令使IF=1,确保中断开放。 可屏蔽中断源由8259A统一管理,每片8259A可以接

受8个外部设备的中断请求。2.不可屏蔽中断

NMI接收上升沿触发的中断请求信号; 输入脉冲应大于两个时钟周期;

CPU对NMI中断请求的响应,不受中断允许 标志位

IF控制; NMI中断类型码固定为2。3.内部中断

(1)除法溢出中断(n=0):

除数为零或商超过寄存器所能表达的范围。(2)单步中断(n=1):

TF=1,每执行完一条指令产生一次中断。

用于实现单步操作,是强有力的调试手段。(3)断点中断(n=3):

INT3指令产生一个中断类型码为3的断点中断。(4)INTO指令(n=4):

OF=1,则INTO指令引起类型码为4的内部中断;

OF=0,此指令不起作用,程序顺序执行。(5)INTn指令中断向量:中断服务程序的入口地址;8086的中断向量表从内存00000H开始存放;每个中断向量占用4个字节;中断服务程序入口的偏移地址存入两个低地址字节,

入口的段基址存入两个高地址字节;256个中断向量占用00000H~003FFH共1024个字节。4.2.28086的中断向量表图4-58086的中断向量表AH=35HAL=中断类型

INT21H →把原有的中断向量送ES:BX

AH=25HAL=中断类型DS:DX=中断向量

INT21H →把新的中断向量送中断向量表

1.不可屏蔽中断NMI不受CPU内部中断允许标志IF的约束,优先权高于INTR;中断类型号2;采用边沿触发(上升沿)方式(1)标志寄存器压入堆栈(2)清除IF标志和TF标志(3)保存断点,把断点处的CS和IP内容先后压入堆栈(4)取出中断服务程序的入口地址,送入IP和CS(5)进入中断服务程序用途:主板上RAM奇偶错,I/O通道中的奇偶校验错,

8087协处理器异常中断。4.2.38086对外部中断的响应2.可屏蔽中断INTR

外设的中断请求首先送到8259A,按照中断优先权排队;电平触发方式,高电平有效。响应过程:第一个INTA总线周期,通知外部做好准备;第二个INTA总线周期,从外部获取中断类型号;执行总线写周期,把FLAGS压入堆栈,并清除IF,TF;执行总线写周期,把CS内容压栈;执行总线写周期,把IP内容压栈;执行总线读周期,中断服务程序入口偏移地址送入IP;

执行总线读周期,中断服务程序入口段基址送入CS。4.3可编程中断控制器8259A接收8路外部中断请求,通过级联可以扩展至64级;优先权排队和控制,优先权方式可选;中断嵌套功能;向CPU提供中断类型号;对每一级编程进行屏蔽或开放。4.3.18259A的基本功能DB7~DB0:双向三态数据总线;IR7~IR0:外设向8259A发出的中断请求信号,输入。A0: 地址线,输入,用于选择内部端口。CS#:片选信号,输入、低电平有效。RD#:读信号,输入、低电平有效。WR#:写信号,输入、低电平有效。INITA#:中断响应信号,输入、低电平有效。INT:中断请求信号,输出、高电平有效。CAS2~CAS0:双向的级联线。SP/EN:主从设备设定/缓冲器读写控制,双向双功能4.3.28259A引脚及内部结构图4-68259A引脚图4-78259A的内部结构2.中断请求寄存器IRR

锁存外部设备送来的IR7~IR0中断请求信号;中断请求线变为高电平时,IRR中与之对应的一位被置1;寄存器的内容可以被CPU读出。3.中断屏蔽寄存器IMR

记录对每一级中断的屏蔽信号;置1时,对应的外部中断请求线被屏蔽;设置IMR起到改变中断请求优先级的效果。4.中断服务状态寄存器ISR

记录当前正在被服务的所有中断级;CPU响应IRi中断请求,ISR中对应第i位置1;中断处理结束前,要使用指令清除这一位;寄存器可以被CPU读出。5.优先权处理器

识别和管理各中断请求信号的优先级别;多个中断请求信号同时出现时,优先权处理器根据

控制逻辑规定的优先级规则和IMR的内容来判断这

些请求信号的最高优先级。6.控制逻辑

初始化命令字寄存器ICW1~ICW4: 在系统初始化时置入,工作过程中保持不变。操作命令字寄存器OCW1~OCW3: 工作过程中根据需要设定。7.数据总线缓冲器

8位的双向三态缓冲器,是8259A与系统数据总线的接口。8.读/写控制逻辑

接收、执行CPU的读/写命令。9.级联缓冲/比较器

在级联方式的主/从结构中,用来控制8259A的级联。缓冲器:SP/EN输出低电平时,开启双向缓冲器。级联比较器:

主8259A:用CAS2~CAS0输出被选中从片代码;

从8259A:接收主器件送来的从片选择代码1.8259A的工作过程(1)中断源在IR0~IR7上产生中断请求;(2)中断请求被锁存,经IMR“屏蔽”,送优先权电路判优;(3)控制逻辑接收中断请求,向CPU输出INT信号;(4)CPU接受8259A的INT信号,进入连续两个INTA周期。(5)优先权电路将最高优先权对应ISR中的位置位;(6)第二个INTA周期把中断类型号输出到数据总线;(7)CPU读取中断类型号,转移到相应的中断处理程序。(8)中断处理结束前,向8259A发送EOI(中断结束)命

令,使ISR相应位复位,本次中断到此结束。4.3.38259A的工作方式2.8259A的优先权管理

(1)固定优先级

中断源的优先级由它所连接的引脚编号决定;

全嵌套方式: 中断优先权级别固定,IR0优先权最高,IR7最低。

特殊全嵌套: 接收同一引脚上的第二次中断请求。(2)循环优先级

各个中断申请具有大体相同的优先级;

有优先权自动循环方式和优先权特殊循环方式。

3.中断屏蔽方式(1)普通屏蔽方式通过将中断屏蔽字写入IMR实现;写入某位为“1”,对应的中断请求被屏蔽;为“0”开放。(2)特殊屏蔽方式采用特殊屏蔽方式并用屏蔽字对IMR中某一位置“1”,

会同时使ISR中对应位清“0”。对屏蔽位的设置部分地改变了中断优先权。4.中断结束方式中断结束命令(EOI):

将ISR中的相应位清“0”,表示中断处理结束。(1)自动中断结束方式(AEOI)

8259A在第二个中断响应周期INTA信号的后沿,自动

将ISR中被响应中断级的对应位清“0”。(2)非自动中断结束方式(EOI)从中断服务程序返回前,在程序里向8259A输出一个中

断结束命令(EOI),把ISR对应位清“0”。一般的中断结束方式:由8259A自动选择优先权最高的位。特殊的中断结束命令:指令内指明要清除ISR中的某一位。注意!

在非自动中断结束方式下,如果在程序里忘了发送中断结束命令,那么,8259A将不再响应这个中断以及比它级别低的中断请求。5.8259A查询工作方式工作在程序查询方式时,8259A不向CPU发INT信号;CPU通过查询8259A了解有无中断;如果有中断发生,转入相应的服务程序。设置查询方式的过程:关闭中断;用输出指令把“查询方式命令字”送到8259A;对8259A执行一条输入指令,读取查询字查询字格式为:IXXXXW2WlW0I=1,有中断请求,W2WlW0为最高优先级编码。初始化命令字:在系统初始化时写入;用来设定8259的基本工作方式。操作命令字:在初始化后的任何时刻写入8259A;用来动态地控制8259A的操作。4.3.48259A的编程图4-81.初始化命令字ICW(1)初始化命令字ICWl注意!向8259A送入一条A0=0、D4=1的命令(ICW1):

启动8259A的初始化过程,相当于RESET信号的作用,自动完成下列操作:清除中断屏蔽寄存器IMR;设置以IR0为最高优先级,IR7为最低优先级的全嵌

套方式;固定中断优先权排序。图4-9(2)初始化命令字ICW2图4-10(3)初始化命令字ICW3(主片)图4-11(3)初始化命令字ICW3(从片)图4-12(4)初始化命令字ICW4(5)8259A初始化按以下顺序对8259A初始化:单片8259A:ICW1、ICW2、ICW4级联方式:ICW1、ICW2、ICW3、ICW4注意:级联方式下,每一片8259A都要独立地按上

面顺序写入初始化命令字。单片工作,边沿触发,全嵌套;中断类型08H~0FH,端口地址20H,21H;非缓冲方式,非中断自动结束,非特殊全嵌套方式;初始化程序:

MOV AL,00010011B OUT 20H,AL ;ICW1:单片,边沿触发 MOV AL,00001000B OUT 21H,AL ;ICW2:中断类型08H~0FH MOV AL,00000001B OUT 21H,AL ;ICW4:非中断自动结束IBM-PC微型计算机内8259A的工作方式例:二片8259A进行级联,边沿触发,非缓冲方式,非自动中断结束,CAS0~CAS2互连。主片初始化程序:

MOV AL, 00010001BOUT 20H, AL ;ICW1:边沿触发,级联MOV AL, 00001000BOUT 21H, AL ;ICW2:中断类型08H~0FHMOV AL, 00000100BOUT 21H, AL ;ICW3:IR2连有从片MOV AL, 00010001B ;ICW4:特殊全嵌套,非缓冲

OUT 21H, AL ;ICW4:非自动中断结束图4-138259A的级联

从片初始化程序:

MOVAL, 00010001BOUT0A0H,AL ;ICW1:边沿触发,级联MOVAL,01110000BOUT0A1H,AL ;ICW2:中断类型70H~77HMOVAL,00000010BOUT0A1H,AL ;ICW3:INT引脚连主片IR2MOVAL,00000001B ;ICW4:非自动中断结束OUT0A1H,AL ;ICW4:非特殊全嵌套,非缓冲2.操作命令字OCW对8259A预置完毕后:8259A进入设定的工作状态;准备接收由IR输入的中断请求信号;按固定优先级(缺省方式)来管理中断请求。运行中可以写入操作控制字,对8259A管理中断的方式进行修改和设定。有OCW1、OCW2和OCW3三个操作控制字;OCW按需要选择写入,没有固定顺序。图4-14(1)操作控制字OCWl例:需要屏蔽IR4的中断输入,同时不改变其他中断输入的屏蔽状态,可以用如下的三条指令实现: IN AL,21H ;取屏蔽寄存器当前值 OR AL,00010000B ;将D4位置1 OUT 21H,AL ;写回改变后的屏蔽字反之,需要清除对IR2的中断屏蔽: IN AL,21H ;取屏蔽寄存器当前值 AND AL,11111011B ;将D2位清0 OUT 21H,AL ;写回改变后的屏蔽字操作控制字OCW1应用图4-15(2)操作控制字OCW2一般的中断结束命令: MOV AL, 20H OUT 20H, AL操作控制字OCW2应用图4-16(3)操作控制字OCW3OCW3用途:设置/清除特殊屏蔽命令发出读寄存器命令:设置RR=1,RIS=0后,用IN指令读偶端口,可以将

IRR读入CPU。设置RR=1,RIS=1后,用IN指令读偶端口,可以将

ISR读入CPU。操作控制字OCW3应用发出查询命令;设置P=1后,用IN指令读偶端口,可以将中断查询字

读入CPU:

IXXXXW2WlW0I=1表示有中断请求,W2WlW0表示请求服务的最高

优先级编码。注意:设置了P=1的查询命令后,8259A不再通过INT引脚向

CPU发送中断请求。要取消查询方式,可以再次发出OCW3,并使P=0。操作控制字OCW3应用例:BIOS中读取ISR寄存器的程序段: MOV AL,00001011B ;OCW3命令字(读ISR) OUT 20H,AL ;写入OCW3端口 NOP ;延时 IN AL,20H ;将ISR内容送入AL MOV AH,AL ;将ISR内容转存入AH OR AL,AH ;是全0否? JNZ AW-INT ;否,转硬件中断程序 ……操作控制字OCW3应用4.4中断方式输入输出4.4.1中断方式IO接口中断方式输入过程:外部设备输入数据;中断请求触发器置位;接口向CPU申请中断;CPU响应中断,中断请求触发器被复位;CPU在中断服务程序中读取数据。图4-17中断方式输入接口中断屏蔽触发器的作用:控制外设接口的中断请求信号能否发送给CPU。中断屏蔽触发器可以看作该接口控制寄存器的一位图4-17是不完整的:没有给出中断屏蔽触发器的写入电路;解决中断优先权的电路;向CPU发送中断类型号的电路。图4-18中断方式下,完整的输入输出程序应由二个程序模块配合完成:主程序:

完成输入输出所需要的“初始化”工作和结束工作;中断服务程序:

完成数据传输和输入输出控制工作。4.4.2中断方式输入输出程序设计1.主程序设计(1)CPU初始化:设置堆栈,设置中断向量,开放中断。(2)中断控制器8259A的初始化:

选择工作方式,设置优先级、清除屏蔽位等。(3)接口的初始化:设置接口工作方式,设置中断开放位等。(4)中断服务程序的初始化:

设置中断服务程序使用的缓冲区指针,计数器,状态位等。注意:中断服务程序的指针、计数器、状态位等只能存放在

内存单元。对于输出过程,应在主程序中启动第一次输出。输入输出完成之后,主程序要根据需要做好结束工作。

如:处理输入的数据,关闭中断等。2.中断服务程序设计

保护现场:

把所有中断服务程序里使用、会改变值的寄存器压入

堆栈。

开放中断:

允许CPU响应优先级更高、更紧急的中断。

输入输出处理:

关闭中断:

关闭中断可以避免不必要的中断嵌套,发EOI命令。

恢复现场:

按照“先进后出”的原则,恢复各寄存器的内容。

中断返回:

用IRET指令返回被中断的程序。中断服务程序应注意的几个问题:中断服务程序要短小精悍,运行时间短,执行一次中断服务程序的时间要大大少于二次中断的时间间隔。对于耗费时间多的数据处理工作,应交由主程序完成。一般的情况下,应避免在中断服务程序内进行DOS功能调用。那样做,可能产生这些程序的“重入”。DOS功能调用程序不具备重入功能,会产生难以预料的结果。需要进行控制台IO操作可以使用BIOS调用。在输入输出处理完成后,一定要向8259A发送中断结束命令(EOI)。如果是级联的8259A的从片上的中断,则需要向主片和从片分别发送中断结束命令。否则,该设备的下一次中断就不能被响应,比它级别低的中断从此也不能被响应。

一个完整的中断方式输入程序设:数据端口地址为240H使用8259A的IR3引脚申请中断,中断类型0BH8259A端口地址为20H,21H输入以“回车”字符表示结束。4.4.3中断方式应用DATA SEGMENTIN_BUFFER DB 100DUP(?) ;接收缓冲区,假设一次输入不超过100字节IN_POINTER DW ? ;接收缓冲区指针DONE DB 0 ;完成标志,=1表示输入已完成DATA ENDS数据段定义CODE SEGMENTASSUME CS:CODE,DS:DATABEGIN: MOV AX, SEGIN_INTR ;IN_INTR是中断服务程序入口 MOV DS, AX LEA DX, IN_INTR MOV AX, 250BH ;AH中为功能号,AL中为中断类型 INT 21H ;装载0BH中断向量 MOV AX, DATA MOV DS, AX;装载数据段段基址主程序(1) MOV IN_POINTER,OFFSETIN_BUFFER ;设置指针初值 MOV DONE, 0 ;设置完成标志为“未完成” IN AL, 21H AND AL, 11110111B OUT 21H, AL ;清除IR3的屏蔽位 STI ;开放中断W: CMP DONE,0 JZ W ;等待完成 ..... ;结束处理 MOV AX, 4C00H INT 21H主程序(2)IN_INTR PROC FAR PUSH DS ;保护现场 PUSH AX PUSH BX PUSH DX STI ;开放中断,允许响应更高级中断 MOV AX, DATA MOV DS, AX ;在中断服务程序中重新装载DS寄存器 MOV BX, IN_POINTER;装载缓冲区指针 MOV DX, 240H

输入中断服务程序(1) IN AL, DX ;从输入设备读取一个数据,同时清除中断请求

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论