可编程中断控制器859A.ppt

上传人:本田雅阁 文档编号:2611098 上传时间:2019-04-17 格式:PPT 页数:82 大小:3.22MB
返回 下载 相关 举报
可编程中断控制器859A.ppt_第1页
第1页 / 共82页
可编程中断控制器859A.ppt_第2页
第2页 / 共82页
可编程中断控制器859A.ppt_第3页
第3页 / 共82页
亲,该文档总共82页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《可编程中断控制器859A.ppt》由会员分享,可在线阅读,更多相关《可编程中断控制器859A.ppt(82页珍藏版)》请在三一文库上搜索。

1、1,2,一、引言,3,1. 向CPU的引脚INTR发中断申请信号 当有多个外设同时发出中断请求时, 能按照一定的优先级顺序,向CPU发出中断申请, 使CPU能优先响应优先级最高的外部设备的中断申请。 2. 送中断类型号 在CPU中断响应周期,针对不同外设的中断请求, 向CPU传送不同的中断类型号, 使CPU执行相应的中断子程。,中断申请管理接口的主要功能:,在IBM PC机由8259A可编程中断控制器(PIC)来完成。,4,二、 8259A的引脚、编程结构和工作过程,1. 8259A的引脚 2. 8259A的编程结构 3. 8259A的工作过程,5,定时器,6,1、单片8259A可支持8个中断

2、源; 2、采用多片8259A级连,可最多支持64个中断源。n片8259A可支持7n+1个中断源; 3、级连时只能有一片8259A为主片,其余的均为从属片; 4、涉及到的8259A引脚包括: CAS0-CAS2 SP/EN IRi INT,6,级联工作方式,7,SP/EN:双功能的双向信号线,分别表示主从定义/缓冲器方向这两种工种方式。 在主从方式中,它作为输入信号线SP,由该信号的高低电平来区分“主”或“从” 8259A:若SP1,则本片为“主”8259A;若SP0,则为“从” 8259A。只有一个8259A时,它应接高电平。 在缓冲方式时,则它作为输出信号线EN,用于控制缓冲器的传送方向:若

3、EN1,则CPU将把数据写入8259A;若EN0,将把数据由8259A读出至CPU。,7,8,级连电路连接方法,8,9,28259A的编程结构,10,11,(1) 初始化命令字(ICW1- ICW4) 决定8259A的工作方式 通常是在计算机系统启动时在初始程序设置, 一旦设定,一般在系统工作过程不再改变。 例 开机后,BIOS将8259A初始化为: IR0IR7中断申请信号为上升沿触发方式; IR0IR7对应的中断类型号分别为08H0FH; 优先级IR0最高, IR7最低; (2) 操作命令字(OCW1,OCW2,OCW3) 在应用程序中设定,动态地控制CPU处理中断的过程 (3) ISR和

4、IRR存放当前8259A的状态 通过读取 ISR 和 IRR 的内容,可了解当前8259A工作情况,12,初始化命令字 ICW1ICW4,初始化命令字在8259正常工作前设置。它决定8259的工作方式和环境。返回,ICW1,12,13,8259A的控制命令字,初始化8259A必须从ICW1开始 写ICW1意味着重新初始化8259A 写入ICW1后,8259A的状态如下: 清除ISR和IMR(全0); 将中断优先级设成初始状态:IR0最高,IR7最低; 设定为一般屏蔽方式; 采用非自动中断结束方式; 状态读出逻辑预置为读IRR。,13,14,在中断响应的第二个总线周期,通过数据线发送中断类型码给

5、CPU 返回,14,15,ICW2中断向量码,T7T3: 中断向量码的高5位 T2T0: 最低3位为中断源的序号IRn 000111分别对应IR0IR7 由8259A根据中断源的序号自动填入 例如: 若ICW2命令字为48H,则IR0的中断向量码为48H,IR7的中断向量码为4FH,等等。,A0 D7 D6 D5 D4 D3 D2 D1 D0 1 T7 T6 T5 T4 T3 x x x,15,16,级连初始化必须与硬件连接一致,主片,从片,16,17,ICW3级连控制字(续),ICW3必须与主从片的连接关系一致: 例如,主片的IR4与从片的INT线连接,则主片的ICW3=10H,从片的ICW

6、3=04H。 中断响应时,主片通过级连线CAS2-CAS0送出被允许中断的从片标识码,各从片用自己的ICW3与CAS2-CAS0比较,二者一致的从片才可发送中断向量码。,17,18,ICW4,初始化命令字ICW1ICW4是以写入的顺序来区分的,返回,18,19,例 8259初始化,单片8259应用于8086系统,IR0的中断类型码为18H,电平触发方式,全嵌套非缓冲方式,自动结束中断,要求初始化ICW4。端口地址为0A0H开始,初始化程序为: MOV AL,13H ICW1初始化 OUT 0A0H,AL ;写入ICW1 MOV AL,18H ICW2 初始化 OUT 0A2H,AL ;写入IC

7、W2 MOV AL,03H ICW4初始化 OUT 0A2H,AL ;写入ICW4,19,20,8259A的操作命令字OCW,OCW用于设置8259的工作状态 在初始化后写入 OCW的写入顺序可任意 写入地址要求: OCW1必须写入奇地址端口(A0=1) OCW2,OCW3必须写入偶地址端口(A0=0),20,21,操作命令字OCW,Mi=1 中断请求线IRi被屏蔽(不允许中断) =0 允许该IRi中断 OCW1将写入IMR寄存器。 A0=1时读OCW1可读出设置的IMR内容。,OCW1,21,22,操作命令字OCW,R=1:循环优先权 R=0:固定优先权 SL=1:L2L1L0指定IR位 S

8、L=0:L2L1L0无效 EOI=1:中断结束,OCW2,22,23,OCW3,操作命令字OCW,8259的工作方式编程并没有固定顺序,各命令字之间用地址信号A0及特征位加以区分。,23,24,OCW3(续),查询方式允许8259A不工作于中断方式,而是以查询方式工作。 CPU先写一个D2=1(查询方式)的OCW3,再对同一地址读入,即可得到如下状态字节: I x x x x R2 R1 R0 I=1表示有中断请求,中断请求号为R2-R0 此查询步骤可反复执行,以响应多个同时发生 的中断。 读IRR/ISR:写入此命令后,随后再对同一地址读,即可得到IRR或ISR的内容。,24,25,CLI

9、;关中断 MOV AL,17H;ICW1:单片,边缘触发,需要ICW4 OUT 20H,AL MOV AL,08H ;ICW2:中断类型码的D7D3位为00001 OUT 21H,AL MOV AL,01H;ICW4:非自动的EOI,非缓冲,80X86方式 OUT 21H,AL MOV AL,04H ;OCW1:只屏蔽IRQ2(保留中断) OUT 21H,AL MOV AL,20H ;OCW2:固定优先权,一般的EOI OUT 20H,AL MOV AL,4BH;OCW3:正常屏蔽,非查询方式,可读ISR OUT 20H,AL STI ;开中断,8259的初始化编程,25,26,分两步: (1

10、)处理外设中断申请,决定是否向CPU发中断申请信号。 (2)若发中断申请信号,且CPU响应,则在CPU中断响应周期送出中断类型号。,3. 8259A 的工作过程,27,(1) 处理外设中断申请,决定是否向CPU发中断申请信号, 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请 是否进入优先级裁决器 PR。 IMR对应位为 0,允许中断申请进入优先级裁决器, 为 1,不允许进入,中断申请被IMR屏蔽。, 中断申请寄存器IRR 锁存外部的中断申请。 若 IR0IR7 引脚上有中断申请,则将 IRR 相应位置1, 当前中断服务寄存器 ISR 记录CPU正在响应的中断。 ISR中的某位为1,表示CP

11、U正在响应此级中断, ISR中的某位为 0,表示CPU没有或已响应完此级中断,, 优先级裁决器PR 据新进入的中断申请和 ISR的内容, 决定是否发中断申请信号。 如果进入的中断申请比 ISR 中记录的中断优先级高, 则通过 8259A 的 INT 引脚向 CPU发出中断请求信号; 如果进入的中断申请不比 ISR 中记录的中断优先级高, 同级或低级,则不向 CPU 发中断请求信号。,28, 中断申请寄存器IRR 锁存外部的中断申请。 若 IR0IR7 引脚上有中断申请,则将 IRR 相应位置1,29,30,31,32,(2) 若发中断申请信号,且CPU响应, 则在CPU中断响应周期送出中断类型

12、号,CPU接收到 INTR上的中断申请信号后: 如果 IF 标志为0,则CPU不响应此中断申请信号, 即中断申请被IF屏蔽。 如果 IF 标志为1, 则处理完当前的指令后, 进入中断响应周期 通过 INTA 引脚发出两个负脉冲信号, 从数据总线上获取中断类型号, 进入中断响应的过程。,33,8086CPU中断响应周期时序,34, 将 ISR 中相应位置1, 表示 CPU 响应此级中断,执行此中断源的中断子程。,8259A在接收到第一个INTA中断响应信号后:,0 0 1 0 0 0 0 0,ISR 当前 中断 服务 寄存器,IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7,PR

13、优先级 裁决器,IRR 中断 申请 寄存器,1 0 0 0 0 0 0 1,ICW1 芯片控制,ICW2 中断类型号,ICW3 主从片关系,ICW4 方式控制,OCW1 中断屏蔽寄存器 IMR,OCW2 优先级、发EOI,OCW3 特殊屏蔽设置,IOR,IOW,总线,数 据 线,D0 D7,INTA,A0,片 选 译 码,A5 A9,CS,A0,RD,WR,INTA,INT,D0 D7,INTR, 把 IRR中对应的位清0,清除IRR中锁存的中断申请信号。,35, 通过数据线,将被响应申请的中断类型号送给CPU。 类型号由ICW2提供,在初始化8259A时已设定好。, CPU获得中断类型号后,

14、进入CPU响应中断的过程, 执行中断子程,处理中断源申请的功能。,36,37,三、8259A的编程,1. 8259A的编程 2. 8259A的编程方法 (1) 设置中断屏蔽字 (2) 发中断结束命令EOI,38,39,8259A有两个I/O端口地址,A0=0 偶地址端口 A0=1 奇地址端口,ICW1 芯片控制,ICW2 中断类型号,ICW3 主从片关系,ICW4 方式控制,处理部分,控制部分,0 0 0 0 0 0 0 0,ISR 当前 中断 服务 寄存器,PR 优先级 裁决器,IRR 中断申请 寄存器,0 0 0 0 0 0 0 0,8259A中断控制器,D0 D7,0,1,1,1,A0,

15、1,0,0,A0,40,8259初始化流程,用ICW1设置,是否级联 请求格式信号 是否需要设置ICW4,用ICW2设置中断类型码,是否为级联方式,本片设为主片吗?,设置ICW3,各位 对应IR0IR7,设置ICW3,高5位 为0,低3位为标识码,需要用到ICW4吗?,用ICW4设置,是否为特殊全嵌套方式 是否为缓冲方式 是否为自动结束中断方式 是否为16位系统,结束,进行中断服务,N,Y,N,Y,N,Y,41,(1)通过中断屏蔽寄存器IMR的读写,设置中断屏蔽字 (2) 通过OCW2操作命令寄存器,发中断结束EOI命令,2. 8259A的编程方法,8259A有多种工作方式,这些工作方式均可编

16、程选择,使用相当灵活。,要求掌握:,42,IRR ISR 查询字(OCW3) IMR(OCW1) CPU,OCW2 CPU写 OCW3 ICW1 写(IMR).OCW1.ICW2.3.4,DB7-0,DB7-0,0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 X 0 1 0 1 X X 0 1,0A0H 0A1H,20H 21H,输出操作(WR),0 0 1 0 0 1 1 0,0A0H 0A1H,20H 21H,输入操作(RD),CS A0 WR RD,PIC2,PIC1,对8259的端口寻址及其基本操作(读/写基本操作),注意:8259只有两个端口,由A0一位确定: 1:奇数口

17、 0:偶数口 由奇/偶数端口及控制字中的某些特定 位来确定命令字往那个R中送。,43,44,新增允许 IR2 的中断申请 IN AL, 21H ;读入原IMR的内容 AND AL, 1111 1011B ;D2=0,允许IR2的中断申请 OUT 21H, AL ;写入IMR,禁止 IR4 的中断申请 IN AL, 21H ;读入原IMR的内容 OR AL, 0001 0000B ;D4=1,禁止IR4的中断申请 OUT 21H, AL ;写入IMR,例 已知 IBM PC/XT系统中 8259A的奇地址端口地址为21H,45,46,(2) 发中断结束命令 EOI,由 8259A 的工作过程可知

18、: ISR中的内容是优先级裁决器进行裁决的重要依据 CPU响应某级中断后,8259A自动将ISR的对应位置1,如果CPU已执行完中断子程,而ISR中的对应位仍为1, 8259A的优先级裁决器仍会据ISR的内容做裁决, 从而会屏蔽同级或低级的中断申请。 在中断响应后,对 ISR中相应位的清0很重要, 它是8259A认为中断结束的标志。,47,48,一、 初始化8259A时,设置8259A工作方式为自动清0方式, 则在CPU响应中断后,硬件自动将ISR的对应位清0。,清 ISR 内容的方法有两种:,二、 初始化8259A时,设置8259A工作方式为非自动清0方式, 需在中断子程中,通过软件方式清0

19、。,方法是:通过往OCW2写入20H实现,即由偶地址端口写入:,49,编程在中断子程 IRET 返回前,发中断结束命令EOI,例 已知 IBM PC系统中, 8259A的偶地址端口地址为 20H; BIOS 初始化 8259A 时,设置 8259A 工作方式为非自动清 0 方式。,intsub PROC 、 、 、 MOV AL, 20H ;将中断结束命令字20H 送AL OUT 20H, AL ;写入OCW2中 IRET ;中断返回 intsub ENDP,50,中断服务子程序设计,设计中断子程序的步骤: (1) 选择一个中断向量; (2) 将中断子程序的入口地址置入中断向量表的相应表项中;

20、 (3) 使中断服务子程序驻留内存; 举例,50,51,选择一个中断向量,如果是采用硬件中断,则要使用由硬件确定的中断向量。如果是采用软件中断,即用执行INT n指令的方式来执行中断服务程序,则可以在系统预留给用户的中断向量号中选某一个中断向量。例如,选50H号向量。,51,52,中断服务子程序设计步骤(续),(2)将中断子程序的入口地址置入中断向量表的相应表项中 设选择的向量号为n,其置入方法有两种:一是用数据传送指令将中断服务子程序入口的相对地址存放在物理地址为4n的字单元中,将中断服务子程序入口的段地址存放在物理地址为4n2的字单元中。二是采用DOS中设置新中断向量的中断功能(25功能)

21、,即: 向量号 21H 功能号 25H 入口参数:DS中断服务子程序入口段地址; DX中断服务子程序入口相对地址; AL新增的向量号。,52,53,使中断服务子程序驻留内存,使程序驻留内存,要求该程序以.COM形式运行,因为.COM程序将定位于低地址区,DOS常在低地址区增加驻留程序,而.EXE将定位于高地址区。使程序驻留内存的方法是采用DOS的中断调用,即:向量号21H 功能号31H 入口参数:DX驻留程序字节数; 该功能使当前程序的DX个字节驻留内存并返回DOS。,53,54,举例,例:在微机中增加一中断服务子程序,其向量号为50H,其功能是BX内容增1。 C SEGMENT ASSUME

22、 CS:C ORG 100H B: MOV AX,SEG SUBP MOV DS,AX MOV DX,OFFSET SUBP MOV AH,25H MOV AL,50H INT 21H ;建立50H中断向量表项 MOV DX,N MOV AH,31H INT 21H ;中断服务程序驻留内存并返回DOS SUBP PROC FAR INC BX IRET SUBP ENDP N EQU C ENDS END B ,54,55,8259A应用举例,在IBM PC/XT机中,只用1片8259A中断控制器,用来提供8级中断请求,其中IR0优先级最高,IR7优先级最低。它们分别用于日历时钟中断、键盘中断

23、、保留、网络通信、异步通信中断、硬盘中断、软盘中断及打印机中断。8259A片选地址为20H、21H。 8259A 的使用步骤如下: 1. 初始化 2. 送中断向量入口地址 3. 中断子程序结束 4. 中断嵌套,55,56,初始化,MOV AL, 13H ;写ICW1,单片,边沿触发,要ICW4 OUT 20H,AL MOV AL,8 ;写ICW2,中断类型号从8开始 OUT 21H,AL MOV AL,0DH ;写ICW4,缓冲工作方式,8088/8086配置 OUT 21H,AL MOV AL,0 ;写OCW1,允许IR0IR7全部8级中断请求 OUT 21H,AL,56,57,送中断向量入

24、口地址,例如,异步通信中断IR4,其中断向量类型码为8+4=12(0CH),则中断入口地址的偏移量(IP值)与段基址(CS)在入口地址表中的存放地址为124=48(30H),49(31H),50(32H),51(33H)。其中30H、31H存放指令指针IP;32H,33H存放指令段码CS。,57,58,中断子程序结束,由于8259A采用中断工作方式,且ICW4中的D1位(即AEOI)为0,这意味着采用正常结束中断,因此,在中断子程序结束前必须发EOI命令和IRET命令。 MOV AL,20H ;写OCW2命令,使ISR相应位复位(即发EOI命令) OUT 20H,AL IRET ;开放中断允许

25、,并从中断返回 ,58,59,中断嵌套,为了使中断嵌套,即在中断响应过程中,允许比本中断优先级高的中断进入,只要在进入中断处理程序后,执行开中断指令STI即可达到此目的。,59,60,四、8259A在IBM PC/XT系统中的应用,18259A与系统的连线。 2BIOS初始化程序对8259A的设置。,61,1与系统的连线,注意:8259A在连线中的位置,62, 8259A的片选地址范围为 20 3F H 偶、奇端口地址通常取用20H、21H,方 波,键 盘,保 留,串 口2,硬 盘,软 盘,打印机,IOW,17.2Hz,A0,CS,8259A,总线,A0,数 据 线,IOR,RD,WR,片 选

26、 译 码,IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7,A5 A9,D0 D7,D0 D7,Vcc,SP/EN CA0 CA1 CA2 GND,+ 5V,203FH,用于多片 8259A 级连情况,INTA,INT,INTA,INTR,串 口1,63,IR0 接一个频率为17.2Hz的方波; 若CPU对该申请给予响应, 则每秒执行17.2次该申请对应的中断子程。 IR1接键盘接口发出的中断申请; 每按下一键,若CPU对该申请给予响应, 则执行一次该申请对应的中断子程。 IR2IR7通过系统总线引出, 对应引脚信号为IRQ2IRQ7。,17.2Hz时钟信号, 8259A的8个中

27、断申请与外设的连接,64,65,66, IR0IR7 中断申请信号为上升沿触发方式; IR0IR7 对应的中断类型号分别为08H0FH; 优先级IR0最高, IR7最低; 采用非自动结束方式, 需向OCW2发EOI中断结束命令, 清除ISR中的记录。,2BIOS初始化程序对8259A的设置,67,IOW,A0,CS,8259A,总线,A0,数 据 线,IOR,RD,WR,片 选 译 码,A5 A9,D0 D7,D0 D7,203FH,SP/EN CA0 CA1 CA2 GND,方 波,键 盘,保 留,串口2,串口1,硬 盘,软 盘,打印机,17.2Hz,IR0 IR1 IR2 IR3 IR4

28、IR5 IR6 IR7,Vcc,+ 5V,用于多片 8259A 级连情况,INTA,INT,INTA,INTR,68,Pentium机中8259的连接,68,69,Pentium的中断,中断系统由两片8259,一个中断路由器构成 从8259的中断申请与主8259的IRQ2相连 ISA总线上有6个中断申请,其中IRQ2连至从8259的IRQ9 系统软件上,将IRQ9的中断向量指向IRQ2的中断向量 主8259的端口地址为: 20H,21H 8个对应的中断申请IRQ7IRQ0类型号为0Fh08h 从8259的端口地址为: A0H,A1H 8个对应的中断申请IRQ15IRQ8类型号为77h70h 中

29、断路由器(Interrupt Router) : 动态分配PCI上的中断申请到8259中未被占用的中断上,69,70,中断程序举例,PC机中主8259A的I/O地址为20H和21H,中断向量码为08H; 中断请求从IR6引入,故中断类型号为0EH; 主程序如下: ;保存原来的中断向量 mov ah,35h mov al,0eh ;中断类型码 int 21h ;取原中断向量(在es:bx中) mov save_ip,bx ;保存原来的中断向量 mov save_cs,es,70,71,71,;设置自己的中断向量 push ds mov dx,offset my_int mov ax,seg my

30、_int mov ds,ax ;DS:DX的内容为my_int的首地址 mov ah,25h mov al,0eh int 21h ;设置自己的中断向量 pop ds ;初始化堆栈指针 mov sp,my_stack_top ;设置8259A的中断屏蔽字 in al,21h and al,10111111b ;开放IR6中断 out 21h,al sti ,72,子程序如下: my_int proc far pusha popa mov al,20h ;EOI命令,00100000B out 20h,al ;写OCW2 sti iret my_int endp,pusha是将我们所有的16位通

31、用寄存器压入堆栈,popa同理是将我们所有的16通用寄存器取出堆栈。,73,五、中断优先方式与中断嵌套,1、中断优先方式 两类优先级控制方式:固定优先级和循环优先级 固定优先级方式 所有中断请求IRi的中断优先级固定不变 优先级排列顺序可编程改变 加电后8259A的默认方式,默认优先级顺序从高到低为IR0IR7,IR7,IR6,IR5,IR4,IR3,IR2,IR1,IR0,7,6,5,4,3,2,1,0,3,2,1,0,7,6,5,4,最低级,最高级,最高级,最低级,优先级,IR7,IR6,IR5,IR4,IR3,IR2,IR1,IR0,默认优先级,优先级可编程改变,73,74,2、循环优先

32、级方式 中断源轮流处于最高优先级,即自动中断优先级循环 初始优先级顺序可用编程改变 某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级,IR7,IR6,IR5,IR4,IR3,IR2,IR1,IR0,7,6,5,4,3,2,1,0,2,1,0,7,6,5,4,3,最低级,最高级,最高级,最低级,ISR内容,IR7,IR6,IR5,IR4,IR3,IR2,IR1,IR0,IR4的服务结束以前,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,IR4的服务结束以后,ISRi,74,75,3、中断嵌套方式 在中断处理过程中允许被更高优先级的事件所中断称为

33、中断嵌套。8259A有两种中断嵌套方式: 普通全嵌套方式(默认方式) 一中断正被处理时,只有更高优先级的事件可以打断当前的中断处理过程而被服务。 特殊全嵌套方式 一中断正被处理时,允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务。 注: 特殊全嵌套仅用于多个8259A级连时的主8259A,而不能用于从属8259A或单8259A系统。,75,76,D.,主8259A,IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7,一般嵌套方式: 从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应,特殊嵌套方式: 因主片不封锁从片的INT,故级别高的IR0-IR2中断

34、可以得到响应。(但IR3-IR7仍被本从片封锁),C.,假定IR3发生中断,并获得服务,一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。,B.,特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。,A.,INT,E.,从8259A,INT,IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7,一般全嵌套方式与特殊全嵌套方式的区别,去CPU,76,77,六、中断结束处理方式,1、当某一IRi中断被服务时,ISR中的相应位ISRi=1。当服务结束后,则必须清零该ISRi位。使ISRi=0是通过向8259A发出中断结束命令(EOI命令)实现的。 2、三种EOI命令 自动EOI(

35、AEOI)(自动EOI方式) 非指定EOI(NSEOI)(正常EOI方式) 指定EOI(SEOI)(特殊EOI方式),77,78,AEOI:在第2个INTA#结束时,由8259A使ISRi自动复位; 因不保留当前正在服务的中断的状态,故AEOI不能用于中断嵌套方式 指定EOI:由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的ISR的位号。 用于特殊屏蔽方式 非指定EOI:由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位。 用于普通全嵌套方式,78,79,中断服务程序,向从PIC发EOI命令,读从PIC的ISR,全0?,向主PIC发EOI命令,Y,I

36、RET,恢复现场,N,特殊全嵌套方式下的EOI处理 只有当从PIC的中断全部处理完后,才能向主PIC发EOI命令,79,80,七、屏蔽中断源的方式,1、IMR屏蔽字决定了允许或禁止某位IRi所对应的中断:IMi=1 禁止, IMi=0 允许。 2、特殊屏蔽方式: 提供了允许较低优先级的中断能够得到响应的特殊手段。 原理:假定当前正在处理IR6,先进入特殊屏蔽方式,然后设置IM6=1。这时,除IR6外的所有中断请求均能得到响应。 特殊屏蔽方式中只能用SEOI命令结束中断。,80,81,特殊屏蔽例: ;IR4中断处理程序 CLI MOV AL,68H ;OCW3:0 1 1 0 1 0 0 0 OUT 0C0H,AL ;设置特殊屏蔽方式 IN AL,0C1H OR AL,10H ;屏蔽IR4 OUT 0C1H,AL STI ;IR7请求,响应,返回 CLI ;为设命令字 IN AL,0C1H ;读出屏蔽字 AND AL,0EFH ;清除IMR4 OUT 0C1H,AL MOV AL,48H ;OCW3:0 1 0 0 1 0 0 0 OUT 0C0H,AL ;取消特殊屏蔽 STI ;继续IR4中断服务 MOV AL,20H ;OCW2:0 0 1 0 0 0 0 0 (EOI) OUT 0C0,AL IRET,81,82,第一小节结束, 谢谢您的合作!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1