《微机原理与接口技术第七章.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术第七章.ppt(55页珍藏版)》请在三一文库上搜索。
1、微机原理与接口技术,黄景涛 Tel: 13613796210 Email: Lab: 10-825,河南科技大学 电子信息工程学院,2,本章要点,中断控制器8259A 8086/8088 CPU的中断系统 8259A的工作过程和工作方式 中断服务程序的编写,3,中断的基本概念,什么是中断? 在CPU执行程序的过程中,由于某种突发事件的发生,强迫CPU暂时停止正在执行的程序,转向对该突发事件进行处理,对这个事件处理结束后又能回到原中止的程序,接着中止前的状态继续执行原来的程序,这一个过程就称为中断。 把引起中断的原因或触发中断请求的来源称为中断源。 中断请求信号的产生 中断方式提高了CPU的工
2、作效率,同时也提高了系统的硬件开销。因为系统需增加含有中断功能接口电路,用来产生中断请求信号。以输入方式为例,接口电路如图所示。,4,8086/8088的中断系统,5,中断需要解决的问题,中断源的识别 系统有多个中断请求,CPU如何识别哪个中断源发出的请求? 办法1:向量中断(硬件) 办法2:中断查询(软/硬件结合) 中断优先级 有多个中断同时请求,CPU如何应对? 办法1:软件查询方式 办法2:简单硬件方式菊花链法 办法3:专用硬件方式 中断嵌套 中断处理过程中,又有中断提出请求,怎么办? 办法1:链式优先权排队电路 办法2:优先权编码电路,6,7.1 中断控制8259A,8259A的工作特
3、点 具有8级中断优先控制,通过级连可以扩展至64级优先权控制 每一级中断都可以通过初始化设置为允许或屏蔽状态 8259A的工作方式可以通过编程设置,使用灵活 8259A采用NMOS制造工艺,只需单一的+5V电源,7,8259A的外部引脚信号,8,8259A的外部引脚信号,D7-D0: 双向数据输入/输出引脚 用以与CPU进行信息交换 IR7-IR0: 8级中断请求信号输入引脚 规定的优先级为IR0IR1IR7 当有多片8259A形成级连时,从片的INT与主片的IRi相连。 INT: 中断请求信号输出引脚,高电平有效 用以向CPU发中断请求,应接在CPU的INTR输入端。,9,8259A的外部引
4、脚信号,INTA: 中断响应应答信号输入引脚,低电平有效 在CPU发出第二个时,8259A将其中最高级别的中断请求的中断类型码送出; 接CPU的中断应答信号输出端。 RD: 读控制信号输入引脚,低电平有效 实现对8259A内部有关寄存器内容的读操作。,10,8259A的外部引脚信号,WR 写控制信号输入引脚,低电平有效 实现对8259A内部有关寄存器的写操作。 CS: 片选信号输入引脚,低电平有效 一般由系统地址总线的高位,经译码后形成 决定了8259A的端口地址范围。,11,8259A的外部引脚信号,A0: 8259A两组内部寄存器的选择信号输入引脚 决定8259A的端口地址。 A00 IC
5、W1、OCW2、OCW3; A01 ICW2ICW4、OCW1,12,8259A的外部引脚信号,CAS2CAS0: 级连信号引脚 当8259A为主片时,为输出;否则为输入 与-SP/-EN信号配合,实现芯片的级连 这三个引脚信号的不同组合000111,刚好对应于8个从片。 SP/EN: -SP为级连管理信号输入引脚 在非缓冲方式下,若8259A在系统中作从片使用,则-SP=1;否则-SP=0; 在缓冲方式下,用作8259A外部数据总线缓冲器的启动信号。 +5V、GND: 电源和接地引脚,13,8259A的编程结构和工作原理,ISR,PR,IRR,中断处理部件,比较,IRR失效,相应位置1,相应
6、位清0,* * * * * * * *,1,相应位清0,0,14,8259A的编程结构和工作原理,下半部有7个8位可编程寄存器分为两组: 第一组4个:初始化命令字ICW1-ICW4 第二组3个:操作命令字OCW1-OCW3 上半部为处理部件 中断请求寄存器IRR 中断服务寄存器ISR 中断屏蔽寄存器IMR 优先权分析器PR,15,中断控制,中断请求寄存器IRR 保存8条外界中断请求信号IR0IR7的请求状态 Di位为1表示IRi引脚有中断请求;为0表示无请求 中断服务寄存器ISR 保存正在被8259A服务着的中断状态 Di位为1表示IRi中断正在服务中;为0表示没有被服务 中断屏蔽寄存器IMR
7、 保存对中断请求信号IR的屏蔽状态 Di位为1表示IRi中断被屏蔽(禁止);为0表示允许,16,读写控制逻辑,17,8259A的工作过程,当有一条或若干条中断请求输入(IR7-IR0)有效时,则使中断请求寄存器的IRR的相应位置位; 若CPU处于开中断状态,则在当前指令执行完之后,响应中断,并且从INTA发应答信号(两个连续的负脉冲); 第一个负脉冲到达时,IRR的锁存功能失效,对于IR7-IR0上发来的中断请求信号不予理睬。 使正服务寄存器ISR的相应位置1,以便为中断优先级比较器的工作做好准备; 使IRR寄存器的相应位复位(清零),即清除中断请求; 第二个负脉冲到达时,将中断类型寄存器中的
8、内容ICW2送到数据总线的D7-D0上,CPU以此作为相应中断的类型码。 若ICW4中的中断自动结束位为1,那么,第二个负脉冲结束时,8259A将ISR寄存器的相应位清零。否则,直至中断服务程序执行完毕,才能通过输出操作命令字EOI,使该位复位。,8259A工作过程图示,18,8259A的工作方式,8259A有多种工作方式,可以通过编程设置 中断嵌套方式 中断优先级方式 中断结束方式 连接系统总线的方式 引入中断请求的方式,19,设置优先级方式,全嵌套方式 8259A的中断优先权顺序固定不变,从高到低依次为: IR0、IR1、IR2、IR7 中断请求后,8259A对当前请求中断中优先权最高的中
9、断 IRi 予以响应,将其向量号送上数据总线,对应ISR的 Di位置位,至到中断结束(ISR的 Di 位复位) 在ISR的 Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套 特殊全嵌套方式 与全嵌套方式基本相同 所不同的是允许同级中断嵌套(用于级连主片) 优先权自动循环方式最高优先权自动转移到相邻的低优先级中断源 优先权特殊循环方式与自动循环方式有一点不同就是初始化的优先级是由程序控制的而不是默认的 IR0IR7,20,屏蔽中断源方式,普通屏蔽方式 通过OCW1设置 将 IMR的 Di位置1,对应的中断 IRi将被屏蔽,该中断请求将不能从8259A送到CPU 如果将
10、 IMR 的 Di位置0,则允许对应的中断产生 特殊屏蔽方式允许发生低级的中断嵌套。 通过OCW1设置 将IMR的 Di位置1,中断IRi被屏蔽(屏蔽同级中断); 同时,ISR的Di位将置0,允许发生低级的中断。 在中断处理程序中使用,21,结束中断处理的方式,自动中断结束方式 仅适用于只有单片8259A的场合 系统一旦响应中断,CPU在发第二个INTA脉冲时,就会使中断响应寄存器ISR中相应位复位 虽然系统在进行中断处理,但对于8259A来讲,ISR没有相应的指示,就象中断处理结束,返回主程序之后一样; CPU可以再次响应任何级别的中断请求。 通过ICW4的AEOI位设置 普通中断结束方式
11、中断结束时用户用指令送结束字 配合全嵌套优先权方式使用 当CPU用输出指令往8259A发出普通中断结束EOI命令时,8259A就会清除ISR中当前优先级最高的中断服务标志 通过OCW2设置 特殊中断结束方式 用于非全嵌套优先级方式 中断结束时用户用指令送特定的结束字,指明要清除ISR中的哪一位 通过OCW2设置,22,中断结束命令字,什么是8259A的中断结束字(EOI)?,8259A判断中断服务寄存器ISR的状态: 若某位为1,表示该中断源正在得到服务;一般情况下,将不再响应同级或低级的中断(采用特殊屏蔽方式时,可响应低级别的中断) 若某位为0,表示该中断服务已结束,可响应低级别中断。 用指
12、令向8259A送中断结束字,可以使ISR的某位清0 该操作与CPU无关。,23,系统总线的连接方式,缓冲方式 在多片8259A级连的大系统中,8259A通过外部总线驱动器和数据总线相连,这就是缓冲方式。 在缓冲方式下,8259的输出信号SP/EN作为缓冲器的启动信号,用来启动总线驱动器,在8259A与CPU之间进行信息交换。 非缓冲方式 当系统中只有一片或几片8259A芯片时,可以将数据总线直接与系统数据总线相连,这时8259A处于非缓冲方式下。 在这种方式下,8259A的SP/EN作为输入端设置,主片应接高电平,从片应接低电平,24,引入中断请求的方式,边沿触发方式 中断请求输入端出现上升沿
13、为有效中断请求信号 电平触发方式 中断请求端出现高电平为有效的中断请求信号 中断响应后必须及时撤出高电平 中断查询方式 中断源仍往8259A发中断请求,但8259A却不使用INT信号向CPU发中断请求信号。 CPU内部的中断允许标志复位,所以CPU对INT引脚上出现的中断请求呈禁止状态。 CPU 用软件查询的方法来确定中断源,从而实现对设备的中断服务 中断查询方式既有中断的特点,又有查询的特点,25,引入中断请求的方式,查询是通过CPU向8259A(偶地址)发查询命令来实现的,查询命令字由OCW3构成的,其格式如下 : D7 D6 D5 D4 D3 D2 D1 D0,执行下一条输入指令得到状态
14、字的格式如下:,D7 D6 D5 D4 D3 D2 D1 D0,I=1有中断请求 I=0无中断请求,26,8259A的初始化命令字和操作命令字,8259A的初始化命令字 ICW 8259A在开始工作前必须写入初始化命令字,ICW1写入偶地址端口,其余写入奇地址端口。 初始化命令字ICW最多可以有4个:ICW1ICW4 必须按照以上顺序依次写入 其中 ICW1 和 ICW2是必须的 ICW3和ICW4是否需要,由具体的工作方式决定,8259A初始化流程,27,ICW1芯片控制初始化命令字,表示可以任意 为1为0都可以(建议为0),1只能为1,作为标志,中断触发方式: LTIM1,电平触发方式 L
15、TIM0,边沿触发方式,规定单片或级连方式: SNGL1,单片方式 SNGL0,级连方式,是否写入ICW4 IC41,要写入ICW4 IC40,不写入ICW4,即ICW4规定的位全为0,28,ICW2中断类型码初始化命令字,设置中断向量号 T7T3为中断向量号的高5位 低3位由8259A自动确定: IR0为000、IR1为001、IR7为111,例:当中断控制器8259A的A0接向地址总线的A1时,若其中一个地址为62H,则另一个口的地址为多少? 若某外设的中断类型码为86H,该中断应加到8259A的中断请求寄存器IRR的哪个输入端?,29,ICW3主/从片标志初始化命令字,级连命令字 主片:
16、IRi1,说明其对应引脚IRi 上连接有从片;否则引脚IRi上没有连接从片 从片:ID0ID2 编码说明该从片的INT引脚接到了主片上的哪个IRi引脚,针对从片,针对主片,30,ICW3主/从片标志初始化命令字,主8259A通过级连线CS2CS0,依次向各个从8259A芯片输送中断请求源中优先级最高的中断源所对应的标识符 每个从8259A拿到这个标识符之后,与自己在初始化编程时,由ICW3设置的标识符进行比较 当两者相符合时,则该从8259A芯片在第二个中断响应周期,向CPU提供由ICW2设置的8位中断类型码。,31,ICW3主/从片标志初始化命令字,例主片: ICW311100010,则说明
17、IR7、IR6、IR5、IR1上连有从片。 例从片: ICW30000 0001,则说明从片的INT接在主片的IR1引脚上。 在多片级连的情况下,主片的CS2-CS0和从片的CS2CS0分别相连 在第一个INTA时,主片在完成例行的三个动作外,还通过CS2-CS0向各从片发送编码ID2-ID0 每个从8259A拿到这个标识符之后,与自己ICW3标识符进行比较,当两者相符合时第二个INTA时,相应的从片发送中断类型码,示意图,32,ICW4方式控制初始化命令字,嵌套方式: 特殊全嵌套方式(SFNM1) 普通全嵌套方式(SFNM0),数据线的缓冲方式: 缓冲方式(BUF1) 非缓冲方式(BUF0)
18、,缓冲方式下主片/从片选择: 主片(M/S=1) 从片(M/S=0),中断结束方式: 自动中断结束(AEOI1) 非自动中断结束(AEOI0),微处理器类型: 16位80x86(PM1) 8位8080/8085(PM0),33,2. 操作命令字OCW,8259A工作期间,可随时接受操作命令字OCW OCW共有3个:OCW1OCW3 写入时没有顺序要求,需要哪个OCW就写入哪个OCW OCW1必须写入奇地址端口,OCW2、OCW3必须写入偶地址端口,34,OCW1中断屏蔽操作命令字,屏蔽命令字 其内容将写入中断屏蔽寄存器IMR Mi=1,则禁止对应IRi中断; Mi=0,则允许对应IRi中断。
19、各位互相独立。,35,OCW2优先级循环方式/中断结束方式操作命令字,R、SL和EOI配合使用 产生中断结束EOI命令和改变优先权顺序,L2L0的3位编码 指定IR引脚,D4、D3位恒定为0,是OCW2的特征位,36,OCW2,R、SL、EOI三位的不同组合,可以组成7种不同的操作命令 R用于表示优先级是否采用循环方式; 1-循环 0-非循环 SL是否需要使用L2、L1、L0来明确中断源; 1:L2L0有意义 0:L2L0不起作用 EOI用于指示OCW2是否作为中断结束命令。 当EOI为1时,当前中断服务寄存器中的对应位ISn复位,37,R、SL、EOI 8种组合形成的7种控制命令,EOI=0
20、 时 , 如果 R=1,SL=0, 则会使 8259A 工作在中断优先级自动循环方式 EOI=0 时 , 如果 R=0,SL=0, 则会结束优先级自动循环方式。 EOI=0 时 , 如果 R=1,SL=1, 8259A 按照 L0、L1、L2 的值确定一个级别最高的优先级。 比如, 当 L2L1L0=011 时 ,R3为最高优先级, 系统优先级次序为 IR3、IR4、IR5、IR6、IR7、IR0、IR1、IR2 , 系统工作在优先级特殊循环方式。 EOI=0 时 , 如果 R=0,SL=1, 则 OCW2 没有意义。 EOI=1 时 , 如果 R=1,SL=0, 则 OCW2 使当前中断处理
21、子程序对应的 ISn 位被清除, 并使系统仍按优先级循环方式工作 , 但当前的优先级次序左移一位。 EOI=1 时 , 如果 R=1,SL=1, 则 OCW2 使对应的ISn 位清除 , L2、L1、L0 所指定的值为当前结束的IRn 。且L2、L1、L0所指定的中断源优先级变为最低,38,8259A优先级循环方式/中断结束方式(OCW2),39,OCW3设置撤销特殊屏蔽方式/设置中断查询方式 设置对8259A内部寄存器的读出命令,ESMM、SMM 设置中断屏蔽方式,P、RR和RIS 规定随后读取的状态字含义,D3D4:恒定为10,是OCW3的特征位,40,读取状态字,CPU可随时读出IRR、
22、ISR、IMR和查询字 A0为低(偶地址)时 由OCW3中RR和RIS位编码决定读取的是IRR或ISR RR=1,RIS=0 读 IRR RR=1,RIS=1 读 ISR 由OCW3中P位决定读取的是查询字,查询字可反映8259A是否有中断请求,及哪个引脚上有中断请求 A0为高(奇地址)时,读取的是IMR,41,查询字,中断位I位为1, 有外设请求中断,W2W0的编码 当前中断请求的最高优先级,42,命令字和状态字的区别方法, 利用读写信号区别写入的控制寄存器和读出的状态寄存器 利用地址信号区别不同I/O地址的寄存器 由控制字中的标志位说明是哪个寄存器 由芯片内顺序控制逻辑按一定顺序识别不同的
23、寄存器 由前面的控制字(引导字)决定后续操作的寄存器 读寄存器或状态字之前必须发送相应的命令字,43,8259A 应用举例,1. 关于中断全嵌套方式的例子,44,系统全嵌套方式工作的条件条件,主程序必须执行开中断指令 , 使IF为1, 才有可能响应中断。 每当进入一个中断处理程序时 , 系统会自动关中断 , 所以 , 只有中断处理程序中再次开中断 , 才有可能被较高级的中断所嵌套。 每个中断处理程序结束时 , 必须执行中断结束命令 , 清除对应的ISn位 , 才能返回断点,45,关于如何使用中断结束命令的例子,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,46,开中断与中断结
24、束命令,进入中断处理程序后 , 只有执行 STI 指令 , 才能允许中断嵌套。否则 , 此中断处理程序执行过程中就不会有中断嵌套,直到中断处理程序执行IRET 之后 , 系统才会开放中断 。因为 IRET 指令的一个功能就是恢复进入中断前的标志寄存器的内容 , 而当时标志寄存器中 IF 的值为1; 进入中断处理程序后 , 如果一开始就用 STI 指令使 IF 为 1, 从而开放了中断 , 但未用 OCW2 清除对应的 ISn 位 , 这种情况下 ,会允许比本中断优先级高的中断进入 ,形成符合优先级规则的嵌套。 如果在 STI 指令之后 ,接着用 OCW2 命令清除了 ISn 位 , 但中断处理
25、过程并没有结束 ,这种情况下 ,中断嵌套就未必按优先级规则进行,47,7.1.5 多片 8259A 组成的主从式中断系统,48,7.1.5 多片 8259A 组成的主从式中断系统,主从式中断系统中,主片和从片都需要进行初始化; 主片初始化与前面所讲的单片情况下的初始化过程差不多 ,只是有下列几点差别: ICWl 中的 SNGL 位必须设置为 0, 而在单片情况下 , 则为1 必须设置初始化命令字 ICW3,对主片设置 ICW3 时 , 如果某个 IR 引脚上连有从片 ,则 ICW3 的对应位就设置为 1, 如未连从片 , 则设置为 0 。 ICW4 中的 SFNM 位如果设为 1, 则将主片设
26、为特殊全嵌套工作方式 对从片 8259A 进行初始化要注意以下两点 : 从片的 ICW1 中, SNGL 位也要设置为 0 从片也必须设置 ICW3, 不过 , 从片的ICW3 的意义有别于主片,49,8259A初始化实例,IBMPC机中,只有一片8259A,可接受外部8级中断。在I/O地址中,分配8259A的端口地址为20H和21H,初始化为:边沿触发、缓冲连接、中断结束采用EOI命令、中断优先级采用完全嵌套方式,8级中断源的中断类型分别为08H0FH。试对其进行初始化。,MOV DX,20H MOV AL,00010011B OUT DX,AL ;写入ICW1 MOV DX,21H MOV
27、 AL,08H OUT DX,AL ;写入ICW2 MOV AL,00001101B OUT DX,AL ;写入ICW4 XOR AL,AL OUT DX,AL ;写入OCW1 STI ,50,习题与思考,何谓中断优先级,它对于实时控制有什么意义?8086CPU系统中,NMI与INTR哪个优先级高? 试结合8086的INTR中断响应过程,说明向量中断的基本概念和处理方法。 在中断响应总线周期中,第一个脉冲向外部电路说明什么?第二个脉冲呢? 中断向量表的功能是什么?已知中断类型码分别是84H和FAH,它们的中断向量应放在中断向量表的什么位置? 试说明8259A芯片的可编程序性?8259A芯片的编
28、程有哪两种类型? 8259A芯片是如何实现对8级中断进行管理的?又是如何级联实现对64级中断管理的? 在8259A级联工作的情况下,主片的CAS0CAS2与从片的CAS0CAS2的作用有何不同? 试结合8086/8088的INTR中断响应过程,说明向量中断的基本概念和处理方法。 在采用8259A作为中断控制器的系统中,由IRi输入的外部中断请求,能够获得CPU响应的基本条件是什么?,51,习题与思考,中断向量表的功能是什么?已知中断类型码分别是84H和FAH,它们的中断向量应放在中断向量表的什么位置? 如果8259A按如下配置则ICW1的值为多少?不需要ICW4,单片以及边缘触发。如要求产生的
29、中断类型码在70H77H之间,则ICW2的值是多少? 如果8259A用在80386DX系统中,用一般的EOI,缓冲模式主片,特殊全嵌套方式,则ICW4的值是什么? 如果OCW2等于67H,则允许何种优先级策略?为什么? 某系统有五个中断源,它们分别从中断控制器8259A的IR0IR4以脉冲方式引如系统,中断类型码分别为48H4CH,中断入口的偏移地址分别为2500H,4080H,4C05H,5540H和6FFFH,段地址均是2000H,允许它们以全嵌套方式工作,请编写相应的初始化程序,使CPU响应任一级中断时,都能进入各自的中断服务子程序。 某系统中设置三片8259A级联使用,两片从片分别接至主片的IR2和IR6,同时,三片芯片的IR3上还分别连接了一个中断源,已知它们的中断入口均在同一段,段基址为4000H,偏移地址分别为1100H,40B0H,A000H,要求电平触发,普通EOI结束。画出它们的硬件连接图,编写全部的初始化程序。,52,8259A芯片的初始化流程,返回,返回,54,8259级联工作示意图,返回,55,8259工作示意图,返回,
链接地址:https://www.31doc.com/p-3195636.html