输入/输出接口第8章8.1概述8.1.1基本概念8.1.2输入/输出端口寻址8.2主机与外设的数据传送方式8.2.1程序查询方式8.2.2程序中断方式8.2.3DMA方式的数据传输8.3可编程接口芯片8.3.1计数器和定时器Intel82538.3.2并行接口芯片82558.3.3串行接口标准RS-232C8.4模拟量输入/输出接口8.4.1Intel8253基本工作原理8.4.2数模(D/A)转换器8.4.3模数(A/D)转换器掌握几种数据传送方式的工作过程;掌握8253和8255的内部结构及初始化编程;掌握8237的内部结构和工作方式;了解模拟量输入和输出的一些基本概念.教学要求第8.1节概述8.1.1基本概念8.1CPU接口外设控制数据状态系统总线I/O接口包含多个存放数据、状态和控制信息的寄存器,分别以端口地址标识。数据的输入/输出是通过I/O端口实现的。80x86系统通过I/O指令实现对I/O端口的读写。2.接口与端口的关系CPU外设系统总线数据信息状态信息控制信息1.外部设备的信号概述8.1.1基本概念8.1I/O端口与存储器统一编址把内存的一部分地址分配给I/O端口,一个8位端口占用一个内存单元地址;不设置专门的I/O指令;I/O端口独立编址内存储器和I/O端口各自有自己独立的地址空间;访问I/O端口需要专门的I/O指令(如8086CPU)优点:使用方便,降低CPU电路的复杂性;缺点:减少了内存可用范围;难以区分访问内存和I/O的指令,降低了程序的可读性和可维护性;8.1.2输入/输出端口寻址8.1.2输入/输出端口寻址输入指令格式功能1INAL,PORT(PORT)→AL2INAL,DX([DX])→AL3INAX,PORT(PORT+1;PORT)→AX4INAX,DX([DX]+1;[DX])→AX指令格式:IN累加器,PORT功能:把外设端口(PORT)的内容传送给累加器。8.1.2输入/输出端口寻址输出指令格式功能1OUTPORT,AL(AL)→PORT2OUTDX,AL(AL)→[DX]3OUTPORT,AX(AX)→PORT+1;PORT4OUTDX,AX(AX)→[DX]+1;[DX]指令格式:OUTPORT,累加器功能:把累加器的内容传送给外设端口。第8.2节主机与外设的数据传送方式根据外部设备性质的不同,程序控制方式可分为:8.2.1程序查询方式在程序执行输入/输出指令时,无条件地执行指令相应的操作。无条件传送方式查询工作方式程序不断地询间外部设备的状态,并根据它们当前的状态来实现数据的输入和输出。8.28.2.1程序查询方式CPU接口外设控制数据状态系统总线查询方式下的系统构成示意图工作过程①查询外部设备的状态(利用输入指令)②检测相应的状态位读入的状态字(视机器字长而定)。③如没准备好,则等待,重复①②步骤;否则CPU就执行预定的数据传送。④若为读操作,则在数据读入后,CPU向外设发响应信号,表示数据已被接收,外设收到信号后开始准备下一数据;若为写操作,CPU在向外设送出数据的同时发出输出就绪信号,用来通知外设已送来数据,外设接收数据后,向CPU发出数据已收到状态信息。⑤在一次数据传送结束后,与数据长度计数器值的比较来判断数据是否传送完毕。若没有结束,则重复以上各步骤。8.2.1程序查询方式CPU不断地询问外设是否准备好:如果准备好,CPU执行IO操作;否则,CPU一直等待。CPU大部分时间处于等待状态,利用率不高。⑴查询环节寻址状态口读取状态寄存器的标志位若不就绪就继续查询,直至就绪⑵传送环节寻址数据口通过输入指令从数据端口读入数据通过输出指令向数据端口输出数据输入状态就绪?数据交换YN流程8.2.1程序查询方式【例】设某并行打印机的状态端口是379H,其D7位是忙闲位,若D7=0表示忙,为1表示闲,测试该打印机当前状态,若为忙继续测试,否则顺序执行下一条指令。MOVDX,379HWAIT:INAL,DXTESTAL,80HJZWAIT8.2.2程序中断方式●中断响应——系统中某些突发的或异常的情况发生,强迫CPU暂停(或中断)正在执行的程序而转去进行相应的服务,并在服务结束后回到原来被中断的地方继续执行原来的程序。●处理过程——CPU并不主动介入外设的数据传输工作,而是由外部设备在需要进行数据传送时向CPU发出中断请求,CPU在接到请求后,若条件允许,则暂停(或中断)正在进行的工作而转去对该外设服务,并在服务结束后回到原来被中断的地方继续原来的工作。中断响应和处理过程教学进程断点主程序中断服务程序中断请求对外设进行处理继续执行返回断点CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序。流程8.2.2程序中断方式中断响应和处理过程8.2.3DMA方式的数据传输利用中断进行信息传送,可以大大提高CPU的利用率,但是其传送过程必须由CPU进行监控。每次中断,额外的操作会占用CPU时间。如果需要在内存的不同区域之间,或者在内存与外设端口之间进行大量信息快速传送的话,用查询或中断方式均不能满足速度上的要求,DMA(DirectMemoryAccess)直接数据传送:它是在在内存与高速外设之间直接进行成组的数据传送,而不经过CPU中转的一种数据传送方式,可以大大提高信息的传送速度。基本思想教学进程DMA传送流程HLDA发存储器地址传送数据传送结束?DMA结束修改地址指针流程第8.3节可编程接口芯片●定时信号三种方法获得8.3.1计数器和定时器Intel82531.计数器/定时器接口电路通过计算机执行一段程序实现定时,常写成子程序形式,被称为延时子程序。软件定时主要指用元器件搭成的延时电路。不可编程的硬件定时由一种专用芯片——可编程计数器/定时器作为主要硬件,在简单的程序控制下,能产生准确的时间延迟。可编程的硬件定时8.38.3.12.8253内部结构及外部引脚计数器和定时器Intel8253教学进程可编程计数器/定时器具有两种功能:计数器定时器●计数器时,在减到“0”之后输出一个信号,此次计数过程便结束了;●作为定时器时,在减到“0”之后输出一个信号,接着自动重装计数初值开始下一个周期的定时,如此连续不断地产生信号。两者的主要差别是:8.3.1D7~D0计数器0控制字寄存器计数器1计数器2数据总线缓冲器读/写逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2内部总线计数器和定时器Intel8253●(1)8253的内部结构可初始化编程和工作方式初始化编程注意:对计数器设置计数初始值前必须先将控制字写入。初始值设置时,要符合控制字中的格式规定。是只写低字节,还是只写高字节,或者是先写低字节,后写高字节。8.3.1计数器和定时器Intel82533.分类:一是读出命令,用来读取计数器的当前值;一是写入命令,包括写入控制字、计数初值和锁存命令。●(1)8253初始化编程0:二进制1:BCD计数000:方式0001:方式1010:方式2×11:方式3100:方式4101:方式5计数器选择00:计数器001:计数器110:计数器211:不用读写操作00:锁定当前计数值01:读/写计数器低8位10:读写计数器高8位11:先读/写计数器低8位再读/写计数器高8位D7D6D5D4D3D2D1D0工作方式选择(1)8253初始化编程可初始化编程和工作方式3.●1)8253的控制命令控制字格式8.3.1计数器和定时器Intel8253(1)8253初始化编程可初始化编程和工作方式3.●2)设置初值命令设置初值命令用来设置计数的初始值。根据在控制字中D5D4位的约定,计数初始值可以是8位,也可以是16位。若为16位,则要用两条输出指令完成计数初值的设定,先送低字节,后送高字节。8.3.1计数器和定时器Intel8253(1)8253初始化编程可初始化编程和工作方式3.●3)锁存命令在工作过程中,读取计数值时必须先用锁存命令(控制字的D5D4位为00时)将当前计数值在输出锁存器中锁定,之后再由CPU输入。否则,计数器的计数值有可能正处在改变过程中,就可能得到一个不确定的结果。锁存命令一旦写入8253,输出锁存器即被锁定。而当CPU将锁定值用输入指令读取后,锁存器自动失锁,又跟随减法计数器工作。8.3.1计数器和定时器Intel8253(2)可初始化编程和工作方式3.8253工作方式方式0:计数结束中断方式1:可重复触发的单稳态触发器方式2:分频器方式3:方波发生器方式4:软件触发选通信号发生器方式5:硬件触发选通信号发生器8.3.1计数器和定时器Intel8253●根据对已知条件的分析,得到控制字各位的值如下:选择通道0,D7D6=00工作方式1,D3D2D1=001BCD计数,D0=1由于8086是16位数据线,采用16位传输,故令D5D4=11所以控制字:33H8.3.1计数器和定时器Intel8253例:设在8086系统中有一片8253,其端口地址分配是:通道0为210H,通道1为212H,通道2为214H,控制端口为216H。要求对其通道0进行初始化,使其工作于方式1、BCD计数、计数初始值为100H。4.8253应用举例MOVAL,33H;控制字送ALMOVDX,216H;控制口地址送DXOUTDX,AL;向控制口写入控制字MOVAL,00H;低8位计数值是00HMOVDX,210H;通道0端口地址送DXOUTDX,AL;向通道0写入计数初值的低8位MOVAL,01H;高8位计数值为01HOUTDX,AL;向通道0写入计数初值的高8位其初始化程序段8.3.1计数器和定时器Intel82534.8253应用举例并行接口芯片82558.3.21.8255A的内部逻辑结构内部数据总线PC7~PC4控制控制D7~D0数据总线缓冲器读写控制逻辑RDWRA1A0RESETCSPA7~PA0PC3~PC0PB7~PB0A组端口A(8位)A组端口C(4位)B组端口C(4位)B组端口B(8位)A组B组组成:外设接口部分A组和B组控制电路读/写控制逻辑电路数据总线缓冲器8.3.2并行接口芯片82552.8255A的引脚及功能1234567891011121314151617181920PA3PA2PA1PA0RDCSGNDA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB24039383736353433323130292827262524232221PA4PA5PA6PA7WRRESETD0D1D2D3D4D5D6D7VCCPB7PB6PB5PB4PB38255A8.3.2并行接口芯片8255PA7~PA0:端口A的数据线,双向、三态。PB7~PB0:端口B的数据线,双向、三态。PC7~PC0:端口C的数据线,双向、三态;D7~D0:数据线,双向、三态,与CPU的数据总线相连。RESET:复位信号,高电平有效。CS:片选信号,低电平有效。RD:读信号,低电平有效。WR:写信号,低电平有效。Al、A0:端口选择信号。2.8255A的引脚及功能8255A端口选择表8.3.2并行接口芯片8255(l)方式选择控制字8.3.2并行接口芯片82558255A的控制字3.1D6D5D4D3D2D1D0方式选择控制字标志00:方式001:方式11×:方式20:输出1:输入0:输出1:输入0:输出1:输入0:方式01:方式10:输出1:输入PC7~PC4PC3~PC0端口BB组方式选择端口AA组方式选择●控制字的格式●三种工作方式:方式0:基本的输入/输出方式方式1:选通的输入/输出方式方式2:双向传输方式8.3.2并行接口芯片8255端口A有三种工作方式,方式0、方式1或方式2;端口B有二种工作,方式0或方式1;端口C可作一般的输入/输出端口使用;可用于配合端口A和端口B的工作,为它们提供