1第五章微机接口技术本章要求:1.掌握接口的概念、功能及一般设计方法。2.掌握三种I/O控制方式传输数据的工作过程。3.掌握中断、中断向量、中断向量表、中断类型码等概念,MPU对中断的响应过程。3.了解可编程中断控制器8259A的内部结构和功能,掌握其初始化命令字ICW1~ICW4和工作命令字OCW1~OCW3的设置方法,并对常用的一些工作方式会应用。4.掌握直接存储器存取(DMA)方式的工作原理及相关概念;了解DMAC8237A的工作方式、编程及应用。2I/O设备是计算机系统的重要组成部分。MPU与外部设备交换信息是计算机系统中十分重要、十分频繁的操作。程序原始数据计算结果现场信息控制信号输入设备输出设备(键盘、鼠标、(CRT、打印机、D/A等)A/D、开关量)计算机3MPU微型计算机存储器(ROM、RAM)I/O接口电路局部总线电源外部设备软件为何需要I/O接口?工作速度差异较大。通过接口连接来协调各部分工作,实现数据传送同步。4I/O接口的功能:①地址译码,进行设备选择;②数据缓冲,协调速度;③信息转换(A/D、D/A、并串);④提供命令或状态信息;⑤定时和控制。5地址译码:例如3:8译码器(74LS138)I/O空间:I/O设备地址2种方式:与内存统一编址(无专门的I/O指令)独立编址(有专门的I/O指令)80X86MPU采用I/O独立编址:AB15~0:访问216=64KB6输入/输出指令(2.3.6节)一.输入指令格式:INDEST,SRCDEST为AL、AX或EAX;SRC是端口地址,可以直接给出8位端口地址(0-255),或由DX寄存器以间接形式给出。功能:根据源操作数SRC给出的端口地址,将操作数从指定端口传送到目的操作数DEST处。7例2.73INAL,10HINAX,20HINEAX,30HMOVDX,300HINAL,DXINAX,DXINEAX,DX8二.输出指令格式:OUTDEST,SRC功能:将源操作数SRC送到目的操作数DEST所指定的端口。其中源操作数SRC为AL,AX或EAX,目的操作数可以8位端口地址方式直接给出或以DX寄存器间接方式给出。例:OUT60H,ALOUTDX,AL9使用输入、输出指令应注意:·直接寻址方式端口地址为8位,共有0~255个端口地址;·间接寻址方式,只能用DX作为地址寄存器,寻址范围为64K字节;·每个I/O地址对应的端口的数据长度为8位,传送8位数据占用一个端口地址,传送16位数据占用2个端口地址,传送32位数据占用4个端口地址。105.1I/O控制输入数据的过程:·外设把数据送入I/O接口的数据输入缓存器;·微处理器执行输入指令,·I/O地址通过地址总线寻址该输入缓存器,将其中的数据送到系统数据总线上;·微处理器从系统数据总数上读取数据,存入相应寄存器中。11输出数据的过程:·微处理器执行输出指令,·把接口的地址放在系统地址总线上,选择某一接口的数据缓存器;·把需输出的数据放在系统数据总线上,并送入已寻址的接口的相应数据缓存器中;·外设确认数据有效后,从该数据缓存器读取数据。12如何知道外设准备就绪?四种I/O控制方式:①程序查询方式;②中断驱动方式;③直接存储器存取方式(DMA);④专用I/O处理器方式。MPU与I/O间还有一种最简单的无条件传送方式。135.1.2程序查询方法:MPU主动、反复查询I/O设备的状态,了解设备是否准备好,是否需要服务,如果需要服务则转入相应的设备服务程序;如果外设未准备好,不需要服务,MPU则继续查询,或者先做一段时间其它事后再接着查询。特点:I/O操作由MPU启动。接口电路包括:数据端口、状态端口。141.查询式数据输入过程:152.查询式数据输出过程163.当系统中有多个I/O设备时,MPU对所有外设采取循环查询方式。各I/O设备状态标志位处理:①每个设备一个状态端口,分别查询;②各状态标志集中,统一一个专用状态端口;③在状态端口前加一个优先权编码器。程序查询的特点:MPU主动,接口电路和查询软件比较简单,但MPU效率低。适用于实时性要求不高、或微机操作比较单一、不繁忙的情况。175.2中断控制5.2.1基本中断控制方式中断的概念:当I/O设备需要MPU服务时通过其接口发出中断请求信号,MPU在收到中断请求后,中断正在执行的程序,保护断点,转去为相应外设服务,执行一个相应的中断服务子程序;中断服务结束,恢复断点,返回原来被中断的程序继续执行。特点:I/O设备与MPU并行工作,MPU处于被动工作方式。节省MPU时间,提高效率,实时响应。适用于数据采集、处理和控制系统。但需中断逻辑电路支持,硬件较复杂。185.2中断控制195.2.2中断判决与控制当系统有多个中断源时,存在:几个中断源同时提出中断请求;一个未处理完又有新的中断请求提出。中断源的识别与判优(软硬件结合):20中断源的识别与判优(软硬件结合):①一些微处理器芯片上已按一定优先级算法(例如固定优先级算法)设计好了相应的并行判决中断控制器,用户只需根据中断的优先级情况对应地与各有关中断请求线相连即可。②当中断源超过MPU所提供的中断输入线数目时,一方面要判别出多个中断源的优先级别,另一方面要根据选中的中断源引导程序进入相应的中断处理程序。通常有程序查询式和中断向量式两种解决方法。211.程序查询式(软件):需一个中断请求锁存器,对锁存器查询的次序决定了中断源的优先级别。特点:硬件简单,通过软件即可改变优先级。但中断源多时,响应速度慢。222.中断向量式(硬件):方法:菊花链优先级判决;并行优先级判决。特点:由中断源的中断向量转入服务程序,响应快,但硬件开销大。23245.2.380X86实模式中断1.中断向量表:物理地址00000~003FFH处、表长1KB字节的一块区域;每个表项占4个字节,存放一个中断向量(中断服务程序的入口地址);可存储256个中断向量,中断类型号0~255(8位)。每个中断向量的前两个字节为中断服务程序的入口偏移地址,后两个字节装入的是入口段地址。25•(P197表5.1、表5.2)262.Pentium的中断类型Pentium的中断向量表的长度也保持为1KB字节,包含256种类型的中断和异常。可分为4种类型:(1)外部硬件中断(可屏蔽中断):INTR脚,受IF位控制;(2)不可屏蔽中断:NMI引脚,不受IF位控制,类型码2;(3)软件中断:中断类型码n(INT0、INT3等);(4)内部中断和异常:执行一条指令过程中,出现错误等不正常条件而引发的,由内部硬件自动测试,类型码固定。27MPU内部中断机构判优规则(优先级):高①内部中断和异常;②软件中断INT;③非屏蔽中断NMI;④可屏蔽中断INTR;低⑤单步中断。28实方式中断操作:获取中断类型取得类型码的途径(三种):第一种是固定的。例如不可屏蔽中断其中断类型码固定为2,除数为0中断类型码固定为0,根据MPU内部执行机构检测到的故障现象或满足中断产生的条件时,自动指定中断类型码。第二种是指令给出的。如软件中断指令INTn中的n即为中断类型号。INT3和INTO指令也分别指定中断类型号3和4。第三种是外部提供的,这是指外部硬件中断(可屏蔽中断INTR)。在处理器接收到有效的INTR信号后,若IF位=1,则产生一个中断响应总线周期,从外部的中断控制器读取对应此中断请求的中断类型码。29MPU响应中断过程(MPU自动进行):①标志寄存器(E)FLAGES内容压入堆栈。②清除中断标志(IF)与陷井标志(TF),禁止INTR引脚和陷井或单步操作。③将代码段寄存器(CS)内容压入堆栈。④将指令指针(IP)内容压入堆栈。⑤取出中断向量内容置入IP与CS中,从而下一条指令就是向量寻址的中断服务程序中的指令。中断返回:执行IRET指令IP出栈;CS出栈;(E)FLAGES出栈。30保护方式中断操作:保护方式使用中断描述符表(IDT),中断描述符表不同于实方式下的中断向量表,表中存放256个中断描述符,每个描述符为8字节,中断描述符表长为256×8(2K)字节,中断描述符表在内存中存放的起始内存位置,由中断描述符表地址寄存器(IDTR)指定。以中断类型码乘以8作为访问IDT的偏移量,取出指定的表项。IDT中每一项为中断门、陷阱门或任务门描述符,其内容为段选择符、32位偏移地址以及段属性包含P位(存在)和DPL位描述中断的特权级等。31保护方式中断寻址32保护方式下当处理器决定响应本次中断/异常请求时,执行以下序列操作:①若中断处理的MPU控制权转换涉及到特权级改变的话,则当前的SS和ESP这两个寄存器的内容要压入(系统)堆栈予以保存。②标志寄存器EFLAGS的内容也压入此堆栈。③TF和IF标志被清除(有些情况IF不清除)。④当前的代码段寄存器CS和指令指针EIP的内容压入堆栈。⑤如果中断发生伴随有错误码,则错误码也被压入堆栈。保护方式中断与实方式中断的返回方式相似,均使用IRET或IRETD指令从中断服务程序返回。335.38259A可编程中断控制器Intel公司、专用管理中断、可编程芯片。内部包括:中断源识别、中断源优先级裁决和中断屏蔽等功能电路,可编程设定:中断请求方式;中断嵌套方式;中断结束方式;中断优先级等。可多片级联构成8级~64级优先中断管理系统。345.3.18259A基本功能Intel8259A是可编程的中断控制器。主要功能:1.具有8级优先权管理,通过级连可扩展至64级优先权管理系统。2.每一级中断源都允许产生中断也可以被屏蔽。3.在中断响应周期,8259A可以向微处理器提供被其选中的中断源的中断类型码,根据中断类型码可以转至该中断源的中断服务程序。4.可通过编程来设定8259A的几种工作方式。。355.3.2结构及引脚1.引脚365.38259A可编程中断控制器2.寄存器及控制电路各部分功能375.3.38259A管理中断过程1.当某中断源申请中断服务,通过引脚IR0~IR7之一向8259A发出中断请求,中断请求寄存器IRR的相应位置位。2.若中断屏蔽寄存器IMR的相应位未被屏蔽,则该中断源的中断请求被送到优先权裁决电路,通过INT引脚向微处理器送出中断请求信号。(如果同时有多个中断源申请中断,8259接受当前优先级最高的中断源的中断请求;如果允许中断嵌套,8259接受比当前正在服务的优先级高的中断源的中断请求;)。383.在微处理器开中断状态下,则在当前指令执行结束,发起两个中断响应周期,用两个INTA信号作为中断响应信号。4.第一个脉冲信号使IRR锁存功能失效,暂不接收IR0~IR7线上的中断请求。将选中的优先权最高的ISR位置位,对应的IRR位复位。5.第二个脉冲信号使8259A经数据总线向微处理器输送一个8位的中断类型码,并有效IRR锁存功能,允许接收IR0~IR7线上的中断请求。396.微处理器将该中断类型码乘以4,获得其在中断向量表中的地址指针,取出中断服务程序的入口地址(包括段地址和段内偏移量)并转去执行。7.若8259A工作在自动结束中断AEOI模式,在第二个INTA脉冲结束时,使中断源在ISR中的相应位复位;若8259A工作在一般或者特殊结束中断,直至中断服务程序结束,微处理器向8259A发出一般或者特殊EOI命令,才使ISR中的相应位复位。405.3.48259A的命令初始化编程(ICW1~ICW4):由微处理器向8259A送3~4个字节的初始化命令字ICW(InitializationCommandWord)。开机,必须先送初始化命令字,设定基本工作方式;初始化操作,开机只作一次。工作方式编程(OCW1~OCW3):415.3.48259A的命令工作方式编程(OCW1~OCW3):由微处理器向8259A送三个字节的操作命令字OCW(OperationCommandWord)。规定8259A的工作方式,例如:设置中断屏蔽;结束中断服务;改变优先权循环;读取中断状态等。操作命令字可在8259A初始化以后的任何时间写入,用以对中断处理过程实现动态控制。425