240 likes | 456 Views
第 9 章 可编程中断控制器 8259A. 主要功能: ( 1 )每片可管理 8 级优先权中断源,通过级联,最多可管理 64 级优先权中断源。 ( 2 )可对任一中断源单独进行屏蔽。 ( 3 )能向 CPU 提供可编程的标识码(中断类型码)。 ( 4 )具有多种中断优先权管理方式,且可通过编程进行动态控制。 ( 5 )协助进行系统总线控制。. 9.3.1 8259A 的内部结构和功能. 1. 内部结构 由 8 个部分组成,如图 9-6 ( 1 ) 8 位中断请求寄存器( IRR ):存放正在进行中断请求的所有中断级( IR0~IR7 )。
E N D
第9章 可编程中断控制器8259A • 主要功能: • (1)每片可管理8级优先权中断源,通过级联,最多可管理64级优先权中断源。 • (2)可对任一中断源单独进行屏蔽。 • (3)能向CPU提供可编程的标识码(中断类型码)。 • (4)具有多种中断优先权管理方式,且可通过编程进行动态控制。 • (5)协助进行系统总线控制。
9.3.1 8259A的内部结构和功能 • 1.内部结构 由8个部分组成,如图9-6 • (1)8位中断请求寄存器(IRR):存放正在进行中断请求的所有中断级(IR0~IR7)。 • (2) 8位中断屏蔽寄存器(IMR):存放CPU送来的屏蔽信号。IMn=1,屏蔽。 • (3) 8位中断服务寄存器(ISR):记忆正处在处理中的所有中断级。=1有效。 • (4)优先权判别器(PR):选中IRR中置“1”的各级中最高级别,由INTA选通,送入ISR中,若有更高级的中断请求,则先处理高级的中断。
(5)控制逻辑 • 依PR用INT线向CPU发INTR;接受后发INTA信号,置位ISR,释放中断类型码到数据总线,清除INT信号等。 • (6)数据总线缓冲器 • (7)读/写控制逻辑 • 包含7个寄存器:存放4个初始化命令字ICW1~ICW4,3个操作命令字OCW1~OCW3。 • (8)级联缓冲器/比较器
二、工作方式 • 1、中断优先权管理方式 有5种: • (1)完全嵌套方式 • 固定优先级别,IR0最高,IR7最低,若收到的中断级别比ISR中的高,则响应较高级的中断请求,实现中断嵌套。 • (2)自动循环方式(等优先权方式) • 服务结束,优先权降为最低,下一级变成最高。 • 例:一开始为IR0~IR7,若响应IR3后,优先级为IR4、IR5~IR7、IR0~IR3。
(3)特殊循环方式 • 在主程序或中断服务程序中发操作命令,即由编程确定某中断源的优先级最低,则下一级为最高。 • (4)特殊屏蔽方式 • 在中断服务程序中,用OCW1对IMR的某位置1时,会同时使ISR中对应位清0,则虽在处理该中断,却可响应其他级别较低的中断。 • (5)查询排序方式 • 8259A不用INT向CPU发中断请求,CPU先关中断,再用软件查询中断源,实现中断服务。适用多于64级中断的场合,先确定优先级,再运行某模块。
2、中断结束方式 • 使ISR中对应位清0的方式。 • (1)EOI命令方式 • 在中断服务程序末尾发中断结束命令,有两种: • 1)普通EOI命令 适用于完全嵌套方式。 • 清除ISR中最高非0位(即正在处理的中断)。 • 2)特殊EOI命令 适用于非完全嵌套方式。 • 因此时无法确定哪个是最后响应的,要指明清除ISR中的某一位。
(2)自动EOI方式 • 系统一进入中断,在第二个INTA的后沿,自动清除。适用于单片系统,且不会嵌套的情况。 • 三、中断工作顺序(中断响应过程) • (1)IR0~IR7有高电平,相应的IRR位置“1”; • (2)若IMR中对应位为0,则通过进入PR; • (3)PR选中最高优先级且比当前更高的,用INT向CPU发INTR; • (4)若IF=1,CPU响应中断,发第一个 INTA-,最高优先级的ISn=1,相应的IRn=0
(5)发第二个INTA时,ICW2向CPU送中断类型号到数据总线。(5)发第二个INTA时,ICW2向CPU送中断类型号到数据总线。 • 注:若是自动结束中断(AEOI),则第二个INTA时,清ISR对应位,否则要保持到中断服务程序结束,CPU发EOI时为止。
四、8259A的引脚信号 • 排列如图9-6和表9-2 • (1)与CPU的连接 • D7~D0:双向数据总线,写命令字和读寄存器。 • CS:芯片选通信号,由地址A15~A2译码。 • A0:片内端口选址。8088系统,接CPU的A0,8086系统接CPU的A1,而A0=0。 • RD、WR:读写/信号。 • INT:中断请求,接CPU的INTR。 • INTA:中断响应信号,第一个负脉冲通知外设中断被响应,第二个负脉冲CPU读取中断类型号。
(2)与外设的连接 • IR7~IR0:单片用,接外部中断请求;级联用,接从片的INT。 • (3)级联时 • CAS2~CAS0:级联信号,主从片互连,主片指明哪个从片被接受,从片接受编码,与ICW3比较,确定是否被响应。 • SP/EN:从编程/允许级联,采用非缓冲方式,输入,主片为1,从片为0,单片时为1;采用缓冲方式,输出,=0,启动数据总线驱动器。
9.3.2 8259A的初始化命令字及其编程 • 1.8259A的初始化命令 • 初始化时设置,工作中保持不变。 • ICW1 写偶地址 • ICW2~ICW4 写奇地址 • (1) ICW1 (芯片控制) A0=0 • 格式如图9-7 • (2) ICW2(设置中断类型码) A0=1 • 格式如图9-8 • (3) ICW3(标志主片/从片) A0=1 • 格式如图9-9 (当SNGL=0时才设置)
(4)ICW4(方式控制) A0=1 格式如图9-10 • 2.8259A的初始化编程 • 流程如图9-11 • 次序ICW1~ICW4,固定, ICW3、 ICW4可不用,视ICW1决定。 • 例:在8086系统中,用单片8259A,边沿触发,缓冲方式,用EOI清除ISn(一般的中断结束方式).地址80H、82H(8088系统中为80H、81H),中断类型码18H,设接IR3。 • ICW1 XXX1 0 X1 1 (13H) • ICW2 0 0 0 1 1 XXX(18H) • ICW4 0 0 0 0 1 1 0 1 (0DH)
程序:MOV AL,13H • OUT 80H,AL • MOV AL,18H • OUT 82H,AL • MOV AL,0DH • OUT 82H,AL
9.3.3 8259A的操作命令字及其编程 • 1. 8259A的操作命令字 • 应用程序中设置,次序不固定,工作中可随时改变或读某寄存器的内容。 • OCW1 写奇地址 • OCW2、OCW3 写偶地址 • 注:工作中写入,不跟在ICW1之后. • (1) OCW1(中断屏蔽)格式如图9-12 • (2) OCW2(设置优先级循环方式和中断结束方式) 格式如图9-13 • (3)OCW3(设置特殊屏蔽方式,中断查询和对内部寄存器的读出)格式如图9-14
2.8259A的操作命令的编程 • 流程如图9-15 • 例:(1)屏蔽IR2 • IN AL,82H • OR AL,04H • OUT 82H,AL • (2)发EOI命令 • MOV AL,20H • OUT 80H,AL
(3)读IRR的内容 • MOV AL,0AH • OUT 80H,AL • IN AL,80H • 也可从奇地址读IMR的内容。
9.3.4 8259A的应用举例 • 例1:8259A在IBM-PC/XT中的应用 • 情况见表9-5和连接如图9-16。 • 端口地址20H、21H,单片8259A,边沿触发,缓冲方式,采用完全嵌套方式,IR0最高,IR7最低,中断类型号08~0FH,中断结束采用EOI命令方式。 • (1)初始化程序: • MOV AL,13H • OUT 20H,AL • MOV AL,08H • OUT 21H,AL
MOV AL,0DH • OUT 21H,AL • MOV AL,0FFH ;屏蔽所有硬中断 • OUT 21H,AL • (2)采用中断结束命令 • MOV AL,20H • OUT 20H,AL • (3)中断向量装入 • MOV AX,0 • MOV ES,AX • MOV DI,“中断向量地址” • CLD
MOV AX,OFFSET“过程名” • STOSW • MOV AX,SEG“过程名” • STOSW
例2: 8259A在IBM-PC/AT中的应用 • 采用二片级联,连接如图9-17,从片的INT接主片的IR2,主片的SP=1,从片的SP=0,INTA直连即可.采用完全嵌套方式。 • 优先级别为: IR0>IR1>IR8>……>IR15>IR3>……>IR7.
中断响应过程 • 1、从片上IRn=1,若对应中断未屏蔽,则INT=1,往主片IRn发中断请求; • 2、若主片上对应中断未屏蔽,经PR与ISR比较,若比之高级,则INT=1到CPU; • 3、若IF=1,则CPU发第一个INTA-信号 • 主片的ISn=1,IRn=0,对ICW3进行检测,确定是否来自从片。 • 1)若Dn=0,则第二个INTA-时,外设送上中断类型码ICW2; • 2)若Dn=1,则n 通过CAS2~CAS0送出。 • 从片的ISn=1,IRn=0
从片把n与ICW3中ID2~ID0比较,若相同,则第二个INTA-时,从片送上中断类型码ICW2到数据总线。从片把n与ICW3中ID2~ID0比较,若相同,则第二个INTA-时,从片送上中断类型码ICW2到数据总线。