7.3可编程并行接口微型计算机与I/O设备的接口按照数据传送格式的不同,可分为并行接口和串行接口两种。实现并行通信的接口就是并行接口实现串行通信的接口就是串行接口并行通信与串行通信数据通信的基本方式可分为并行通信与串行通信两种:并行通信:是指利用多条数据传输线将一个数据的各位同时传送。传输速度快,适用于短距离通信。串行通信:是指利用一条传输线将数据一位位地顺序传送。通信线路简单,利用电话或电报线路就可实现通信,降低成本,适用于远距离通信,但传输速度慢。以计算机的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据适合于外部设备与微机之间进行近距离、大量和快速的信息交换例如:微机与并行接口打印机、磁盘驱动器微机系统中最基本的信息交换方法例如:系统板上各部件之间,接口电路板上各部件之间并行通信的特点串行通信的特点将数据分解成二进制位用一条信号线,既传送数据信息,又传送控制信息要求数据格式固定,分为异步和同步数据格式串行通信中对信号的逻辑定义与TTL不兼容,需进行逻辑关系和逻辑电平转换串行传送信息的速率需要控制,要求双方约定通信传输的波特率可编程并行接口芯片8255A1.8255A有两个8位(端口A与端口B)和两个4位(端口C高/低4位)的并行输入/输出端口2.端口A有三种工作方式:方式0、方式1、方式2;端口B口有两种工作方式:方式0、方式1;可适应CPU与I/O接口的多种数据传送方式,如无条件传送、查询式传送和中断方式传送等3.端口C的使用较特殊,除工作在方式0作为数据端口之外,当工作在方式1和方式2时,它的大部分引脚被用作联络信号,端口C还可以进行按位置位/复位操作8255A的内部结构1.数据总线缓冲器2.8位端口PA、PB和PC端口A:PA0~PA71个8位的数据输入锁存器和1个8位的数据输出锁存/缓冲器端口B:PB0~PB71个8位的数据输入缓冲器和1个8位的输入/输出、锁存/缓冲器端口C:PC0~PC71个8位数据输入缓冲器和1个8位输出锁存/缓冲器,也可以分两个4位端口使用3.A组和B组的控制电路A组控制部件用来控制端口PA和端口PC的高4位(PC7~PC4),B组控制部件用来控制端口PB和端口PC的低4位(PC3~PC0)。4.读/写控制逻辑8255A芯片的引脚信号8255A为双列直插式封装,除了电源和地线以外,其外部引脚信号可分为两组,一组是面向CPU的信号,一组是面向外设的信号。1.面向CPU一侧的引脚信号⑴D7~D0:8位,双向,三态数据线⑵RESET:复位信号,复位后所有内部寄存器清零,三个数据端口自动设为输入方式⑶CS*:片选信号⑷RD*:读信号⑸WR*:写信号⑹A1、A0:端口选择信号A1A0RD*WR*CS*输入操作(CPU读)001010000111000数据总线←端口A数据总线←端口B数据总线←端口C00110101111100000000输出操作(CPU写)数据总线→端口A数据总线→端口B数据总线→端口C数据总线→控制端口8255A的读/写操作控制2.面向外设一侧的引脚信号端口A:PA0~PA7A组,支持工作方式0、1、2端口B:PB0~PB7B组,支持工作方式0、1端口C:PC0~PC7仅支持工作方式0A组控制高4位PC4~PC7B组控制低4位PC0~PC38255A的工作方式方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路方式1:选通输入输出方式适用于查询和中断方式的接口电路方式2:双向选通传送方式适用于与双向传送数据的外设适用于查询和中断方式的接口电路1.方式0方式0的特点(1)A口、C口的高4位、B口以及C口的低4位可分别定义为输入或输出,各端口互相独立,故共有16种不同的组合。(2)定义为输出的口均有锁存数据的能力,而定义为输入的口则无锁存能力。(3)在方式0下,C口有按位进行置位和复位的能力方式0适合于两种情况:一种是无条件传送,另一种是查询方式传送2.方式1一种选通的输入/输出工作方式三个端口分为两组,即A组和B组A组包括8位数据端口A和PC7~PC3五位控制/状态端口,B组为8位数据端口B和PC2~PC0三位状态控制端口每一个8位数据端口均可设置为输入/输出方式,且两种工作方式均可锁存控制/状态口除了指示两组数据口的状态及选通信号外,还可用做I/O口,如PC6和PC7,用位控方式传送端口A方式1作输入:数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据PC4PC5PC3PA7~PA0INTEAIBFAINTRASTBA中断允许触发器PC2PC1PC0PB7~PB0INTEBIBFBINTRBSTBB数据选通信号表示外设已经准备好数据输入缓冲器满信号表示B口已经接收数据中断请求信号请求CPU接收数据中断允许触发器端口B方式1作输入:方式1输入联络信号定义STB*——选通信号,低电平有效由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器IBF——输入缓冲器满信号,高电平有效8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器INTR——中断请求信号,高电平有效8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据INTE——中断允许信号,高电平有效用于控制中断允许或中断屏蔽,PC4(PC2)置1,允许中断,PC4(PC2)置0,禁止中断联络信号端口A端口CSTB*对应PC4对应PC2IBF对应PC5对应PC1INTR对应PC3对应PC0INTEPC4置位PC2置位8255A方式1作输入时的各联络信号对应关系状态信号可以通过读取端口C得到(P287)8255A工作在方式1下的输入时序端口A方式1作输出:外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据PC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA中断允许触发器端口B方式1作输出:PC2PC1PC0PB7~PB0INTEBOBFBINTRBACKB外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据中断允许触发器方式1输出联络信号OBF*——输出缓冲器满信号,低有效8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走ACK*——响应信号,低有效外设的响应信号,指示8255A的端口数据已由外设接受INTR——中断请求信号,高有效当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据INTE——中断允许信号,高电平有效用于控制中断允许或中断屏蔽,PC6(PC2)置1,允许中断,PC6(PC2)置0,禁止中断联络信号端口A端口BOBF*对应PC7对应PC1ACK对应PC6对应PC2INTR对应PC3对应PC0INTEPC6置位PC2置位8255A方式1作输出时的各联络信号对应关系状态信号可以通过读取端口C得到(P287)8255A工作在方式1下的输出时序3.方式2(双向选通方式)(1)工作方式2只适用于A口,B口仍按方式0或方式1工作(2)A口可工作于双向方式,C口的PC7~PC3位作为A口的控制/状态信号端口,PC2~PC0用于B组(3)A口的输入/输出均有锁存功能。在方式2工作状态下,A口既可工作于查询方式,又可工作于中断方式(4)状态字可以通过读C端口得到(P288)方式2的信号定义PC6PC7PC3PA7~PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2用PC6设置INTE1(输出)用PC4设置INTE2(输入)输入和输出中断通过或门输出INTRA信号8255A工作在方式2下的工作时序8255A的控制字8255A有两种控制字:方式控制字端口C按位置位/复位控制字由于使用同一个控制端口,控制字采用特征位的方法,控制字中最高位D7为特征位D7=0:当前控制字是按位置位/复位控制字D7=1,当前控制字是方式控制字。工作方式选择控制字D7=1方式控制字的作用是确定A、B、C3个并行口的工作方式及端口功能,由方式控制字可知:8255A有3种基本工作方式:方式0——基本的输入/输出方式。方式1——选通输入/输出方式。方式2——双向传输方式。在方式1工作时,方式控制字总是把A、B、C3个端口分为两组来设定工作方式。其中,A组为端口A和端口C的高4位(PC7~PC4);B组为端口B和端口C的低4位(PC3~PC0)。端口A可工作于3种方式中的任一种,端口B只能工作于方式0或方式1。在方式0时,端口C可以分成2个4位端口,用作数据输入/输出端口;还可以分别用来为A端口、B端口输入/输出时提供控制信号和状态信号[例]如果把端口A设定为方式1,输出,端口B设定为方式0,输入,端口C上半部设定为输入,下半部设定为输出,则方式选择控制字应为:10101010B=AAH。设控制口地址为303H,初始化的程序段为:MOVDX,303H;8255A的控制口地址MOVAL,AAH;控制字,10101010OUTDX,AL;控制字写入控制端口按位置位/复位控制字(D7=0)按位置位/复位控制字的作用是使端口C的某一位输出为高电平或低电平,以用于控制或应答信号。[例]如果要使端口C的PC4端输出高电平,则按位置位/复位控制字应为00001001B=09H,设控制口地址为63H,则程序段如下:MOVAL,09H;控制字,PC4置1OUT063H,AL;控制字写入控制端口8255A的编程初始化编程采用控制I/O地址:A1A0=11工作过程中通过数据端口对外设数据进行读写数据读写利用端口A、B和C的I/O地址,A1A0依次等于00、01、10IBMPC/XT机上,端口A、B、C和控制端口的I/O地址为60H、61H、62H和63H(1)写入方式控制字:示例要求:A端口:方式1输入C端口上半部:输出,C口下半部:输入B端口:方式0输出方式控制字:10110001B或B1H初始化的程序段:MOVDX,303H;假设控制端口为303HMOVAL,0B1H;方式控制字OUTDX,AL;送到控制端口(2)读写数据端口初始化编程后:当数据端口作为输入接口时,执行输入IN指令将从输入设备得到外设数据当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备8255A具有锁存输出数据的能力对输出方式的端口同样可以输入,但不是读取外设数据,读取的是上次CPU给外设的数据读写数据端口:示例利用8255A的输出锁存能力,可实现按位输出控制对输出端口B的PB7位置位的程序段:MOVDX,301H;B端口假设为301HINAL,DX;读出B端口原输出内容ORAL,80H;使PB7=1OUTDX,AL;输出新的内容(3)读写端口CC端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出在控制上,C端口上半部和A端口编为A组,C端口下半部和B端口编为B组当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚将被征用,其余引脚仍可设定工作在方式0对端口C的数据输出有两种办法:通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效通过控制端口:向C端口写入位控字,使C端口的某个引脚输出1或0,或置位复位内部的中断允许触发器读取的C端口数据有两种情况:未被A和B端口征用的引脚:将从定义为输入的端口读到引脚输入信息;将从定义为输出的端口读到输出锁存器中的信息被A和B端口征用作为联络线的引脚:将读到反映8255A状态的状态字8255A的应用1.开关量的检测例:在工业控制过程中,经常需要检测某些开关的状态。例如,在某一系统中,有8个开关K7