第7章中断控制器的编程结构、工作方式及编程湖南中医药大学王志辉主要内容8259A的外部信号、编程结构和工作原理8259A的初始化命令字和初始化流程8259A的操作命令字8259A的工作方式多片8259A构成的主从式中断系统本章重点:8259A的编程结构8259A的工作方式以及工作方式的分类依据8259A的初始化命令字及其含义8259A的初始化方法8259A的操作命令字和设置方法多片8259A构成的主从式中断系统中断的基本概念什么是中断?在CPU执行程序的过程中,由于某种突发事件的发生,强迫CPU暂时停止正在执行的程序,转向对该突发事件进行处理,对这个事件处理结束后又能回到原中止的程序,接着中止前的状态继续执行原来的程序,这一个过程就称为中断。把引起中断的原因或触发中断请求的来源称为中断源。中断请求信号的产生中断功能接口电路,用来产生中断请求信号。中断方式提高了CPU的工作效率,但是它同时也提高了系统的硬件开销。以输入方式为例,接口电路如图所示。8086/8088的中断系统非屏蔽中断源中断逻辑INTO指令单步中断除法错误INTN指令CPUINTRNMI可屏蔽中断源8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源INTA中断需要解决的问题中断源的识别系统有多个中断请求,CPU如何识别哪个中断源发出的请求?办法1:向量中断(硬件)办法2:中断查询(软/硬件结合)中断优先级——有多个中断同时请求,CPU如何应对?办法1:软件查询方式办法2:简单硬件方式——菊花链法办法3:专用硬件方式中断嵌套中断处理过程中,又有中断提出请求,怎么办?办法1:链式优先权排队电路办法2:优先权编码电路中断控制器的功能在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端;当CPU响应中断并进入中断处理程序后,中断控制器仍然负责对外部中断请求的管理当某个外部中断请求的优先级高于当前正在处理的中断优先级时,中断控制器会让此中断通过而到达CPU的INTR端,从而实现中断的嵌套反之,对级别低的中断则禁止。1中断控制8259A8259A的工作特点具有8级中断优先控制,通过级连可以扩展至64级优先权控制每一级中断都可以通过初始设置为允许或屏蔽状态8259A的工作方式可以通过编程设置,使用灵活8259A采用NMOS(Negativechannel-Metal-Oxide-Semiconductor,N型金属氧化物半导体)制造工艺,只需要单一的+5V电源8259A的内部结构与外部引脚信号控制逻辑中断服务寄存器ISR优先权电路PR中断请求寄存器IRR中断屏蔽寄存器IMR读写控制逻辑级联缓冲比较器数据总线缓冲器D0~D7RDWRCSA0CAS0CAS1CAS2ENSPINTAINTIR0IR1IR7…8259A内部逻辑框图8259A外部引脚信号8259A的引脚双列直插式芯片,28个引脚方波键盘保留串口2硬盘软盘打印机IOW18.2HzA0CS8259A总线A0数据线IORRDWR片选译码IR0IR1IR2IR3IR4IR5IR6IR7A5~A9D0~D7D0~D7VccSP/ENCA0CA1CA2GND+5V20~3FH用于多片8259A级连情况INTAINTINTAINTR串口1定时器8259A的外部引脚信号D7-D0:双向数据输入/输出引脚用以与CPU进行信息交换IR7-IR0:8级中断请求信号输入引脚规定的优先级为IR0>IR1>…>IR7当有多片8259A形成级联时,从片的INT与主片的IRi相连。INT:中断请求信号输出引脚,高电平有效用以向CPU发中断请求,接在CPU的INTR输入端。8259A的外部引脚信号INTA:中断响应应答信号输入引脚,低电平有效,接CPU的中断应答信号输出端在CPU发出第二个时,8259A将其中最高级别的中断请求的中断类型码送出。RD:读控制信号输入引脚,低电平有效实现对8259A内部有关寄存器内容的读操作。8259A的外部引脚信号WR写控制信号输入引脚,低电平有效实现对8259A内部有关寄存器的写操作。CS:片选信号输入引脚,低电平有效一般由系统地址总线的高位,经译码后形成决定了8259A的端口地址范围。8259A的外部引脚信号A0:8259A两组内部寄存器的选择信号输入引脚决定8259A的端口地址。A0=0ICW1、OCW2、OCW3;A0=1ICW2~ICW4、OCW18259A的外部引脚信号CAS2~CAS0:级连信号引脚当8259A为主片时,为输出;否则为输入与-SP/-EN信号配合,实现芯片的级连这三个引脚信号的不同组合000~111,刚好对应于8个从片。SP/EN:-SP为级连管理信号输入引脚在非缓冲方式下,若8259A在系统中作从片使用,则-SP=1;否则-SP=0;在缓冲方式下,用作8259A外部数据总线缓冲器的启动信号。+5V、GND:电源和接地引脚W9-2178251A初始化的约定:①复位后,第一次给奇地址端口写入的值作为方式字送入方式寄存器②如规定为同步模式,那么,接下来往奇地址端口写入的是同步字符。如果是双同步,则先后两次写入同步字符。③接下来,只要不是复位命令,CPU给奇地址写入的是控制字,给偶地址端口写入的是要发送的数据。8251A使用前必须进行初始化,以确定工作方式、传送速率、字符格式以及停止位长度等;改变8251A的工作方式时必须再次进行初始化编程;简述8251A的初始化流程?描述8255A的内部结构及各个部件功能?(1)端口A是一个独立的8位数据I/O口,它的内部有对数据输入/输出的锁存功能。(2)端口B是一个独立的8位数据I/O口,对输入的数据不锁存,仅对输出的数据锁存。(3)端口C可以看作是一个独立的8位I/O口;还可以用作A口和B口的控制信号。对输出数据进行锁存,对输入数据不锁存。2.A组控制和B组控制两个功能:即一是接收芯片内部总线上的控制字;二是接收来自读/写控制逻辑电路的读/写命令。3.读/写控制逻辑电路负责管理8255A的数据传输过程。它接收CS及来自地址总线的信号A1、A0和控制总线的信号RESET、RD、WR的信号,再由它们完成对数据、状态和控制信息的传输。描述8255A的A/B组控制部件以及读写控制逻辑电路功能?4.数据总线缓冲器是一个双向三态的8位数据缓冲器。8255A正是通过数据总线缓冲器与系统数据总线相连。输入数据、输出数据、CPU发给8255A的控制字都是通过该部件传递的。方式0的特点和使用场合?方式0:也叫基本输入输出方式。特点:(1)三个端口都可作为独立的输入或输出口,各端口间没有必然的关系。(2)这种方式下,输出可锁存数据,输入是不锁存的。使用场合:同步传输:发送方和接收方由同一时序信号来管理,CPU不需要查询外设的状态,对接口要求很简单,只要能传送数据就行,此时8255A的三个数据端口可以实现三路数据传送。查询式传输:因为没有应答信号,一般将A、B口常作为数据口,把C口的两部分用来输出一些控制信号和接收一些状态信号,这样端口C用来配合端口A和B工作。方式1的特点和使用场合是什么?方式1:又称为选通的输入/输出方式。特点:(1)端口A和端口B可以分别作为输入端口或输出端口。(2)如果端口A和端口B只有一个工作于方式1,端口C中就有3位被规定为配合方式1工作的信号,这时,另一个端口和端口C的其它位可工作于方式0。(3)如果端口A和B都工作在方式1,那么端口C则有6位分别作为A口和B口的应答联络信号,并且其排列是固定的,剩余的2位可工作于方式0。使用场合:适用于采用中断方式进行输入输出的场合,外设能为8255A提供选择信号或数据接收应答信号方式2:也叫双向传输方式,具有如下特点:(1)只适用于端口A,相当于双向的方式1传输。(2)端口C用5条线作为A口的联络信号,并且排列是固定的。使用场合:并行外部设备既可以作为输入设备,又可作为输出设备,并且输入输出动作不会同时进行的场合。方式2的特点和使用场合是什么?8259A的编程结构和工作原理(先看书P237页!)中断控制中断请求寄存器IRR保存8条外界中断请求信号IR0~IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许读写控制逻辑A0RDWRCS功能0100110000101010×110×××1写入ICW1、OCW2和OCW3写入ICW2~ICW4和OCW1读出IRR、ISR和查询字读出IMR数据总线高阻状态数据总线高阻状态A0=0:ICW1、OCW2、OCW3;A0=1:ICW2~ICW4、OCW18259A的工作过程外部中断请求IRR接收,对应位置1,锁存。IMR对应位=0IMR对应位=1,屏蔽。PR裁决与ISR中对应位比较优先级高优先级低INT=1IF=0IF=1CPU往INTA发两个负脉冲第一个负脉冲第二个负脉冲1)IRR锁存失效,不接收中断请求信号;2)ISR对应位置1;3)IRR相应位清0。1)8259A发中断类型码;2)中断自动结束方式下,ISR对应位清0。8259A的工作过程8259A的编程结构和工作原理ISRPRIRR中断处理部件比较IRR失效相应位置1相应位清0********1相应位清008.28259A的工作方式设置优先级的方式屏蔽中断源的方式结束中断处理的方式连接系统总线的方式确定中断类型码的方式8259A可以通过各个IRi引脚连接8个不同的中断源;每个中断源都需要指定有一个中断类型码如何确定?CPU响应中断并执行理中断服务程序后,中断服务寄存器ISR的相应的位将置1;ISR的对应位复位,则表示一次中断响应的结束如何使ISR的对应位复位?CPU将在多个中断请求中,响应优先级最高的中断如何确定中断的优先级?并不是所有的中断都可以向CPU发送请求信号的;8259A能够屏蔽那些不允许发送的中断请求如何屏蔽?8259A与数据总线之间可以直接连接,也可以通过数据缓冲器连接如何实现不同的连接方式?1.设置优先级的方式(1)普通全嵌套方式(固定优先级方式)默认方式,IR0最高,IR7最低(2)特殊全嵌套方式基本同普通全嵌套方式,所不同的是允许同级中断嵌套(用于级联主片)(3)自动循环方式初始优先级顺序IR0最高,IR7最低。当其中一个中断源受到服务,则它为最低优先权。同时置比它低一级中断源为最高级,其它自动循环排列。常用在系统中多个中断源优先级相等的场合(4)指定循环方式当一中断源通过编程指定为最低优先权,则比它低一级中断源为最高级,其它顺序排列。如:指定IR3为最低,则优先级顺序为IR4,IR5,IR6,IR7,IR0,IR1,IR2,IR3。2、屏蔽中断源方式普通屏蔽方式通过OCW1设置将IMR的Di位置1,对应的中断IRi将被屏蔽,该中断请求将不能从8259A送到CPU如果将IMR的Di位置0,则允许对应的中断产生特殊屏蔽方式——允许发生低级的中断嵌套。通过OCW1设置将IMR的Di位置1,中断IRi被屏蔽(屏蔽同级中断);同时,ISR的Di位将置0,允许发生低级的中断。在中断处理程序中使用3、结束中断处理的方式中断自动结束方式仅适用于只有单片8259A且多个中断不会嵌套的场合,系统一旦响应中断,CPU在发第二个INTA脉冲时,就会使中断响应寄存器ISR中相应位复位,虽然系统在进行中断处理,但对于8259A来讲,ISR没有相应的指示,就象中断处理结束,返回主程序之后一样;CPU可以再次响应任何级别的中断请求。非指定的中断结束方式通过OCW2设置,中断结束时用户用指令