1、第7章 中断控制器,重点理解8259A的编程结构和工作原理 掌握82C59A的初始化编程了解主从式8259A中断系统的连接 和工作原理,7.1 8259的引脚信号、编程结构和工作原理,中断传送方式,实现方法: 1. 当外设准备好,向CPU发出中断请求; 2. CPU在满足响应中断的条件下,发出中断响应信号; 3. CPU暂停当前的程序,转去执行中断服务程序,完成与外设的数据传送; 4. CPU从中断服务程序返回,继续执行被中断的程序。,7.1 8259的引脚信号、编程结构和工作原理,INTR高电平,且IF=1,CPU在INTA引脚发送两个负脉冲。 读取中断类型号n。保护现场与断点F入栈;IF=
2、0 TF=0; CS、IP入栈; 中断服务 0:4*n取向量CS:IP 返回断点 IRET:依次弹出IP、CS、F 问题:多中断源逻辑或申请中断,查询、优先级?屏蔽?自动?中断控制逻辑专用IC 8259,8086/8088中断过程,1. 8259A的介绍2. 8259A的编程3. 8259A的应用,外:引脚 内:编程结构,工作方式 控制字,7.1 8259的引脚信号、编程结构和工作原理,7.1.1 8259A的外部信号和含义,选择端口,中断响应,中断请求,输入:主/从 输出:启动,片选,从片选择,I/O外设的中断请求,7.1.1 8259A的外部信号和含义,从8259A的中断请求信号INT,连
3、至主8259A的一个中断请求输入端IR。,中断级连,主8259A的CAS0CAS2连至每个从8259A的CAS0CAS2。,主8259A的INT线连至CPU的中断请求输入端。,7.1.2 8259A的编程结构和工作原理,IRR,PR,IMR,ISR,初始化,操作,中断响应的条件?,7.1.2 8259A的编程结构和工作原理,处理过程: IR0IR7上出现某一中断请求信号-IRR对应位被置“1”-由IMR的相应位决定是否将其屏蔽(屏蔽位=1,不通过;屏蔽位=0,通过)-中断请求进PR-PR把新进入的中断请求和当前正在处理的中断进行优先级比较-若新进入的中断优先级高,该中断请求被送到CPU。 若C
4、PU的IF=1,CPU完成当前指令后,响应中断,在INTA引脚上发出两个负脉冲(执行两个中断响应总线周期),7.1.2 8259A的编程结构和工作原理,8259A收到第一个负脉冲后 使IRR锁存禁止,直到第二个负脉冲结束后,再使IRR锁存允许 使ISR的相应位置“1” 清除IRR的相应位。 8259A收到第二个负脉冲后: 把中断类型码寄存器的内容(ICW2的内容)送到D7D0 如果ICW4的AEOI位为1,则在第二个 脉冲结束时,将ISR中被第一个 INTA 脉冲置“1”的位清除(自动结束);否则,要等到中断结束命令(EOI)发送后才能清除。,7.2 8259A的工作方式,(1) 全嵌套方式
5、(2) 特殊全嵌套方式 (3) 优先级自动循环方式 (4) 优先级特殊循环方式,1. 设置优先级的方式,7.2 8259A的工作方式,7.2 8259A的工作方式,2 . 屏蔽中断源的方式,7.2 8259A的工作方式,什么是8259A的中断结束?,8259A利用中断服务寄存器ISR判断: 某位为1,表示正在进行中断服务; 该位为0,就是该中断结束服务。 这里说明如何使ISR某位为0, 不反映CPU的工作状态。,3. 结束中断处理的方式,7.2 8259A的工作方式,7.2 8259A的工作方式,4 . 连接系统总线的方式,7.2 8259A的工作方式,5 . 引入中断请求的方式,7.3 82
6、59A的字,82C59A有4个初始化命令字ICW1ICW4,用于对82C59A的初始状态进行设置。 必须按照ICW1ICW4顺序写入,ICW1和ICW2是必须送的,ICW3和ICW4由工作方式决定。,7.3.1 8259A的初始化命令字,7.3 8259A的字,(1) ICW1(A0=0)芯片初始化命令,例1:某8086微机系统中,使用单片82C59A,中断请求信号为上升沿触发,需要设置ICW4,端口地址为20H和21H,设置ICW1的指令为:,7.3 8259A的字,(2)ICW2(A0=1)中断类型码的设置,例2:假设IR0的类型码为08H,试确定ICW2?,08H0FH,7.3 8259
7、A的字,图:主8259A的ICW3格式,(3)ICW3(A0=1)标识主从片,指出主8259哪个引脚连有从8259,对应位置1。,7.3 8259A的字,图:从8259A的ICW3格式,指出从片8259 连在主8259哪个IR引脚。,7.3 8259A的字,例3:主片8259A的IR3和IR6接了2个从片,主片端口地址: 20H,21H;1#从片端口地址:A0H,A1H,试设置ICW3.,主片ICW3的初始化程序段:MOV AL,48HOUT 21H,AL,1#从片ICW3的初始化:MOV AL,03HOUT 0A1H,AL,主片: ICW3= 0100 1000B =48H 从片1#: IC
8、W3= 0000 0011B =03H 从片2#: ICW3= 0000 0110B =06H,7.3 8259A的字,当ICW1中的D01时,初始化82C59A时需要写入ICW4。,(4)ICW4(A0=1)方式控制,7.3 8259A的字,注意: 初始化命令字ICW最多有4个。 ICW1和ICW2是必须设置的。 ICW3和ICW4由工作方式决定。 在级联时,主片和从片各设置ICW3。 ICW1写入偶端口,ICW2ICW4写入奇端口。 必须按照ICW1ICW4顺序写入。,7.3.2 初始化流程,7.3 8259A的字,例4、试按照如下要求对8259A设置初始化命令字:系统中仅用一片8259A
9、,中断请求信号采用边沿触发方式;中断类型码为08H0FH;用全嵌套、缓冲、非自动结束中断方式。8259A的端口地址为20H和21H。,MOV AL, 00010011H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL, 00001101H OUT 21H, AL,7.3 8259A的字,OCW共有3个:OCW1OCW3。 8259A工作期间,可以随时接受操作命令字OCW,写入时没有顺序要求。,7.3.3 8259A的操作命令字OCW,7.3 8259A的字,屏蔽命令字 内容写入中断屏蔽寄存器IMR DiMi对应IRi,为1禁止IRi中断;为0允许IRi中断
10、。各位互相独立。,(1)OCW1(A0=1)中断屏蔽,对IMR寄存器的读出,直接通过读奇地址端口就可以读到IMR寄存器的内容。 例:读中断屏蔽寄存器IMR内容:中断屏蔽字(20H,21H)IN AL,21H ;A0=1对IR1进行屏蔽?,中断屏蔽和IF的区别?,7.3 8259A的字,(2)OCW2(A0=0)设置优先级循环方式和中断结束方式,图:OCW2的格式,7.3 8259A的字,功能:(1)设置和撤销特殊屏蔽方式(2)设置中断查询方式(3)设置对内部寄存器的读出命令,(3)OCW3(A0=0)的格式和功能,7.3 8259A的字,规定:A0,ICW1:用偶地址写入,且D4=1,ICW2
11、,ICW3,ICW4,紧接着ICW1,用奇地址写入,小结:7个寄存器的寻址问题:,7.4 8259A使用举例,1.关于中断全嵌套方式,主程序须开中断,IF=1 中断处理程序再次开中断,才有可能被高级的中断嵌套 中断处理程序返回时,须执行中断结束命令,才能返回断点,2. 关于如何使用中断结束命令的例子,3. 关于特殊屏蔽方式的例子,7.1.5 多片8259A组成的主从式中断系统,主从式中断系统,中断向量的装载,设某中断源的中断类型码为0AH,其中断服务子程序的入口地址是:2000H:3A40H。问:中断源应与IR的哪一个输入端相连,其中断矢量地址是多少,矢量区对应的4个单元的内容是什么?,中断向
12、量的装入: 假设知道中断服务子程序名为INTER,编程为中断类型号0AH的外部中断源设置正确的中断矢量。,例7:,中断向量的装载,用MOV指令: CLI PUSH DS XOR AX,AX MOV DS,AX MOV AX,OFFSET INTER MOV WORD PTR 028H,AX MOV AX,SEG INTER MOV WORD PTR 02AH,AX POP DS STI,中断向量的装载,用串操作,中断向量的装入: CLI CLD PUSH ES XOR AX,AX MOV ES,AX MOV DI,28H MOV AX,OFFSET INTER STOSW ;DI+1DIAX,DI DI+2 MOV AX,SEG INTER STOSW POP ES STI,