1第七章基本输入输出接口本章内容提要1.输入输出接口功能及其数据交换方式;2.8255结构、功能与应用;3.8253/8254结构、功能与应用;2第一节输入输出接口功能及其数据交换方式1.I/O接口电路及其功能;2.8086CPU的I/O指令、I/O端口编址与端口译码;3.I/O接口电路与CPU的数据交换方式。3设置接口电路的原因通过接口电路,CPU与外部设备之间建立信息交换通道,有三种信息类型:数据信息:数字量、模拟量、开关量;状态信息:外设状态通过接口送达CPU;控制信息:CPU通过接口控制外设工作。接口电路在外设与CPU之间完成相应的信号转换、速度匹配、数据缓冲等功能。4CPU与外设连接示意图微处理器CPUI/O接口外部设备数据线控制线状态线ABCBDB5输入输出接口功能描述1.数据缓冲功能;(CPU与外设工作速度匹配)2.接受和执行CPU命令的功能;3.信号转换功能;(用一组逻辑电平编码信息)4.设备选择功能;5.中断管理功能;(提高系统效率与事件响应速度)6.数据格式变换功能;(串并转换)7.可编程功能。(增加硬件电路灵活性)6I/O指令及其执行过程I/O指令INAL,PORTINAX,PORTINAL,DXINAX,DXOUTPORT,ALOUTPORT,AXOUTDX,ALOUTDX,AX其中PORT为直接端口地址(0~0FFH);DX为间接端口寻址寄存器;8086CPU能寻址216个I/O端口。7IN指令执行过程(时序)数据由接口电路准备好并送上系统数据总线由DX或指令直接给出的端口地址浮空数据输入地址输出总线周期T1T2T4T3,TwM/IOCLKALEAD15~AD0RDCPU采样数据总线,读取端口数据8OUT指令执行过程(时序)AL或AX中数据输出到系统数据总线由DX或指令直接给出的端口地址数据输出地址输出总线周期T1T2T4T3,TwM/IOCLKALEAD15~AD0WR此时接口电路应捕获数据总线上数据9I/O接口编址方式存储器映像输入输出I/O操作与存储器操作指令相同;I/O接口占用存储空间。独立编址输入输出I/O空间与存储器空间分开编址;设置专用的输入输出指令;设置专用的控制信号M/IO。10输入输出端口地址译码I/O端口地址译码与存储器地址译码非常相似;长格式I/O指令可只译码A7~A0,短格式I/O指令必须译码A15~A0地址线;如同存储器一样,8086CPU的I/O系统包含两个8位I/O体,如图所示,16位规则字数据或8位数据I/O只需一次操作即可;8088CPU只有一个I/O体,执行16位I/O指令时,需要两次总线操作,分别读/写高/低字节。考虑M/IO=0为I/O操作;NEXT118086I/O体结构0FFFFH0FFFDH0FFFBH0003H0001HBHE=0选择对应D15~D80FFFEH0FFFCH0FFFAH0002H0000HA0=0对应D7~D0返回12译码电路设计例:设两个输出端口地址为0FEH~0FFH,设计其输出电路,要求该电路可按照字节或字进行输出操作。138位或16位输出电路原理图74LS374#1DI7~DI0Q7~Q0OECLK74LS374#2DI7~DI0Q7~Q0OECLKD7~D0D15~D8&A7A6A5A4A3A2A1≥1M/IOWR≥1≥1A0BHE0FEH0FFH14相应操作指令及其执行结果:执行:OUT0FEH,AL时,AL内容送74LS374#1执行:OUT0FFH,AL时,AL内容送74LS374#2执行:OUT0FEH,AX时,AL内容送74LS74#1,AH内容送74LS74#2。需要注意的是,执行OUT0FFH,AL指令时,AL内容是由CPU数据总线的D15~D8送出。15CPU与外设间数据交换方式CPU与外设间的数据交换,有程序控制方式、中断控制方式和存储器直接存取控制方式。其中程序控制方式是基础,应首先掌握该方式。程序控制方式是指CPU与外设间的数据交换在程序控制下进行,分为无条件传送方式和条件传送方式两类。16无条件传送方式无条件输入不管外设状态,CPU执行IN指令直接从端口输入即为无条件输入。无条件输出不管外设状态,CPU执行OUT指令直接将数据输出到端口即为无条件输出。无条件输入输出要求外设在任何时候都能与CPU交换信息;输入端口只需缓冲,而输出端口一般都需要加入锁存器。17无条件传送方式的输入输出原理Q7~Q0D7~D0OECLKCPU数据总线G数据输出至外设来自外设数据D7~D0三态缓冲器端口译码器≥1WR地址输入≥1RD端口译码信号M/IO18条件传送方式(查询方式)条件传送即程序查询方式,是指CPU在传送数据前,首先通过查询确认外设准备好了才传送数据,否则,CPU等待。从而较好地解决了CPU与外设传送数据时不同步的问题。查询的一般步骤:①从I/O端口读入设备状态信息并确定外设是否准备好交换数据;②若外设没有准备好,则重复执行第①直到设备准备好为止;③CPU执行I/O指令,从I/O端口读/写数据,同时复位I/O端口的状态字。19查询式输入原理选通信号STBRDCPU数据总线数据端口译码信号数据输入设备≥1状态信息锁存器×8DQDQCLR+5V×8状态端口译码信号≥1RD当外设有数据要传送到CPU时,应将数据送上外设数据总线并发出选通信号(STB)20查询输入方式的基本程序设外设状态信息接到系统数据总线的D7位。POLL:INAL,STATUS_PORT;读状态端口TESTAL,80H;检查READY是否是1JEPOLL;未准备好,循环再查INAL,DATA_PORT;从数据端口输入数据21查询式输出原理外设接收完数据后应给出应答信号ACK,表示数据已接收到,BUF为数据准备好信号,用于通知外设CPU已输出新的数据。查询式I/O的实质是软硬件配合完成外设与CPU之间的状态“握手”与数据交换。+5VWRCPU数据总线数据端口译码信号数据输出设备≥1状态信息BUSYACK状态端口译码信号≥1RD锁存器×8DQDQCLR选通信号BUF22中断控制I/O方式原理中断控制I/O方式能及时处理系统中多个外设的数据传输过程。INTRDCPU数据总线端口译码信号数据输入设备≥1锁存器×8DQDQCLR+5V×8选通信号STB中断请求触发器INTA23直接存储器存取(DMA)控制方式在DMA方式下,外部设备利用专用的接口电路直接和存储器进行高速数据传送,而无需通过CPU交换数据。在利用DMA方式进行数据传输时,接口电路要向CPU发出请求,使CPU让出总线,即把总线控制权交给DMA控制器。主要优点:速度快,数据传送的速率只受存储器和接口电路访问速度的限制。主要缺点:硬件电路比较复杂。24第二节8255结构、功能与应用1.了解82C55可编程芯片的内部结构;2.掌握82C55的引脚功能及其与CPU的连接;3.掌握82C55的初始化方法及其工作方式;4.深入体会可编程芯片的一般使用方法。25可编程I/O接口芯片概述1.使用可编程芯片的原因简化电路设计,增加硬件电路灵活性。2.可编程芯片内部的一般结构与CPU连接端口:包括命令口、状态口和数据口。通常每个端口都应映射到CPU的I/O空间;与外设连接端口:用于接口电路与外设传递数据;内部数据总线将所有内部端口连接成一体。26可编程I/O接口芯片概述3.芯片外部特性与CPU连接引脚:片选、内部端口选择线(寻址内部端口)、读/写控制等;与外设连接引脚:数据I/O线、控制输出、外设状态输入等。4.命令字与初始化编程将命令字写入命令口,芯片内部逻辑解释命令字后即可实现芯片功能的配置;正常操作芯片前一般要求初始化芯片。2782C55内部结构82C55内部共有四个独立编址端口一个命令口;三个相互独立的输入/输出数据端口(即端口A、B和C);数据口具有可编程选择的多种功能;内部结构图。2882C55内部逻辑框图端口AC口高四位C口低四位A组控制端口BB组控制数据总线缓冲读/写控制逻辑8位内部数据总线I/OPA7~PA0I/OPC7~PC4I/OPC3~PC0I/OPB7~PB0D7~D0数据总线RDWRA0CSA1RESET外设接口内部控制逻辑CPU接口29与外设连接端口端口A、B和C可与外部设备相连接,用于数据输出时具有锁存/缓冲器功能,数据输入时具有锁存功能。端口C可作为外设控制和状态信息的端口,它可以分成为两个4位的端口,每个端口包含一个4位的输入/输出引脚。分别与端口A和B配合使用,作为控制信号输出,或作为状态信号输入。30内部控制逻辑内部逻辑包括A组和B组控制电路。这是两组根据CPU的命令字控制82C55工作方式的电路。每组控制电路从读/写控制逻辑接受各种命令,从内部数据总线接收控制字并发出适当的命令到相应的端口31与CPU接口1.数据总线缓冲器;2.读/写控制逻辑。3282C55外部特性1.引脚图2.与外设连接的引脚分为PA7~PA0、PB7~PB0和PC7~PC0三组,分别对应于A、B、C三个端口,全为双向、三态引脚。3.与CPU连接的引脚RESET——复位输入信号,高电平有效。复位时清零所有内部寄存器,置A、B、C三个端口为输入方式,对应的PA7~PA0、PB7~PB0、PC7~PC0引脚均为高阻状态。NEXT3382C55引脚图返回PA4PA5PA6PA7WRRESETD0D1D2D3D4D5D6D7VccPB7PB6PB5PB4PB3PA3PA2PA1PA0RDCSGNDA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB21402393384375366357348339321031113012291328142715261625172418231922202182C553482C55外部特性CS#——芯片选择信号输入、低电平有效。只有当它为低电平时,82C55才才能被CPU操作。A0和A1——芯片内部寄存器地址选择信号,当CS#有效时,82C55被选中,再由A0、A1的编码决定是选端口A、B、C还是控制寄存器。RD#——读信号,输入,低电平有效。为低电平时,82C55内部A、B和C可输出到数据引脚D7~D0。WR#——写信号,输入,低电平有效。为低电平时,数据引脚D7~D0上的数据或命令被82C55读入。3582C55操作逻辑真值表CSA1A0RDWR操作说明1××××芯片未选中,数据总线为高阻态×××11数据总线为高阻态01101非法操作,读控制寄存器无意义00001读A口数据00101读B口数据01001读C口数据00010写A口数据00110写B口数据01010写C口数据01110命令写入控制口寄存器3682C55的控制字1.82C55方式选择控制字格式标识位D7=1A组方式选择00—方式001—方式11×—方式2A口:0—输出1—输入PC3~PC00—输出1—输入B口:0—输出1—输入B组方式选择0—方式01—方式1PC7~PC40—输出1—输入D7D6D5D4D3D2D1D03782C55的控制字2.82C55按位置位/复位的控制字选中位操作1——置10——清0标识位D7=0未使用C口位选择000—选PC0001—选PC1010—选PC2011—选PC3100—选PC4101—选PC5110—选PC6111—选PC7D7D6D5D4D3D2D1D03882C55的初始化编程举例例1:要求82C55端口A以方式0输出,端口B以方式1输入,C口输入,设计其初始化程序。设控制口地址为PORT_CON,程序如下:MOVDX,PORT_CONMOVAL,10001111BOUTDX,AL初始化后,如要从A口输出数据,只需执行MOVDX,PORT_AMOVAL,DATAOUTDX,AL3982C55的初始化编程举例例2:端口C的PC0位要求清0,则控制字为00000000B,即00H;而端口C的PC7位要求置1,则控制字为0000