1第六章常用的接口芯片及其应用6.1I/O接口概述6.2简单接口6.3总线控制器8288及总线裁决器82896.4可编程并行接口82556.5可编程定时器6.6键盘显示接口6.7中断控制接口6.8可编程串行接口82516.9A/D及D/A变换器接口6.10DMA控制器8237沈阳航空工业学院26.7中断控制接口教学重点8086CPU的中断系统8259A的中断工作过程和工作方式中断服务程序的编写沈阳航空工业学院3中断方式如果当外设将数据准备好后,CPU暂时停止当前的工作,进行与外设的数据交换,这显然要提高CPU的工作效率,也解决了慢速的外设与快速的CPU间在数据传输时的速度匹配的矛盾。沈阳航空工业学院4中断的基本概念一、中断和中断源所谓“中断”是指在CPU正常运行程序时,由于内、外部事件引起CPU暂时中止正在运行的程序,转而去执行请求的内、外部事件的服务程序,待该服务程序处理完毕后又返回到被中止的程序。能够向CPU发出中断请求的中断来源称为“中断源”。常见的中断源为:(1)一般的输入/输出设备,如CRT终端、行式打印机等;(2)数据通道,如磁带、磁盘等;(3)实时时钟,如定时器芯片8253等的定时输出作为定时中断请求信号;(4)故障信号,如电源掉电等;(5)软件中断,如为调试程序而设置的中断源。沈阳航空工业学院5二、中断系统的功能为满足上述中断要求,中断系统应具有的功能可归结为中断处理和中断控制。1.中断处理包括发现中断请求,响应中断请求、中断处理与中断返回。2.中断控制主要是实现中断优先级的排队和中断嵌套三、中断的主要用途在微机系统中,中断的主要用途是:(1)实现输入/输出操作;(2)电源掉电或其他情况的报警;(3)控制台或人工干预;(4)多处理机系统中各处理机之间的协调;(5)控制操作系统。四、可屏蔽中断与不可屏蔽中断沈阳航空工业学院66.7.18086中断系统8086的中断系统采用向量中断机制一共可处理256个中断采用中断向量编号0~255,对256个中断加以区别可屏蔽中断需借助专用的中断控制器Intel8259A对系统中的可屏蔽中断资源进行管理:扩充系统的可屏蔽中断资源,并管理它们:实现中断优先权比较实现中断源的识别沈阳航空工业学院78086的中断分类内部中断——内部机制产生除法错中断(0号)——除运算结果溢出时产生指令中断(n号)——执行intn指令后产生(操作码CDH)断点中断(3号)——执行int3指令(单字节指令操作码CCH)用于在调试中设置断点,程序遇断点则中断溢出中断(4号)——执行into指令,且前面运算有溢出(OF=1)时产生单步中断(1号)——TF标志置1后,每执行一条子指令将发生一次外部中断——外部引脚触发可屏蔽中断(外设提供向量号)——触发INTR引脚产生非屏蔽中断(2号)——触发NMI引脚产生沈阳航空工业学院81.内部中断内部中断的中断向量号已由Intel公司确定内部中断是由于8086内部执行程序出现特殊情况而引起的中断除法错中断:向量号为0指令中断(intn):向量号为n断点中断(int3):向量号为3溢出中断(into):向量号为4单步中断:向量号为1沈阳航空工业学院92.外部中断标志位IF控制可屏蔽中断的响应外部中断是由于8086外部通过CPU引脚提出中断请求而引起的中断非屏蔽中断(NMI):向量号为2外部通过非屏蔽中断NMI请求,必须响应非屏蔽中断主要用于处理系统的意外或故障(如奇偶校验或协处理器运算错误等)可屏蔽中断(INTR):向量号由中断控制器提供外部通过可屏蔽中断INTR请求,由标志位IF控制是否响应;响应时将产生有效的–INTA信号可屏蔽中断主要用于外设中断请求(请求交换数据等服务)沈阳航空工业学院10中断标志IF的状态明确IF标志的状态是关键IF=0:可屏蔽中断不会被响应(禁止中断,关中断,中断屏蔽)系统复位,使IF=0任何一个中断被响应,使IF=0执行指令CLI,使IF=0IF=1:可屏蔽中断会被响应(允许中断,开中断,中断开放)执行指令STI,使IF=1执行指令IRET后IF将恢复为中断前的状态沈阳航空工业学院11查询中断的先后顺序决定了各中断源的优先级别软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断6.7.1.28086的中断响应过程高低沈阳航空工业学院128086的中断响应过程(续)Y还有NMITEMP=1标志寄存器入栈TEMP=TF,IF=TF=0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序(1)(2)(3)(4)(5)NNY(6)单步中断沈阳航空工业学院138086的中断响应过程(续)8086各种中断源的优先权,实际上是指被识别的先后顺序多种中断同时请求时,最先响应的则可能是单步中断或NMI中断沈阳航空工业学院146.7.1.38086的中断向量表4B4B中断向量表1KB3FFH0H0号中断向量IPCS中断向量:指示中断服务程序的入口地址,该地址包括:偏移地址IP、段地址CS(共32位)每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节(低对低,高对高)。8088微处理器从物理地址000H开始到3FFH(1KB),依次安排各个中断向量,向量号从0到255。256个中断响亮所占用的1KB区域,称中断向量表•几个概念:向量号N/中断向量/中断服务程序的入口地址•中断向量的存放首址=N×4沈阳航空工业学院156.7.2内部中断服务程序编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP第1条指令通常为开中断指令STI最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序使用前,需要重新设置中断向量(入口地址)利用INTn指令调用中断服务程序沈阳航空工业学院16例1内部中断服务程序编写:80H号中断服务程序功能:通过BIOS功能调用INT10H,显示以“0”结尾的字符串。入口参数:DS:DX存字符串缓冲区首地址(段地址:偏移地址)。沈阳航空工业学院17数据段以下分段介绍程序intoffdw?;用于保存原中断向量将来恢复intsegdw?;用于保存原中断向量将来恢复intmsgdb‘AInstructionInterrupt!’db0dh,0ah,0;要显示的信息沈阳航空工业学院18保存中断向量movax,3580h;读出原中断向量int21hmovintoff,bx;保存偏移地址movintseg,es;保存段基地址沈阳航空工业学院19设置中断向量的做法pushdsmovdx,offsetnew80hmovax,segnew80hmovds,axmovax,2580h;设置新中断向量int21hpopds沈阳航空工业学院20调用中断服务程序注意比较指令:int/callmovdx,offsetintmsgint80h;中断调用沈阳航空工业学院21中断服务子程序new80hprocsti;开中断,允许中断嵌套pushax;保护现场pushbxpushsi沈阳航空工业学院22显示字符串movsi,dxnew1:moval,[si]cmpal,0;判是否串尾jznew2movbx,0;调BIOS中断movah,0ehint10hincsijmpnew1沈阳航空工业学院23退出中断服务程序new2:popsi;恢复现场popbxpopaxiret;中断返回new80hendp沈阳航空工业学院24主程序结束AInstructionInterrupt!movdx,intoffmovax,intsegmovds,axmovax,2580h;恢复原中断向量int21hmovax,4c00hint21h沈阳航空工业学院256.7.38259A中断控制器Intel8259A是可编程中断控制器PIC可配合CPU(I8080/85、I8086/88/286/386等)管理可屏蔽中断8259A的基本功能1片8259A可以管理8级中断,经级联最多可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的调用指令(配合I8080/85)或中断向量号(配合I8086/88/286/386)8259A设计有多种工作方式,通过初始化编程进行设置沈阳航空工业学院266.7.3.18259A的内部结构和引脚D7~D0-INTAINT中断请求寄存器中断屏蔽寄存器数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器-RD-WRA0-CSCAS0CSA1CAS2-SP/-EN优先权判别电路中断服务寄存器控制逻辑沈阳航空工业学院271.中断控制中断请求寄存器IRR保存8条外界中断请求信号IR0~IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许沈阳航空工业学院282.与处理器接口-CSA0-RD-WR功能00100110000101010×111×××写入ICW1、OCW2和OCW3写入ICW2~ICW4和OCW1读出IRR、ISR和查询字读出IMR数据总线高阻状态数据总线高阻状态沈阳航空工业学院303.中断级连8259A可以级连,1个主片最多可以级连8个从片级连时,主片的级连线CAS0~CAS2连至每个从片的CAS0~CAS2,输出被选中的从片编号每个从片的中断请求信号INT,连至主8259A的一个中断请求输入端IRx;主片的INT线连至CPU的中断请求输入端INTR在非缓冲方式下,引脚-SP/-EN,通过接地指定该片充当从片(-SP=0);反之若接高电平则该片充当主片(-SP=1)。沈阳航空工业学院316.7.3.38259A的工作方式普通全嵌套方式特殊全嵌套方式自动循环方式特殊循环方式优先权固定方式优先权循环方式设置优先权方式普通中断结束方式特殊中断结束方式自动中断结束方式非自动中断结束方式结束中断方式中断屏蔽方式普通屏蔽方式特殊屏蔽方式中断触发方式边沿触发方式电平触发方式数据线连接方式缓冲方式非缓冲方式与CPU配合方式与8080/8085CPU配合与8086/8088CPU配合级连方式级连不级连沈阳航空工业学院321.与CPU的配合方式与8080/8085CPU配合——中断响应时,-INTA信号3次有效,8259A送CALLXXXXH指令(3个字节)的机器代码到数据总线;与8086/8088CPU配合——中断响应时,-INTA信号2次有效,8259A送相应的中断向量号(1个字节)到数据总线。8080/85CPU8259A8086/88CPU8259ACALLXXXXH中断向量号-INTAINTR-INTAINTR沈阳航空工业学院333.设置优先权方式普通全嵌套方式8259A的中断优先权顺序固定不变,从高到低依次为:IR0、IR1、IR2、……IR7中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其向量号送上数据总线,对应ISR的Di位置位,至到中断结束(ISR的Di位复位)在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套特殊全嵌套方式——允许同级中断嵌套(用于级连主片)优先权自动循环方式——最高优先权自动转移到相邻的低优先级中断源优先权特殊循环方式——最高优先权转移到由指令指定的中断源沈阳航空工业学院34中断结束字什么是8259A的中断结束字(EOI)?8259A判断中断服务寄存器ISR的状态:若某位为1,表示该中断源正在得到服务;一般情况下,将不再响应同级或低级的中断(采用特殊屏蔽方式时,可响应低级别的中断)若某位为0,表示该中断服务已结束,可响应低级级别中断。用指令向8259A送中