第九章中断控制器及DMA控制器_第1页
第九章中断控制器及DMA控制器_第2页
第九章中断控制器及DMA控制器_第3页
第九章中断控制器及DMA控制器_第4页
第九章中断控制器及DMA控制器_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

第九章中断控制器及DMA控制器

中断的概念可编程中断控制器Intel8259ADMA控制器9.1中断的概念

9.1.1中断源

中断源:引起中断的条件。PC机的中断源通常有以下几种:1.输入、输出设备

2.实时时钟

3.故障源

4.为程序调试而设置中断源

中断是指计算机的CPU在执行主程序时,收到了外部的或内部的中断请求,因而暂时中止主程序的执行,转去执行一段预先编制好的中断服务程序来处理这一中断请求,待处理完毕之后,又返回主程序接着被中断处继续执行,这样的一个过程就称为中断。NMIINTR中断逻辑软件中断指令溢出中断除法错单步中断非屏蔽中断请求中断控制器8259APIC8086/8088CPU内部逻辑断点中断可屏蔽中断请求n430128086/8088中断源类型:┇┇00000H003FFH9.1.2中断方式工作的优点

1.并行操作2.实现实时处理9.1.3中断系统应具有的功能

1.能够实现中断及返回

(1)CPU中断允许控制:执行指令STI置IF=1

(2)断点自动保护:自动保护断点处的程序地址(3)自动地转到中断服务程序:

CPU能够提供中断处理程序的入口地址,转入中断服务程序进行中断处理。(4)正确地返回原程序:自动恢复断点,转原程序。

2.实现优先级排队对多个中断源同时提出中断请求时,根据任务的轻重缓急,确定一个中断优先级,级别高的中断请求先被响应。

3.中断嵌套当CPU响应某一中断请求时,出现级别更高的中断申请,允许高级别的中断请求中断正在执行的低级别中断处理,CPU为高级中断服务。9.2可编程中断控制器Intel8259A

特点:协助CPU实现对外部中断请求的管理具有优先级排队和向CPU发中断的功能能管理8个外部中断源采用级联方式,可扩展8片8259A构成64级主从式中断系统。可以有多种功能和工作的方式9.2.18259A的引脚功能与内部结构一、引脚功能

D0~D7

数据线,双向,与CPU进行数据通信。/WR

写控制信号输入端,低电平有效。/RD

读控制信号输入端,低电平有效。/CS

片选输入端,低电平有效。A0

地址线输入端,提供奇地址和偶地址,用于选择内部寄存器。PC机8259的两个端口地址为:20H,21H。IR0∽IR78级中断申请输入端,上升沿或高电平触发有效。INT

中断请求信号输出端/INTA

中断响应信号输入端。CPU在中断响应后,向8259A连续发两个中断响应脉冲。/SP//EN

级连/缓冲允许信号线。在级连工作方式中,该端信号方向为输入,若输入高电平则本片为“主”8259A,若输入低电平则本片为“从”8259A。在缓冲器工作方式中,该端信号方向为输出,输出为允许缓冲器选通信号;但在此方式下,该端不能用于表示主从关系,而由ICW4中的M/S位来设置主从关系。CAS0~CAS2

级联控制信号。对于“主”8259A,CAS0~CAS2为输出信号,对于“从”8259A,CAS0~CAS2

为输入信号。二、8259A内部结构1.中断请求寄存器(IRR)用于接收8位由外部引脚IR0-IR7输入的中断请求。当IRi端由高电平或上升沿触发时,IRRi位置“1”,没有中断申请的端,与IRR对应位清“0”。2.中断服务寄存器(ISR)用来记录正在服务中的所有中断请求。当IRi中断请求被响应时,ISR中相应位ISRi被置“1”,并将一直保持到该级中断处理过程结束或处理过程中被清除为止。在多重中断时,ISR中可能有多位同时被置“1”。3.中断屏蔽寄存器(IMR)用来屏蔽已被锁存在IRR中的任何一个中断请求。对所有要屏蔽的中断请求线,IMR相应位置“1”,即请求不能进入PR去判优。4.优先级判别器(PR)用于判别已进入IRR中的各中断请求的优先级别,或与ISR中正在服务的中断比较优先级。由PR决定是否响应当前IRR请求级。若PR判定出新进入的中断请求比当前锁存在ISR中的中断请求优先级为高时,则通过逻辑使8259A的INT输出端为“1”,从而向CPU发出一个新的中断请求。9.2.28088/8086的外部中断响应过程

一、8088/8086与中断有关的引脚功能

1.非可屏蔽中断申请输入端NMI

NMI不受中断允许标志位IF的控制。只要NMI端有中断请求,CPU就在当前指令执行结束后立即响应。常用于紧急故障处理或紧迫事件的处理。

2.可屏蔽中断申请输入端INTR

INTR受中断标志位IF状态的控制,当CPU执行开中断指令STI(IF=1)时,CPU接受外部中断请求。当CPU执行关中断指令CLI(IF=0)时,CPU不接受外部的中断请求,即屏蔽所有外部硬件的中断请求。

3.可屏蔽中断响应输出端/INTA

CPU中断响应头两个总线周期中,/INTA输出两个响应负脉冲。第一个负脉冲通知外设(8259)中断得到允许,清相应的IRR位,置相应的ISR位;第二个负脉冲,控制外设(8259)接口向数据总线送中断类型码n。对于可屏蔽的外部中断INTR,中断类型号则由8259提供。8259的中断类型号用输出指令写入中断类型号寄存器中,当CPU响应中断,发第二个脉冲时,将中断类型号寄存器中的n送到数据总线,此时CPU读数据总线,而获得该中断类型号。

二、外部中断过程

1.当一条或几条中断请求线(IR0∽IR7)变成高电平或上沿脉冲时,则使IRR相应位置“1”。2.可用IMR对IRR进行屏蔽,但至少有一位是中断允许的。中断请求状态通过优先级电路PR分析,把当前未屏蔽的最高优先级的中断请求从INT输出,送至CPU的INTR。3.若CPU是处于开中断状态,中断允许标志IF=1,则在CPU执行完当前指令后,就可以响应中断,8086CPU将从端向8259A的端回送两个负脉冲。4.8259A在收到CPU的第1个中断响应脉冲后,将ISR中的中断优先级最高的那一个位置“1”,而将IRR的相应位复位成“0”。5.8259A在收到第2个脉冲后,将把对应的中断类型号n送到数据线,CPU自动读入数据线得到中断类型号n。6.CPU自动地将标志位寄存器FLAGS内容入栈,并清标志位IF和TF为零,关闭可屏蔽中断和禁止单步中断。7.把当前CS及IP的内容(断点地址)入栈:

SPSP-2,(SP)CS;SPSP-2,(SP)IP,8.CPU根据中断类型号n,指向中断矢量表4n地址处,从矢量表中取出中断处理程序的段地址值和偏移值送入CS和IP中,转入中断处理程序执行:

IP(4n+1,4n),CS(4n+3,4n+2)IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG中断返回后

9.发中断响应结束命令若在自动结束中断(AEOI)方式下,8259A在第2个INTA脉冲结束时,将正在服务中断的ISR中的对相位自行复位成“0”;若是非自动结束中断方式(EOI),则该位的“1”状态将一直保持到中断过程结束,由CPU发EOI命令才能复位成“0”。10.在中断处理程序中应有一个开中断指令STI,使IF=1,以准备接收新的中断。若开中断指令STI放在中断服务程序的开始处,则可以实现中断嵌套。11.中断处理程序完成后,执行IRET:IP←(SP),SP←SP+2,CS←(SP),SP←SP+2,Flags←(SP),SP←SP+29.2.38259A中断管理方式一、中断触发方式1.电平触发方式

当IR0∽IR7出现高电平时,表示有中断请求。高电平要持续到8259A收到第一个中断响应脉冲之前。当中断服务结束,ISR的对应位被清0之前,IRi的高电平必须撤消,否则可能引起第二次中断。2.边沿触发方式

IR0∽IR7出现低电平到高电平的跃变,表示有中断请求。在CPU响应中断,8259A收到第一个中断响应脉冲之前,同一个输入端不应当出现第二次跃变,否则第一次中断请求可能被丢失。二、中断屏蔽方式1.常规屏蔽方式将中断屏蔽寄存器的某一位置1,即可屏蔽相应级别的中断请求。

常规屏蔽方式,当一个中断被响应时,禁止同级和较低级别的中断请求。若开放同级和较低级别的中断请求,则要将屏蔽寄存器中本级中断的对应位置“1”,但这样不会屏蔽中断服务寄存器中的本级标志位,8259A还会据此禁止优先级别比它低的中断请求。2.特殊屏蔽方式特殊屏蔽的功能:当屏蔽寄存器中本级中断的对应位置“1”,会同时屏蔽中断服务寄存器中的本级标志位,真正开放了较低级别的中断。

一、嵌套中断方式

1.完全嵌套方式

完全嵌套简称全嵌套方式,在这种方式下,中断请求按IR0到IR7处理,其中IR0中断的优先级最高,IR7的优先级最低。在全嵌套方式下,只允许高一级中断进入嵌套,在低级中断服务程序中能响应高一级中断,不允许低级中断和同级中断进入嵌套。

2.特殊全嵌套方式

本方式,主要用于多片8259A系统中的主片8259A。因为主片的某个中断请求输入引脚要接另一从片8259A的中断请求输出瑞,而一个从片8259A又接8个外部中断源,对于主片8259A的输入端而言,从片输入引脚是同一级,但对于从片8259A的8个输入端而言是不同级的,特殊嵌套方式,使从片8259A的各个中断输入端的高一级中断能够进入低级中断的嵌套。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁)C.假定IR3发生中断,并获得服务一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。B.特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式与特殊全嵌套方式的区别

去CPU

主片为特殊全嵌套方式:

当处理一级中断时,如果有同级的中断请求,也会给予响应。

否则:当从片有中断请求,若主片是普通全嵌套方式,则会屏蔽从片上它优先级高的中断请求。因为从片上的8个IRi变成了主片的同一级。

而特殊全嵌套方式,对来自同一从片的较高优先级请求不会屏蔽。四、中断优先级管理方式1.固定优先级方式(1)IR0∽IR7的优先级固定,IR0为最高级,IR1次之,IR7为最低级。(2)CPU响应某一级中断时,8259A将ISR中与该中断源对应的位置1,并自动禁止同级和较低级的中断请求。2.优先级循环方式

IR0∽IR7的中断级别不是固定的。当任一中断服务程序结束后,该中断源就自动降为最低级,而原先比它低一级的中断源自动升为最高级

IR0IR1IR2IR3IR4IR5IR6IR7初始

五、中断结束方式(EOI)在对IRi中断源的中断服务结束时,把ISR寄存器中断服务标志位ISRi清0的方式:1.自动EOI方式自动中断结束方式的功能是:8259A在收到第2个中断响应(/INTA)信号之后,自动把ISR中置1的最高优先级服务标志ISRi位清0,但实际上中断还没有结束。若在IRi服务程序执行过程中,如果有新的中断请求,不论它的级别高低,只要CPU是处于开中断状态,都将中断IRi服务程序,出现“重复嵌套”。为了防止“重复嵌套”,服务程序必须在关中断的前提下执行。2.常规EOI方式在服务程序执行IRET指令前,向8259A送一个“常规中断结束”命令字。8259A收到EOI命令字之后,把ISR中优先级最高的置1位清0。适合全嵌套方式下结束中断。但是EOI不适合在特殊屏蔽方式应用,因为特殊屏蔽方式下,正在执行的高级中断源服务程序可能被“挂起”,而响应新的低级中断。如果在低级服务程序中发出常规EOI命令,它所清0的不是本身的ISRi位,而是级别比它高的ISRi置1位。所以,在特殊屏蔽方式,应使用特殊中断结束命令。3.特殊中断结束方式在服务程序执行IRET之前,向8259A送一个“特殊中断结束”命令字。8259A根据命令字L2∽L0位的编码,把ISR中的指定位清0。该命令可在任何情况下使用。4.自动EOI,优先级循环方式

8259A收到第二个中断响应信号时,自动把ISR中置1的最高优先级ISRi位清0,并且优先级按循环方式进行。5.常规EOI,优先级循环方式

8259A收到此命令后,把ISR中最高优先级置1位清0,同时完成优先级循环。6.特殊EOI,优先级循环方式“特殊EOI,优先级循环”可将指定的ISRi位清0,并完成优先级循环。

不管是正常、还是特殊的中断结束方式,对于级联系统中,在从片的中断处理程序快结束时,必须发送两次EOI:一次给从片,一次给主片(向从片发EOI后,须检查从片中的所有申请中断的源是否全服务过。只有都服务过了,才能向主8259送另一个EOI命令)。在从片的中断处理程序快结束时,应给8259A发EOI命令,方法是:(a)向从片发EOI;

(b)读从片的ISR内容:若为0,表示从片只有一个中断源申请中断,再向主片发一个EOI命令。若不为0,表示从片存在两个以上的中断源在申请中断,则不应发EOI给主片。六、总线连接方式1.缓冲方式缓冲方式是8259A通过总线驱动器和系统数据线相连,此时/SP//EN端为输出。在8259A输出中断类型号的时候,/SP//EN

输出一个低电平,作为总线驱动器的启动信号。2.非缓冲方式非缓冲方式,8259A数据线与系统数据线直接相连,/SP//EN为输入端。当系统只有一片8259A时,/SP//EN

接+5V,多片级连时,主8259A/SP//EN

接+5V,从8259A/SP//EN接地。级联(中断最多扩展到64级)一片8259A只能接收8级中断,当超过8级时,可用多片8259A级联使用,构成主从关系。n片8259A可支持7n+1个中断源;连线要求:.主8259A:级联信号CAS2~

CAS0是输出信号;SP端为“1”.从8259A:级联信号CAS2~

CAS0是输入信号;SP端为“0”,从8259A的INT接到主的中断输入端IR上例子:3片级联七、中断查询方式中断源超过64个或一个中断服务程序中n个模块分别为n个中断设备服务时,8259A可以工作在中断查询方式,CPU用软件查询确认中断源,外设靠中断方式请求服务。中断查询方式系统先关中断,然后用OUT指令将操作命令字OCW3中的P位置1发送到8259A的偶地址端口,发出了查询命令,组成查询字。如果在这以前,正好有外设发出过中断请求,接着用输入指令从偶地址端口读取8259A的查询字,则ISR寄存器中相应的ISRn位置“1”,查询字指示当前中断服务寄存器中优先级最高的一级中断,CPU转到优先级最高的一级中断服务程序,为指定的外部设备进行服务。9.2.48259A初始化编程8259内部有7个寄存器:ICW1~ICW4为初始化寄存器组,OCW1~OCW3为工作寄存器组。

一、初始化命令字ICW的格式1.初始化命令字ICW1

(A0=0

I3I4ICW1

芯片控制

ICW2

中断类型号

ICW3

主从片关系

ICW4

方式控制处理部分控制部分00000000

ISR在服务寄存器PR优先级判别器IRR中断请求寄存器00000000

中断屏蔽寄存器IMROCW2

10010100

00

01

OCW3OCW18259A中断控制器用于确定级联方式和触发方式A0=0

表示ICW1的端口为偶地址,以下各寄存器的本项依次类推。D4=1ICW1的特征;D0(IC4)后边是否要设置ICW4。若DO=0,则不要设置;D0=1,则要设置。而8088/8086是要设置ICW4的,所以D0=1;D1(SNGL)系统中使用单片/多片8259A。D1=1为单片;D1=0为多片。PC/XT中设定为单片,所以D1=1;D2(ADI)地址间距(8085)。8088不用,可为0;也可为1。D3(LTIM)中断请求信号类型。“0”为边沿触发方式;“1”为电平触发方式。D5∽D7(8085)

8088不用,可为“0”,也可为“1”。

2.ICW2(中断类型号,A0=1)提供中断类型号

ICW2为中断类型号初始化命令字,用户可用该命令字定义中断矢量的高5位码D7∽D3(中断矢量的基值)

。中断类型号的后3位D2~D0,由8259A根据中断请求的IRi引脚号自动插入(见表9.2.1),则在初始化时,可以写入任意值。3.ICW3(A0=1)用于确定主片和从片的级联状态ICW3是主/从片的初始化命令字,只有在ICW1的D1位(SNGL)=0时,即一个系统中包含多片8259A时,才设置ICW3。对于主片来讲,D7~D0与IR7~IR0引脚中是否连有从片相对应。若对应位为1,则引脚上连有从片;反之,没有连从片。

从片初始化时,ICW3中D7~D3不用,设为0。D2~D0为从片的识别码,即指示该片接于主片IR7~IR0相应的输入端,级联时从片的编码如表9.2.2。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7T6 T5 T4 T3

x

x

xA0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7S6 S5 S4 S3

S2

S1

S0A0 D7 D6 D5 D4 D3 D2 D1 D0

1 00 0 0 0

ID2 ID1 ID04.ICW4

(A0=1

)完成中断管理方式的设定只有当ICW1的D0=1时才有必要设置ICW4。D7∽D5=000ICW4的特征。D4(SFNM)

嵌套方式。D4=1表示8259A工作于特殊全嵌套方式,用于多片8259A系统中;D4=0,工作于全嵌套方式或其它。D3(BUF)连接系统总线方式。D3=1,为缓冲方式,8259A的D7∽D0通过总线驱动器与系统的数据总线相连;D3=0为直接连接方式,8259A的D7∽D0直接与系统的数据总线相连。D2(M/S)选择主片/从片。因当D3=1为缓冲方式时,不能用/来识别主片/从片,所以用该位进行识别。D2=1,本片为主片;D2=0为从片。当D3=0时,则D2不起作用。D1(AEOI)设置中断结束方式。D1=1设置中断自动结束方式。D1=0中断非自动结束方式。D0(μPM)选择CPU系统。D0=1,表示当前处于8086/8088系统;D0=0,表示处于8080/8085系统。 D7 D6 D5D4 D3 D2 D1 D0

00 0SFNM BUF M/S AEOI 1二、8259A的初始化编程1.写入初始化命令字顺序向8259A初始化命令字的顺序,如图9.2.8所示。第一个命令字ICW1写入8259A的偶地址端口,而ICW2、ICW3、ICW4要按顺序写入8259A的奇地址端口,编程时顺序不能颠倒。2.初始化编程的主要内容设定主要内容:中断请求信号的类式;单片/多片方式;中断类型号;优先排队规则;中断结束方式。写ICW1写ICW2级连?写ICW3需ICW4?写ICW4NNYY初始化结束3.初始化编程举例例9.2.1PC/XT机的BIOS对8259A初始化的条件是:单片8259A,8088模式,与系统连接采用缓冲方式,优先级设置为全嵌套中断方式,中断请求信号为边沿触发,中断类型号的基值=00001B。8259A的端口地址为:20H,21H。初始化程序段如下:MOVAL,13H;单片8259A,边沿触发,要ICW4OUT20H,AL;初始化ICW1MOVAL,08H;8259A中断向量高5位为00001BOUT21H,AL;初始化ICW2MOVAL,09H;8088模式、缓冲方式、全嵌套OUT21H,AL;初始化ICW4例9.2.2PC/AT中,硬件中断管理采用两片8259A,各输入端中断源如表9.2.3。从片的INT与主片IR2相连,系统中主片8259A的端口地址为20H和21H,从片口地址为OAOH和OA1H,系统对主片8259A初始化的要求是:主片:边沿触发方式,级联但无缓冲,起始中断类型号为08H(IRO),正常的中断结束,全嵌套方式。从片:起始中断类型号为70H,其它条件与主片相同。主片初始化程序段:

MOVAL,00010101B;ICW1,边沿触发,要ICW4,级连要ICW3OUT20HAL;写入ICW1MOVAL,00001000H;ICW2,设置IRO的中断类型号为08HOUT21HAL;写入ICW2MOVAL,00000100B;ICW3,主片8259A的IR2接从片INTOUT21HAL;写人ICW3MOVAL,00000101B;ICW4,不用缓冲,正常中断结束,全嵌套方式

OUT21HAL;写入ICW4从片初始化程序段:

MOVAL,0001000lB;ICW1,边沿触发,要ICW4,级连要ICW3OUT0A0H,AL;写入ICW1MOVAL,01110000H;ICW2,设置IR0的中断类型号为70HOUT0A1H,AL;写入ICW2MOVAL,00000010B;ICW3,从片8259A的INT接主片的IR2OUT0A1HAL;写入ICW3MOVAL,00000001B;ICW4,不用缓冲,正常中断结束,全嵌套方式

OUT0A1HAL;写入ICW4三、操作命令字OCW8259A操作命令字OCW1~OCW3,在应用程序内设置,写入次序要求不严,但OCW1必须写入奇地址,OCW2,OCW3要写入偶地址。

1.操作命令字OCW1(A0=1)OCW1是中断屏蔽命令字。D0~D7对应于IR0~IR7线的屏蔽/开放位。当OCW1某位为1,则相对应的中断源IRi位被屏蔽;若某位为0,则开放。例:

MOVAL,OFCH

OUT21H,ALA0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7M6 M5 M4 M3

M2

M1

M02.操作命令字OCW2(A0=0)

OCW2是用来设置中断优先级循环方式和中断结束方式的操作命令字。OCW2的标志为:D3=D4=0R(D7)

决定系统的中断优先级是否按自动循环方式设置。R=1,采用优先级自动循环方式;R=0,则为非自动循环方式。SL(D6)

决定OCW2中的L2、L1、L0是否有效。若SL=1则L2、L1、L03位有效,否则为无效。

L2、L1、L0这3位有两个功能,一是在设置为特殊的中断结束命令字时,L2、L1、L0指出要清除当前ISR中的哪一位;二是在特殊的优先级循环方式命令字时,L2、L1、L0将指出循环开始时哪个中断的优先级最低。EOI(D5)中断结束命令位。当EOI=1时,使当前ISR中对应的最高级别位ISRi复位。此时,ICW4中的AEOI位为0,则ISRi位就要用EOI命令位来清除。A0 D7 D6 D5 D4 D3 D2 D1 D0

0 RSL EOI 0 0

L2

L1

L0RSLEOI

功能说明001普通中断结束命令。使当前中断服务程序对应的最高级别的ISRi位清“0”。011特殊中断结束命令。由L2、L1、L0组成一个特殊的中断结束命令。101普通优先级循环中断结束命令。某中断服务结束,8259A一方面将ISR中当前中断处理程序对应的ISRi位清“0”,另一方面将刚结束的中断请求IRi降为最低优先级,而将最高优先级赋给中断请求IRi+1,。111特殊优先级循环的中断结束命令。某中断服务结束,由L2L1L0给定的ISRi清“0”,而最高优先级将赋给ISRi+1。100设置优先级自动循环命令(置位)。在中断优先级自动循环方式时,CPU在中断响应总线周期中第2个中断响应信号INTA结束时,将ISR中的相应位ISRi清“0”,并将最低优先级赋给这一级,而最高优先级赋给ISRi+1。000结束优先级自动循环命令(复位)。110特殊优先级循环命令。由L2L1L0指定中断请求IRi最低优先级,而最高优先级赋给IRi+1,其它各级则依次类推。010

OCW2无意义。3.操作命令字OCW3

(A0=0)

该命令字用来设置中断查询方式、设置和撤消特殊屏蔽方式、设置对8259A内部寄存器IRR,ISR,IMR的读出命令:D4=0,D3=1OCW3的特征位。D7=0

固定值;D6(ESMM)特殊屏蔽允许位,ESMM=1允许特殊屏蔽,否则不允许;D5(SMM)特殊屏蔽模式位,SMM=1选择特殊屏蔽方式,SMM=0选择非特殊屏蔽方式。当D6D5=11时,置位特殊屏蔽方式。即如果系统正在执行高级中断处理程序,希望能响应低级中断,可以用该命令字将高级中断中止,而响应低级中断,执行完低级中断。D6D5=10时,解除对高级中断的特殊屏蔽。A0D7D6D5 D4 D3 D2 D1D0

00ESMMSMM 0 1 P RRRISD2(P)中断查询方式位。查询中断方式,不使用中断类型号和中断矢量表。当P=1,使8259A设置为中断查询方式,CPU不是靠中断请求信号而是靠读取查询字进入中断处理过程。P=0,为非中断查询方式,该方式下可以读取IRR、ISR的状态。若设置OCW3的D2D1D0=100后,CPU读取OCW3的同一地址(8259A的A0=0)的内容,可得到中断识别状态字(查询字):D7~D0=I0000W2W1W0

I

指示是否有中断设备。I=1,表示有设备请求中断,I=0,表示没有设备申请中断。W2W1W0指示请求中断的最高优先级。I=1时,CPU查询中断方式才有效,CPU读取查询字(IN),使ISR的对应位置1,复位对应最高优先级的IRR位,并送查询字到数据线进入AL,CPU根据W2W1W0的值进入最高优先级的IRi的中断处理过程。例:CPU读8259A查询字进入中断的过程如下:...CLIMOVAL,0CHOUT20H,AL;OCW3设置查询命令字WWW:INAL,20HTEST80H;读取查询字JZWWW;I=0,继续查询或执行其它程序MOVBL,AL;I=1转入W2W1W0指出的最高级编码中断处理程序ANDBX,0007HJMP(BX)..;D1(RR)

读寄存器命令位,RR=1允许读寄存器IRR和ISR,RR=0禁止读这两个寄存的内容。D0(RIS)寄存器选择位,在RR=1的情况下,该位才有意义。RIS=0读IRR,RIS=l读ISR寄存器的内容。

读寄存器IRR和ISR的状态端口为偶地址。IMR的状态,可以通过输入指令从8259A奇地址读取,即对OCW1读得到IMR的状态。例如当D2D1D0=010,表示要读中断请求寄存器IRR;当D2D1D0=011,表示要读中断服务寄存器ISR;当A0=1,对OCW1读出,即可读得IMR的状态。无需向8259A写入OCW3字。例:;读ISRMOVAL,0BH;P=0,RR=1,RIS=1,表示要读ISROUT20H,ALNOPINAL,20H;(AL)为ISR寄存器里的内容;读IRRMOVAL,0AH;P=0,RR=1,RIS=0表示要读IRROUT20H,ALNOPINAL,20H;(AL)为IRR寄存器里的内容.;读IMRINAL,21H;读取IMR(OCW1)状态四、命令字特征及写入顺序说明

1.ICW1,OCW2,OCW3都写入偶地址端口,8259A通过它们的特征加以区分:ICW1的特征是D4=1;而OCW2的特征是D4D3=00,OCW3的特征是D4D3=01。2.ICW2,ICW3,ICW4,OCW1均写入奇地址端口,8259A是通过这些命令字的位置和写入时间来区分的。初始化命令字ICW2,ICW3,ICW4在ICW1的后面顺序写入,次序不可颠倒。对于一片8259A,ICW1,ICW2是必须设置的;ICW3,ICW4并非每片8259A都要设置,只有在级联方式下才需设置ICW3(由ICW1的D1位才设置ICW3)。在8086/8088系统或需要设置特殊全嵌套方式、缓冲模式、中断自动结束方式的情况下(由ICW1的D0位=1)才设置ICW4。OCW1操作命令字,总是单独写入的,可以由任何程序在任何时间多次写入。例1:按以下要求初始化8259A:接口地址为20H和21H;中断为上升沿触发;单片8259A;一般EOI;与IR0-IR3对应的中断向量码为08H-0BH;IR4-IR7不使用。分析:根据要求,各初始化参数及工作参数如下:ICW1=00010011=13HICW2=08H中断向量码ICW4=01HOCW1=11110000=0F0H中断屏蔽字初始化程序如下:INIT8259A:

MOV AL,13H;A0=0,写ICW1

OUT 20H,AL;上升沿触发,单片,写ICW4

;A0=1,写ICW2,ICW4,OCW1 MOV AL,08H ;ICW2 OUT 21H,ALMOVAL,01H;ICW4OUT21H,AL MOV AL,0F0H ;OCW1:屏蔽IR4-IR7

OUT21H

,AL例:设PC/XT机正在为IRQ3中断服务,希望响应比IRQ3低的中断。用特殊命令字将IRQ3暂时屏蔽,响应低级中断,响应结束,解除对IRQ3的中断屏蔽,执行IRQ3的服务程序,IRQ3中断服务程序如下:.CLIMOVAL,08H;送屏蔽IRQ3的字给OCW1OUT21H,ALMOVAL,68H;D6D5=11,即特殊屏蔽字送OCW3OUT20H,ALSTI;若有低级中断可以响应,并为其服务.CLIMOVAL,48H;D6D5=10,即解除特殊屏蔽字送OCW3OUT20H,ALMOVAL,00H;解除对IRQ3的屏蔽字送OCW1OUT21H,ALSTI.IRET例2:若8259A以两片级联方式管理15级中断,从片INT接到主片的IR2上,主、从片的中断请求采用边沿触发方式,选用非缓冲方式,一般EOI。主片的中断类型码为8~0FH,从片的中断类型码为70H~77H,设主片的地址为20H,21H;从片的地址为0A0H,0A1H。请初始化8259A。(1)8259A初始化编程对主片8259A的初始化:

MOVAL,00010001H;ICW1

OUT20H,ALJMPINTR1INTR1:MOVAL,00001000H;ICW2OUT21H,ALJMPINTR2INTR2:MOVAL,00000100H;ICW3OUT21H,ALJMPINTR3JNTR3:MOVAL,11H;ICW4主片特殊全嵌套

OUT21H,AL

对从片8259A的初始化:

MOVAL,11H OUT0A0H,AL JMPINTR5INTR5:MOVAL,70HOUT0A1H,AL JMPINTR6INTR6:MOVAL,02HOUT 0A1H,ALJMPINTR7INTR7:MOVAL,01HOUT0A1H,AL

;从片普通全嵌套(2)级联工作编程读ISR的内容(OCW3):

MOVAL,0BHOUT0A0H,ALNOP INAL,0A0H从片发EOI命令

温馨提示

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

评论

0/150

提交评论