280 likes | 707 Views
INT INTA. CPU. 8259A. IR 0. 中断请求. INTR. INTA. IR 7. 8259A. IR 0. IR 0. 8259A. CPU. 从. 主. INTR. IR 7. INTA. 8259A. IR 0. IR 7. 从. IR 7. 级联. 7 . 3 可编程中断控制器 Intel 8259A. 8259 中断控制器 1 . 8 级优先权控制,通过级连可扩展至 64 级优先权控制。 2 .每一级中断都可允许或屏蔽。 3 .提供中断向量。 4 .可编程选择多种工作方式. 单片. INT.
E N D
INT INTA CPU • 8259A IR0 中断请求 . . . INTR INTA IR7 8259A IR0 IR0 . . . • 8259A • CPU 从 . . . . . 主 INTR IR7 INTA 8259A IR0 . . . IR7 从 IR7 级联 7.3 可编程中断控制器Intel 8259A 8259中断控制器 1.8级优先权控制,通过级连可扩展至64级优先权控制。 2.每一级中断都可允许或屏蔽。 3.提供中断向量。 4.可编程选择多种工作方式 单片
INT 内部总线 控 制 逻 辑 D0~D7 IRTA 内部 总线 缓冲器 中 断 服 务 寄存器 (ISR) 优先权 比较器 (PR) 中 断 请 求 寄存器 (IRR) IR7 内部 总线 缓冲器 IR6 IR5 A0 IR4 IR3 IR2 CAS0 级联缓冲器/比较器级 IR1 CAS1 IR0 CAS2 中断屏蔽寄存器 (IMR) SP/EN RD WR CS 7.3 可编程中断控制器Intel 8259A 8259中断控制器的内部结构 IRR: 中断请求寄存器。 ISR: 中断服务寄存器。 IMR: 中断屏蔽寄存器。 PR: 优先权判别器。
特殊完全嵌套方式 : 在级联方式下必须运用特殊完全嵌套方式。同一片的IR0~IR7与完全嵌套方式相同。对于从片,中断被响应后,并不屏蔽这个从片的中断,从片中优先权高的中断申请仍可响应。 INTA 8259A IR0 IR0 . . . • 8259A CPU 从 . . . . . 主 INTR IR7 8259A IR0 . . . IR7 从 IR7 7.3 可编程中断控制器Intel 8259A 8259中断中断优先权管理方式及中断结束方式 设置优先级的方式 : 完全嵌套方式 : 中断优先权为固定优权,IR0~IR7依次下降。中断嵌套时只能高级中断低级的中断,同级和低级不能产生中断。适用于单片结构。 主片工作在特殊完全嵌套方式,而从片工作在完全嵌套方式。
INT INTA • 8259A 中断优先权的旋转 正常优先权旋转: IRi的中断优先权相等。某个中断响应,它的优先权变为最低,比它低一级的中断源得到最高优先权。其它中断的优先权按级别以循环方式类推。 IR0 中断请求 . . . IR7 IR5 例如, 中断优先级依次为IR0到IR7,当中断IR4被响应,则IR4的中断优先权变为最低,比它低一级IR5的优先权变为最高。 相应的优先权排队为 IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4、IR3 IR6 IR4 IR7 IR3 IR0 IR2 IR1 7.3 可编程中断控制器Intel 8259A 8259中断中断优先权管理方式及中断结束方式 特殊优先权旋转 : 根据用户的要求将最低优先级赋给指定的中断源。可在主程序或中断服务程序中利用置位优先权命令把最低优先级赋给某一中断源,其它中断的优先权按级别以循环方式类推。
7.3 可编程中断控制器Intel 8259A 8259中断中断优先权管理方式及中断结束方式 屏蔽方式 : 普通屏蔽方式 : IMR中的某一位或某几位置“1”,即可能将相应级的中断请求屏蔽掉。程序运行的过程中,可以将中断优先级比正在响应的中断高的中断屏蔽掉。 特殊屏蔽方式 : 当处理中断的过程中,希望对本级进行屏蔽,而允许优先级比它高或低的中断申请中断。特殊屏蔽方式只能用特殊EOI结束。 查询排序方式: 用软件查询响应中断,此时8259不处于中断状态,INT可不连接INTR,而是程序查询IRR决定的是否响应中断及中断的优先级。
自动EOI方式 : 在第二个中断响应周期的的后沿,自动使中断源在ISR中的相应位复位,只适用于无中断嵌套的情况。否则将可能出现自身的重复中断。 T1 T2 T3 T4 T1 T2 T3 T4 CLK ALE D7~D0 中断类型码 INTA 7.3 可编程中断控制器Intel 8259A 8259中断中断优先权管理方式及中断结束方式 中断结束方式 普通EOI方式 : 中断服务程序结束,发出中断结束(EOI)命令。在级连的情下则必须送两个EOI,一个送给从片,另一个送给主片,8259自动将ISR中对应中断位清“0” 特殊EOI方式 : 中断服务程序结束,发出EOI的同时将当前结束的中断级别也传送给8259。8259将ISR中指定级别的相应位清“0”。显然这种方式适合于任何情况。
缓冲方式: 输出一个低电平允许信号,启动总线缓冲器与总线相连接。在缓冲方式下必须初始化8259为主、从结构。 SP SP SP / / / EN EN EN 非缓冲方式: 单片、多片非级连下工作在非缓冲方式下, 作为输入端,必须接高电平。 多片级连时 主片为高电平,从片为低电平。 7.3 可编程中断控制器Intel 8259A 连接系统总线的方式: 多片8259与系统相连时,8259通过数据总线缓冲器与数据总线相连,进行数据缓冲放大。(ICW4进行初始化)
电路特征: 1)SP/EN 主8259接VCC,从8259接GND用以区分主从关系。 SP SP / / EN EN 中 断 源 VCC INTA IR7 GND CPU …… INT • 8259A • 主 INTR IR0 …… IR0 8259A 从 IR7 CAS2 CAS1于CAS0 CAS2 CAS1于CAS0 INTA 7.3 可编程中断控制器Intel 8259A 8259芯片的级联使用: 在一个系统中,8259可以级联,有一个主8259,若干个从8259,最多可以有8个从8259,把中断源扩展到64个。 2)CAS2、CAS1、CAS0:主8259为输出线,从8259为输入线。 3)INT:从8259的INT线连接到主8259的中断请求输入端IRI,主8259连接到CPU的中断请求输入端INTR。 4)主8259也可直接从IRI接入中断源。
SP SP / / EN EN 中 断 源 VCC INTA IR7 GND CPU …… INT • 8259A • 主 INTR IR0 …… IR0 8259A 从 IR7 CAS2 CAS1于CAS0 CAS2 CAS1于CAS0 INTA 7.3 可编程中断控制器Intel 8259A 级连下的中断请求: 1)从8259判断IRi的优先权,经INT向主8259发出中断请求。 2)主8259判断从8259的优先权后再向CPU发出中断请求。 3)CPU响应中断,第一个响应周期,主8259通过三条级连线输出被响应中断的从8259的编码。 4)从8259接收编码,在第二个中断响应周期输出它的中断向量类型码,进入中断响应过程。
7.3 可编程中断控制器Intel 8259A 8259的初始化命令及编程 嵌套方式 完全嵌套方式 : IR0~IR7依次下降。 特殊完全嵌套方式 :在级联方式主片运用特殊完全嵌套方式 优先权旋转 正常优先权旋转:中断响应,优先权为最低,比它低一级的得到最高优先权。 特殊优先权旋转:将最低优先级赋给指定的中断源。 屏蔽方式 普通屏蔽方式 :IMR中的置“1”的位,相应级的中断请求屏蔽掉。 特殊屏蔽方式 :本级进行屏蔽,而允许优先级比它高或低的中断进入 系统,不管其优先权如何,在任何情况下都可以申请中断。 结束方式 自动EOI方式: 第二个中断响应周期的的后沿,自动复位ISR相应位。 普通EOI方式: 中断服务程序结束,发出中断结束(EOI)命令。 特殊EOI方式: 中断服务程序结束,发出EOI的同时将近当前结束的中断 级别也传送给8259。
7.3 可编程中断控制器Intel 8259A 8259的初始化命令及编程 分为两步骤: 1)初始化编程: 写入2~4个初始化命令字ICW1~ICW4。 2)工作方式编程: 写入三个工作命令字OCW1~OCW4。以规定8259的工作方式。可以在初始化以后的任何时间写入。
A0=0 ICW1 A0=1 ICW2 N Y 级联方式? 需ICW4? A0=1 ICW3 N Y A0=1 ICW4 准备好接受中断 7.3 可编程中断控制器Intel 8259A 初始化编程: 8259初始化命令字ICW有四个,在不同的状态下写入不同。 1)ICW1、ICW2是必须的。 2)ICW3在级联时才有。 3)ICW4是专用于8086系统的。 4)地址线A0、特定标志位、及ICW的输入顺序相配合,完成多寄存器的寻址。
A0=0 ICW1 A0=1 ICW2 D7 D6 D5 D4 D3 D2 D1 D0 × × × 1 LTIM × SNGL ICW4 N ICW4选择 0:不需要 1:需要 无定义 Y 级联方式? 需ICW4? A0=1 ICW3 单片级联选择 0 :多片级 1:单片 N 无定义 Y IRX输入触发方式 0:上升沿 1:高电平 A0=1 ICW4 ICW1标志 准备好接受中断 7.3 可编程中断控制器Intel 8259A 初始化编程: ICW1芯片控制字
A0=0 ICW1 A0=1 ICW2 D7 D6 D5 D4 D3 D2 D1 D0 T7 T6 T5 T4 T3 × × × N 由程序决定高5位 Y IR7:1 1 1 IR6:1 1 0 IR5:1 0 1 IR4:1 0 0 IR3:0 1 1 IR2:0 1 0 IR1:0 0 1 IR0:0 0 0 需ICW4? 级联方式? A0=1 ICW3 N Y A0=1 ICW4 准备好接受中断 7.3 可编程中断控制器Intel 8259A 初始化编程: ICW2中断类型字 例,高5位为00011则其类型号为00011XXX IR0=18H 00011000 IR1=19H 00011001 …… 1R7=1FH 00011111
A0=0 ICW1 A0=1 ICW2 主8259ICW3: D7 D6 D5 D4 D3 D2 D1 D0 S7 S6 S5 S4 S3 S2 S1 S0 N Sx=1表示IRX接有从8259 Sx=0表示IRX无从8259 Y 级联方式? 需ICW4? A0=1 ICW3 从8259ICW3: D7 D6 D5 D4 D3 D2 D1 D0 N ID1 ID0 0 0 0 0 0 ID2 Y IR7:1 1 1 IR6:1 1 0 IR5:1 0 1 IR4:1 0 0 IR3:0 1 1 IR2:0 1 0 IR1:0 0 1 IR0:0 0 0 IDi为从片的标识,与主8259的对应IRI的编号相同。 A0=1 ICW4 准备好接受中断 7.3 可编程中断控制器Intel 8259A 初始化编程: ICW3级联控制字
A0=0 ICW1 A0=1 ICW2 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 SFNM BUF M/S AEOI μPM N CPU类型 0:8085/8080 1:8086/8088 Y 级联方式优先权管理 0:正常完全嵌套方式 1:特殊完全嵌套方式 级联方式? 需ICW4? A0=1 ICW3 设定结束方式 0 :非自动EOI 1:自动EOI 缓冲方式选择 0:非缓冲方式 SP/EN输入 主8259接高电平 从8259接低电平 1:缓冲方式 SP/EN输出 N Y 主从选择 0:作为从片 1:作为主片 A0=1 ICW4 准备好接受中断 7.3 可编程中断控制器Intel 8259A 初始化编程: ICW4方式控制字
D7 D6 D5 D4 D3 D2 D1 D0 MOV AL,13H ;ICW1设ICW4,单级,边沿触发 OUT [80H],AL ; 0 0 0 SFNM BUF M/S AEOI μPM MOV AL,18H ;ICW2 中断类型码0001 1XXX(18H)IR0 OUT [81H],AL D7 D6 D5 D4 D3 D2 D1 D0 ;ICW2 T7 T6 T5 T4 T3 × × × MOV AL,01H ;ICW4 8086配置,非自动EOI, OUT [81H],AL ;非缓冲,完全嵌套方式 D7 D6 D5 D4 D3 D2 D1 D0 ICW1 × × × 1 LTIM × SNGL ICW4 ;ICW4 7.3 可编程中断控制器Intel 8259A 初始化编程: 例如,8088系统中8259单级使用,其端口地址为80H,和81H,可用下面的初始化程序段输入命令字。
D7 D6 D5 D4 D3 D2 D1 D0 M7 M6 M5 M4 M3 M2 M1 M0 Mx=1表示IRX被屏蔽 Mx=0表示IRX不被屏蔽 7.3 可编程中断控制器Intel 8259A 工作命令编程: 三个工作命令字OCW1~OCW3 OCW1中断屏蔽字 A0=1
OCW2标志 D7 D6 D5 D4 D3 D2 D1 D0 L2 R SL EOI 0 0 L1 L0 R SL EOI 命 令 功 能 7:1 1 1 6:1 1 0 5:1 0 1 4:1 0 0 3:0 1 1 2:0 1 0 1:0 0 1 0:0 0 0 0 0 1 普通EOI 完全嵌套中断结束 0 1 1 特殊EOI 同上,清除ISR中指定位 优先权自动循环结束 1 0 1 普通EOI循环 1 0 0 自动循环置位 优先权自动循环 SL=1中断级别选择 0 0 0 自动循环复位 优先权自动循环复位 1 1 1 特殊EOI循环 特殊循环 指定最低级中断源 1 1 0 置位优先权 0 1 0 无操作 7.3 可编程中断控制器Intel 8259A 工作命令编程: OCW2中断结束字,D4、D3=00为标志位 A0=0
D7 D6 D5 D4 D3 D2 D1 D0 X ESMM SMM 0 1 P RR RIS 读ISR位 0:禁止 1:允许 P RR RIS 0 1 0:下次读IRR 0 1 1:下次读ISR 0 0 X:无操作 读IRR位 0:禁止 1:允许 特殊屏蔽方式选择 ESMM SMM 1 0:特殊屏蔽方式复位 1 1:特殊屏蔽方式置位 查询选择 0:作为从片 1:作为主片 7.3 可编程中断控制器Intel 8259A 工作命令编程: OCW3指定设置特殊屏蔽方式、读内部寄存器命令;D4、D3=00为标志位 A0=0
IR5 INTA 中断源1 IR0 CPU 中断源2 INT • 8259A • 主 INTR IR2 INT 中断源3 IR3 8259A 从 IR3 中断源4 CAS2 CAS1于CAS0 CAS2 CAS1于CAS0 INTA INTA 7.3 可编程中断控制器Intel 8259A 例, 某系统中设置两片8259A实现中断控制,它们之间采用级联方式连接,一片从8259的INT端与主8259的IR3端相连,当前主8259的IR0和IR5端上分别引入两个中断请求,从8259的IR2和IR3端上也分别引入两个中断请求。 主8259: IR3:接一片从8259 IR0,IR5各接一个中断源,中断类型码分别为30H,35H。中断服务程序同段。地址分别为1000H:1050H和1000H:2060H。 从8259: IR2、IR3各接一个中断源,中断类型码分为32H和33H,中断服务程序的地址分别为2000H:5440H和2000H:3620H
7.3 可编程中断控制器Intel 8259A 程序分为三个部分: 1)中断服务程序入口送入中断矢量表中 2)主8259的初始化程序 3)从8259的初始化程序 PUSH DS ;保存当前数据段段基址 XOR AX,AX MOV DS,AX ;段地基址指向中断向量表 MOV AX,1050H MOV [0C0H],AX ;30H中断服务程序入口地址IP MOV AX,1000H MOV [0C2H],AX ;30H中断服务程序入口段地址CS MOV AX,2060H MOV [0D4H],AX ;35H中断服务程序入口地址IP MOV AX,1000H MOV [0D6H],AX ;35H中断服务程序入口段地址CS MOV AX,5440H MOV [00C8H],AX ;32H中断服务程序入口地址IP MOV AX,2000H MOV [00CAH],AX ;32H中断服务程序入口段地址CS MOV AX,3620H MOV [00CCH],AX ;33H中断服务程序入口地址IP MOV AX,2000H MOV [00CEH],AX ;33H中断服务程序入口段地址CS POP DS 中断服务程序入口地址进入中断矢量表。 中断矢量地址: 30H:30H×4=00C0H 35H: 35H×4=00D4H 32H:32H×4=00C8H 33H:33H×4=00CCH
7.3 可编程中断控制器Intel 8259A 例, 主8259的端口地址为FFE8H、FFE9H,A0=0对应FFE8H,A1=1对应FFE9H ICW1:A0=0,11H=0001 0001B表示边沿触发,级联,需ICW4(8086) ICW2:A0=1,34H=0011 0000B表示中断类型码30H—37H ICW3:A0=1,08H=0000 1000B表示IR3上接从8259 ICW4:A0=1,11H=0001 0001B表示特殊完全嵌套,非自动EOI,非缓冲方式。 OCW1:A0=1,0D6H=1101 0110B,屏蔽IR7、IR6、IR4、IR2、IR1 OCW2:A0=0,20H=0010 0000B ,普通EOI方式 从8259的端口地址为FFFAH、FFFBH。 ICW1:A0=0,11H=0001 0001B表示边沿触发,级联,需ICW4(8086) ICW2:A0=1,30H=0011 0000B表示中断类型码30H—37H ICW3:A0=1,03H=0000 0011B从8259识别码03H,与主片IR3对应。 ICW4:A0=1,11H=0001 0001B表示特殊完全嵌套,非自动EOI,非缓冲方式。 OCW1:A0=1,0F3H=1111 0011B,屏蔽IR7、IR6、IR5、IR4、IR1、IR0 OCW2:A0=0,20H=0010 0000B ,普通EOI方式
7.3 可编程中断控制器Intel 8259A 主片初始化: MOV AL,11H MOV DX,0FFE8H OUT DX,AL ;ICW1 MOV AL,30H MOV DX,0FFE9H OUT DX,AL ;ICW2 MOV AL,08H OUT DX,AL ;ICW3 MOV AL,11H OUT DX,AL ;ICW4 MOV AL,0D6H OUT DX,AL ;OCW1 ………… ………… MOV AL,20H ;中断结束 MOV DX,0FFE8H OUT DX,AL ;OCW2 例, 主8259的端口地址为FFE8H、FFE9H, A0=0对应FFE8H,A1=1对应FFE9H ICW1:A0=0,11H ICW2:A0=1,30H ICW3:A0=1,08H ICW4:A0=1,11H OCW1:A0=1,0D6H OCW2:A0=0,20H
7.3 可编程中断控制器Intel 8259A 主片初始化: MOV AL,11H MOV DX,0FFEAH OUT DX,AL ;ICW1 MOV AL,30H MOV DX,0FFEBH OUT DX,AL ;ICW2 MOV AL,03H OUT DX,AL ;ICW3 MOV AL,11H OUT DX,AL ;ICW4 MOV AL,0F3H OUT DX,AL ;OCW1 ………… ………… MOV AL,20H ;中断结束 MOV DX,0FFEAH OUT DX,AL ;OCW2 从8259的端口地址为FFFAH、FFFBH。 ICW1:A0=0,11H ICW2:A0=1,30H ICW3:A0=1,03H ICW4:A0=1,11H OCW1:A0=1,0F3H OCW2:A0=0,20H
课后作业: • P292 7.7