第七章可编程并行接口8255可编程并行接口通信:计算机与外设、计算机与计算机间的信息交换。通信的基本方法:并行通信和串行通信。计算机A计算机B或者外设数据并行通信:将数据的各位同时在多根并行传输线上进行传输。数据的各位同时由源到达目的地。并行通信D0D1D2D3D4D5D6D7目标D0D1D2D3D4D5D6D7源01010110并行通信:适合于外部设备与微机之间进行近距离、大量和快速的信息交换,例:微机与并行接口打印机。并行接口:连接CPU与并行外设,实现两者间的并行通信,在信息传送过程中起到输出锁存或输入缓冲的作用。例:三态缓冲器(八位数据位)、锁存器、可编程并行接口芯片82558255A的内部结构和引脚数据总线缓冲器内部控制线内部数据线D0~D7A组控制A组端口AA组端口C上部B组控制B组端口BB组端口C下部读写控制逻辑PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESET8255A内部组成部分1、与外设接口部分8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作为输入或输出,但功能上各有特色。2、与微处理器接口部分这部分主要完成数据传送及逻辑控制。3、内部控制部分由A、B两组控制电路组成。主要作用是根据CPU送来的控制字用以决定两组端口的工作方式(A组为A口和C口的高4位PC4~PC7,B组为B口和C口的低4位PC0~PC3),也可根据控制字的要求对C口按位进行置位或复位。8255A端口选择和基本操作A1A0RDWRCS输入操作(读)00010端口A数据总线01010端口B数据总线10010端口C数据总线输出操作(写)00100数据总线端口A01100数据总线端口B10100数据总线端口C11100数据总线控制字寄存器无操作情况XXXX1数据总线为三态(高阻)11010非法操作XX110数据总线为三态(高阻)8255A的工作方式方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路A,B,C端口都可以作为输入或输出数据端口方式1:选通输入输出方式适用于查询和中断方式的接口电路A,B端口作为输入或输出数据端口,利用C口给A口和B口提供应答联络线。方式2:双向选通传送方式适用于与双向传送数据的外设,查询和中断方式的接口电路只有A口可以工作于方式2,可以双向操作,即可以输入也可以输出数据,C口作为应答信号。8255A的编程8255A的四个端口:通过A1、A0内部译码选择:三个数据端口、控制端口初始化编程:通过程序设定各个数据端口的工作方式、输入还是输出端口对控制端口写一个方式选择控制字控制端口地址:A1A0=11工作过程中:实现CPU对外设数据进行读写CPU通过输入输出指令对数据端口进行读写端口A、B和C的地址,A1A0依次等于00、01、10IBMPC/XT机上,8255A的端口A、B、C和控制端口的I/O地址为60H、61H、62H和63H对控制端口写:方式选择控制字1D6D5D4D3D2D1D0方式选择控制字标识位A组方式选择00方式001方式11x方式2端口A1输入0输出PC3~PC0:1输入(方式0时)0输出端口B:1输入0输出B组方式选择:0方式01方式1PC7~PC4:1输入(方式0时)0输出端口C按位置1/置0控制字0D6D5D4D3D2D1D0xxx无关1:置10:置000001111端口C按位置1/置0控制字标识位位选择PC0PC1PC2PC3PC4PC5PC6PC70011001101010101•可以通过程序将端口C的某一位PCi置1或置0,即:向控制端口写入端口C按位置1/置0控制字8255A控制字举例[例]在某微机系统中,8255A芯片端口地址是280H~283H,工作于方式0,并且A口输入,B口输出,C口上半口输入,下半口输出。则:方式选择控制字:10011000BMOVDX,283HMOVAL,98HOUTDX,AL[例]要使C口的PC3置1,而PC0置0。则:端口C置1/置0控制字:00000111B00000000BMOVDX,283HMOVAL,07HOUTDX,ALMOVAL,00HOUTDX,AL方式0无条件传送方式不使用联络信号,也不使用中断,A口和B口可定义为输入或输出口,C口分成两个部分(高四位和低四位),C口的两个部分也可分别定义为输入或输出。在方式0,所有口输出均有锁存,输入只有缓冲,但无锁存。查询传送方式可用A,B,C三个口的任一位充当查询信号,其余I/O口仍可作为独立的端口和外设相连。常用C口的上半部和下半部的若干位作为状态/控制位,为A口或者B口的输入输出提供联络信号方式0输入时序datadata输入端口D0~D7RDCS,A1,A0请体会这里8255A的数据缓冲作用方式0输出时序WRdatadata输出端口D0~D7CS,A1,A08255A对CPU通过它输出给外设的数据进行锁存[例]已知8255A的A,B,C端口外接有12个开关和12个发光二极管,每一个开关对应每一个发光二极管,当某一开关接通时,对应的发光二极管就亮,否则就暗.设8255A芯片端口地址是280H~283H。8255A+5VK0(CPU数据总线)D0~D7(8088A1)A1RESET(CPU)WR(CPU)RD(8088A0)A0CSPB0PB7PC0PC3K7K8K11..................PA0PC7PC4PA7发光二级管驱动器......L0L11L8L7......................+5V如图可知:工作于方式0,基本的输入输出方式,A口和C口的上半部是输出,B口和C口的下半部是输入则:方式选择控制字:10000011BMOVDX,283HMOVAL,83HOUTDX,AL;写方式选择控制字LL:MOVDX,281HINAL,DX;读B口MOVDX,280HOUTDX,AL;写A口MOVDX,282HINAL,DX;读C口下半部MOVCL,4SHLAL,clOUTDX,AL;写C口上半部JMPLL方式1A口借用C口的一些信号线用作控制和状态线,形成A组,B口借用C口的一些信号线用作控制和状态线,组成B组。使用查询或者中断传送方式。在方式1下,A口和B口的输入输出均带有锁存。在方式1下,C口则要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可工作在方式0,可通过编程设置为输入或输出,工作于方式0。方式1输入引脚:A端口数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据PC4PC5PC3PA7~PA0INTEAIBFAINTRASTBA中断允许触发器方式1输入引脚:B端口PC2PC1PC0PB7~PB0INTEBIBFBINTRBSTBB数据选通信号表示外设已经准备好数据输入缓冲器满信号表示B口已经接收数据中断请求信号请求CPU接收数据中断允许触发器方式1输入时序dataINTRIBFdata输入端口D0~D7STBRDSTB和IBF是外设和8255A间的一对应答联络信号,为的是可靠地输入数据输入时各状态、控制信号线STB:选通信号,输入,低有效。这是由外设送来的信号,有效时将由外设送来的位于A口(或B口)引线的8位数据锁存到A口(或B口)的输入锁存器中。IBF:输入缓冲器满,输出,高有效。这是8255A送给外设的控制信号,有效时表示数据已送入到输入锁存器中。该信号由外设发出的STB置位(变为有效),由CPU发出的RD信号的上升沿复位(变为无效)。INTR:中断请求,输出,高有效。这是8255A送给CPU的中断请求信号。它是当STB信号将外设的数据送入8255A的输入锁存器,使IBF为有效,并且中断允许(INTE为高)时,由8255A发出的。换句话,在中断允许的前提下,输入选通信号结束时,外设已经将数据送入8255A的输入锁存器,这时8255A向CPU提出中断请求,让CPU来读取位于8255A输入锁存器中的数据。输入时各状态、控制信号线INTE:中断允许。INTE=l,允许A口或B口向CPU申请中断,INTE=0,禁止A口或B口向CPU申请中断。INTE没有外部引出端,利用C口的按位置位/复位的功能来使其置1或清0的,INTEA由PC4控制,INTEB由PC2控制。需要指出的是,在方式1时,PC4和PC2的置位/复位操作分别用于控制A口和B口的中断允许信号,这是8255A的内部操作,这一操作对PC4和PC2引脚用于A口和B口的数据选通输入信号没有任何影响。方式1输出引脚:A端口外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据PC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA中断允许触发器方式1输出引脚:B端口PC2PC1PC0PB7~PB0INTEBOBFBINTRBACKB外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据中断允许触发器方式1输出时序INTRdatadata输出端口D0~D7WROBFACKOBF和ACK是外设和8255A间的一对应答联络信号,为的是可靠地输出数据输出时各状态、控制信号线OBF:输出缓冲器满,输出,低有效。这是8255A送给外设的控制信号,有效时表示数据已送入到输出锁存器中,用该信号通知外设将数据取走。该信号由CPU发出的WR而置成低电平(变为有效)而由外设来的ACK信号使其恢复为高电平(无效)。ACK:应答,输入,低有效。这是由外设送来的信号,有效时将表示外设已经从端口输出线上将数据取走。INTR:中断请求,输出,高有效。这是8255A送给CPU的中断请求信号。它是当外设将数据取走并应答ACK信号之后,并且中断允许(INTE为高电平)时,由8255A发出的中断请求,让CPU输出一个新的数据。INTE:中断允许。利用C口的按位置位/复位的功能来使其置1或清0的,INTEA由PC6控制,INTEB由PC2控制。方式2双向传输方式方式2将方式1的选通输入和输出功能组合成一个双向数据端口,可以发送数据和接收数据。只有端口A可以工作于方式2,需要利用端口C的5个信号线,其作用与方式1相同。C口余下的PC0~PC2正好可以充当B口方式1的应答线,若B口不工作于方式0,则这三条线也可工作于方式0。可使用查询方式,也可以使用中断方式。输入和输出均是锁存的。方式2双向引脚PC6PC7PC3PA7~PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2用PC6设置INTE1(输出)用PC4设置INTE2(输入)输入和输出中断通过或门输出INTRA信号