1、第6章 输入/输出和中断技术6.1 输入输出及接口6.2 输入和输出的传送方式6.3 中断技术6.4 80X86/Pentium 中断系统6.5 8259A可编程中断控制器6.6 中断程序设计第6章 输入/输出和中断技术6.1 输入输出及接口输入输出及接口?接口I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路,它不仅包括接口的电路,还包括接口电路的管理驱动程序。?为什么需要I/O接口?I/O设备工作速度不同?I/O设备数据字长不同?I/0设备可能是模拟或数字的?I/O设备的控制信号不同第6章 输入/输出和中断技术I/O接口接口?I/O的功能 输入输出数据的缓冲和锁存输出接
2、口有锁存环节输入接口有缓冲环节 信号形式和数据格式的变换 I/O端口寻址、控制信号产生 电气特性匹配?I/O信息?数据信息:数字量、模拟量、开关量?状态信息?控制信息第6章 输入/输出和中断技术I/O接口的构成接口的构成?端口:I/O接口通常设置有若干个寄存器,用来暂存CPU和外设之间传输的数据、状态和控制信息,接口内的寄存器通常被称为端口。?根据寄存器内暂存信息的类型,分别称为数据端口、控制端口和状态端口?每个端口有一个独立的地址,CPU可以用端口地址代码来区别各个不同的端口,并对它们分别进行读/写操作第6章 输入/输出和中断技术I/O端口端口IN AL,21H第6章 输入/输出和中断技术I
3、/O端口端口OUT 43H,AL第6章 输入/输出和中断技术I/O接口的编址接口的编址存储器映象编址I/O单独编址属性统一编址单独编址应用motorola 的M6800系列,iMCS51系列80X86,MCS96系列,Z80系列特点1.I/O端口相当于内存的一部分,使内存容量减小2.对I/O端口的读/写与对存储器的读/写相同,所有可对内存操作的指令对I/O端口均可使用3.指令系统中不专设I/O指令1.端口与存储器分别独立编址,端口不占用内存空间2.设有专门的 I/O指令对端口进行读写,内存操作的指令不能用于I/O端口第6章 输入/输出和中断技术I/O接口的编址接口的编址独立编址统一编址第6章
4、输入/输出和中断技术端口地址译码端口地址译码?门电路译码 门电路译码是最基本的也是最简单的地址译码方法,通常采用各种门电路,如与门、或门、非门等电路的组合。设计时首先分配好地址,然后写成二进制形式,再根据地址总线数分配各与非门输入管脚地址。门电路译码需要芯片较多,且译出的端口地址单一,接口中用到的端口地址不能更改第6章 输入/输出和中断技术门电路译码门电路译码【例】设计端口地址为218H的译码电路分析:CPU执行IN/OUT指令时,发出端口的地址信号MOVDX,218HINAL,DX或OUTDX,AL对应218H端口的地址信号为(只取A9A0):A9 A8 A7 A6 A5 A4 A3 A2
5、A1 A0(地址信号)10 00011000 B218H只要满足此地址取值的译码电路均可第6章 输入/输出和中断技术门电路译码译码电路部分满足:只当地址信号A9 A0为:A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 0 0 0 0 1 1 0 0 0即218H时,输出“0”,使I/O接口的CS有效否则输出“1”使I/O接口的CS无效地址重叠(16根地址线):64个地址重叠区,如218,618,A18,E18等等第6章 输入/输出和中断技术译码器译码译码器译码?若接口电路中需使用多个端口地址,则采用译码器译码比较方便。?译码器的型号很多,如38译码器74LS138;416译码器
6、74LS154;双24译码器74LS139、74LS155等。?这些译码器通常由三个部分组成:译码控制端,选择输入端,译码输出端。第6章 输入/输出和中断技术译码器译码译码器译码当端口地址信号为:A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 0 0 0 0 1 1 0 0 0即 218H时,Y0输出0,I/O接口的CS有效第6章 输入/输出和中断技术比较器译码?将比较器的 A(或B)输入端输入地址信号,B(或A)端接一组DIP(Dual In-line Package)开关。地址总线所送的地址与 DIP所设置的地址相等时,产生一选通信号输出。?特点:可以通过改变DIP开关的设
7、置,很容易地改变接口的地址。不但同一功能的模块在不同微型计算机应用中可以被分配不同的地址,而且即使在同一微型计算机系统中,也可通过改变DIP开关的设置而控制不同的设备.。?这种译码电路应用非常广泛,常用的比较器有四位比较器74LS85和八位比较器74LS688。第6章 输入/输出和中断技术比较器译码比较器译码第6章 输入/输出和中断技术锁存和缓冲锁存和缓冲?输入接口的锁存和缓冲内部数据总线外部数据引脚锁存控制锁存器缓冲器DCDCDCQQQ选通第6章 输入/输出和中断技术锁存和缓冲锁存和缓冲?输出接口的锁存和缓冲内部数据总线外部数据引脚锁存控制DCQDCQDCQ读数据第6章 输入/输出和中断技术
8、6.2 输入输出的传送方式输入输出的传送方式?程序控制的输入输出 无条件传送无条件传送 查询传送查询传送?中断控制的输入输出?直接存储器访问方式(DMA)第6章 输入/输出和中断技术无条件传送方式无条件传送方式?所谓无条件,就是假设外设已处于就绪状态,数据传送时,程序就不必再去查询外设的状态,而直接执行I/O指令进行数据传输,如 LED等。?当简单外设作为输入设备时,其输入数据的保持时间相对于 CPU 的处理时间要长得多,所以可直接使用三态缓冲器与系统数据总线相连。?当简单外设作为输出设备时,由于外设的速度较慢,CPU 送出的数据必须在接口中保持一段时间,以适应外设的动作,因此输出采用锁存器。
9、第6章 输入/输出和中断技术无条件传送方式无条件传送方式第6章 输入/输出和中断技术无条件传送方式无条件传送方式第6章 输入/输出和中断技术查询传送方式查询传送方式?查询传送方式在传送数据前先查询外设的状态,当外设准备好时,CPU执行I/O指令传送数据;若未准备好时,则CPU等待。?要求CPU 与外设间的接口电路需要两个端口:数据端口和状态端口。?优点:能较好地协调外设与 CPU 之间的定时关系,因而比无条件传送方式容易实现准确传送。?缺点:该方式需要不断查询外设的状态,大量时间花在等待循环中,当主机与中、低速外设交换信息时,大大降低了 CPU利用率。第6章 输入/输出和中断技术查询传送方式查
10、询传送方式第6章 输入/输出和中断技术查询传送方式输入查询传送方式输入第6章 输入/输出和中断技术查询传送方式输入查询传送方式输入例:设接口电路中状态端口的地址为 STATUS,数据端口的地址为DATA,则CPU读取输入设备的数据应执行下列程序段:POLL:IN AL,STATUS ;TEST AL,80H ;JE POLL ;IN AL,DATA ;第6章 输入/输出和中断技术查询传送方式输出查询传送方式输出第6章 输入/输出和中断技术查询传送方式输出查询传送方式输出例:设接口电路中状态端口的地址为 STATUS,数据端口的地址为DATA,则CPU将内存STORE 单元的内容送至输出设备应执
11、行下列程序段:POLL:IN AL,STATUS ;TEST AL,80H ;JNE POLL ;MOV AL,STORE ;OUT DATA,AL ;第6章 输入/输出和中断技术中断控制的输入输出?含义:在中断方式下,外设掌握向CPU申请服务的主动权,当输入设备将数据准备好,或者输出设备已做好接收数据的准备时,向CPU发出中断请求信号,要求CPU为其服务。若此时中断允许触发器是开放的,则 CPU暂停目前的工作,与外设进行一次数据传输,等I/O操作完成以后,CPU继续执行原来的程序。?优点:保证了CPU对外设的实时服务,又不会因对各 I/O设备的随时关照而花费CPU太多的机时,使高速运行的CP
12、U与速度参差不齐的各种外设之间形成了良好的匹配(并行工作)关系,确保了CPU的高效率。?缺点:为了实现中断传送,要求在CPU与外设之间设置中断控制器,增加了硬件开销。第6章 输入/输出和中断技术中断控制的输入输出中断控制的输入输出第6章 输入/输出和中断技术中断控制的输入输出中断控制的输入输出第6章 输入/输出和中断技术直接存储器访问直接存储器访问(DMA)?DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行。?优点:传送速率很高,这对高速度大批量数据传送特别有用。?缺点:要求设置DMA控制器,电路结构复杂,硬件开销大第6章 输入/输出和中断技术直
13、接存储器访问直接存储器访问(DMA)第6章 输入/输出和中断技术6.3 中断技术中断技术?中断源?中断处理过程?中断服务子程序中断系统的功能:1、正确识别中断请求,实现中断响应、中断处理及中断返回2、实现中断优先级排队3、实现中断嵌套第6章 输入/输出和中断技术中断的分类中断的分类?中断分为内部中断和外部中断,每种又包含几种类型,中断时产生一条INT n指令,n表示不同的中断类型号。第6章 输入/输出和中断技术内部中断和外部中断内部中断和外部中断?内部中断(软件中断)CPU内部执行程序时自身产生的中断如被0除、溢出、INT n 等?外部中断(硬件中断)CPU以外的设备、部件产生的中断?非屏蔽中
14、断如电源掉电、内存奇偶错等故障中断?可屏蔽中断如打印机、CRT、磁盘等输入输出设备中断第6章 输入/输出和中断技术中断处理过程中断处理过程?中断请求?中断判优?中断响应?中断处理?中断返回第6章 输入/输出和中断技术中断的优先权中断的优先权?软件排优?硬件排优 链式电路判优链式电路判优 可编程中断控制器可编程中断控制器第6章 输入/输出和中断技术软件查询判优软件查询判优第6章 输入/输出和中断技术软件查询判优软件查询判优第6章 输入/输出和中断技术查询程序两种安排方式查询程序两种安排方式(1)屏蔽法MOV DX,380HIN AL,DXTEST AL,80HJNZ AlSTEST AL,40H
15、JNZ BISTEST AL,20HJNZ CIS(2)位移法MOV DX,380HIN AL,DXRCL AL,1JC AISRCL AL,1JC BISRCL AL,1JC CIS 第6章 输入/输出和中断技术链式电路判优链式电路判优处于链条前端的优先权更高(p239,图6-24)第6章 输入/输出和中断技术中断的嵌套中断的嵌套第6章 输入/输出和中断技术6.4 80X86/Pentium中断系统中断系统第6章 输入/输出和中断技术中断类型中断类型?内部中断(软件中断)?除零中断(n0)?单步中断(n1)条件:TF1且IF1?断点中断(n3)?溢出中断(n4)条件:OF1?中断指令 INT
16、 n?外部中断(硬件中断)?非屏蔽中断(n2)?可屏蔽中断条件:IF1?中断优先权(高?低)除零中断、INT n、INTO、NMI、INTR、单步中断第6章 输入/输出和中断技术中断向量表中断向量表?中断向量是中断服务程序的入口地址。?把系统中所有的中断向量集中起来放到存储器的某一区域内,这个存放中断向量的存储区就叫中断向量表或中断服务程序入口地址表。?中断向量表的每一个向量的序号就是中断类型号,共256个中断类型。?中断向量地址中断类型号4?中断矢量表地址03FFH(1KB)第6章 输入/输出和中断技术中断向量表?中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量表中。?系统
17、配置和使用的中断所对应的中断向量由系统软件负责装入。?若系统中(如单板机)未配置系统软件,就要由用户自行装入中断向量。第6章 输入/输出和中断技术中断向量表中断向量表例1:假设中断向量号为60H,中断服务程序的段基址是SEG_INTR,偏移地址是OFFSET_INTRCLI ;关中断CLD ;内存地址加1MOV AX,0 MOV ES,AX ;给ES赋值为0MOV DI,60H*4 ;中断向量指针DIMOV AX,OFFSET_INTR ;中断服务程序偏移值AXSTOSW ;AXDIDI+1AXDIDI+1中,然后DI2MOV AX,SEG_INTR ;中断服务程序的段基址AXSTOSW ;A
18、XDI+2DI+3AXDI+2DI+3STI ;关中断第6章 输入/输出和中断技术中断向量表中断向量表例2:MOV AX,00HMOV ES,AXMOV BX,60H*4 ;中断号4BXMOV AX,OFFSET_INTR ;中断服务程序偏移值AXMOV ES:BXBX,AX ;装入偏移地址MOV AX,SEG_INTR ;中断服务程序的段基址AXMOV ES:BX+2BX+2,AX ;装入段基址第6章 输入/输出和中断技术中断响应过程?内部中断响应过程(1)将类型号乘4,计算出中断向量的地址(2)CPU的标志寄存器入栈(3)清除IF和TF标志,屏蔽新的INTR中断和单步中断(4)保存断点,即
19、把断点处的IP和CS值压入堆栈,先压入CS值,再压入IP值(5)根据第一步计算出来的地址从中断向量表中取出中断服务程序的入口地址(段和偏移),分别送至CS和IP中(6)转入中断服务程序执行?特点:中断由CPU内部引起,中断类型号的获得与外部无关,CPU不需要执行中断响应周期去获得中断类型号 除单步中断处,内部中断无法用软件禁止,不受中断允许标志IF的影响 内部中断何时发生是可以预测的,类似于子程序调用第6章 输入/输出和中断技术中断响应过程中断响应过程?非屏蔽中断响应。NMI中断不受IF标志的影响,也不用外部接口给出中断类型号,CPU响应NMI中断时也没有中断响应周期。其余处理类似于内部中断?可屏蔽中断响应。当INTR信号有效时,如果中断允许标志IF1,则CPU就在当前指令执行完毕后,产生两个连续的中断响应总线周期