资源描述
,第10章并行通信及其接口电路,本章主要内容,(1)可编程并行接口电路8255A的结构及工作原理(2)8255A的应用,10.0概述,在计算机和数据通信系统中,有两种基本的数据传送方式,即串行数据传送方式和并行数据传送方式,也称串行通信和并行通信。数据在单条一位宽的传输线上按时间先后一位一位地进行传送,称为串行传送;数据在多位宽的传输线上各位同时进行传送,称为并行传送。和串行传送相比,在同样的时钟速率下,并行传送的数据传输率较高。,并行通信往往适用于信息传输率要求较高,而传输距离较短的场合。本章重点介绍并行通信及其所要求的并行接口电路,研究它们的组成、功能及典型的并行接口芯片的工作原理及使用方法。着重介绍可编程并行接口电路8255A及其典型应用。,10.1可编程并行接口,10.1.1可编程并行接口的组成及其与CPU和外设的连接通常,一个可编程并行接口电路应包括下列组成部分:(1)两个或两个以上具有缓冲能力的数据寄存器。(2)可供CPU访问的控制及状态寄存器。(3)片选和内部控制逻辑电路。,(4)与外设进行数据交换的控制与联络信号线。(5)与CPU用中断方式传送数据的相关中断控制电路。典型的可编程并行接口及其与CPU和外设的连接示意图如图10.1所示。,图10.1可编程并行接口电路及其与CPU和外设的连接,CPU,输出设备,输入设备,并行接口电路,数据总线,读控信号,写控信号,复位信号,中断响应信号,中断请求信号,地址,译码器,片选,输出缓冲寄存器,输入缓冲寄存器,控制寄存器,状态寄存器,中断逻辑,并行输出数据,并行输入数据,输出准备好,输出回答,输入准备好,输入回答,10.1.2可编程并行接口的数据输入输出过程将以8255A为例进行讨论。,10.2可编程并行通信接口8255A,10.2.18255A的性能概要Intel8255A是一个为Intel8080和8085微机系统设计的通用可编程并行接口芯片,也可应用于其他微机系统之中。8255A采用40脚双列直插封装,单一+5V电源,全部输入输出与TTL电平兼容。用8255A连接外部设备时,通常不需要再附加其他电路,给使用带来很大方便。,8255A有三个输入输出端口:端口A、端口B、端口C。每个端口都可通过编程设定为输入端口或输出端口,但有各自不同的方式和特点。端口C可作为一个独立的端口使用,但通常是配合端口A和端口B的工作,为这两个端口的输入输出提供控制联络信号。,10.2.28255A芯片引脚分配及引脚信号说明,8255A芯片引脚分配如图10.2所示。8255A芯片的40条引脚,大致可分为三类:(1)电源与地线共2条:Vcc、GND。(2)与外设相连的共24条:PA7PA0:端口A数据信号。PB7PB0:端口B数据信号。PC7PC0:端口C数据信号。,图,10.28255,A,芯片引脚分配,(3)与CPU相连的共14条:RESET:复位信号,高电平有效。当RESET信号有效时,所有内部寄存器都被清除。同时,3个数据端口被自动设置为输入端口。D7D0:双向数据线,在8080、8085系统中,8255A的D7D0与系统的8位数据总线相连;在8086系统中,采用16位数据总线,8255A的D7D0通常是接在16位数据总线的低8位上。,CS:片选信号,低电平有效。该信号来自译码器的输出,只有当CS有效时,读信号RD和写信号WR才对8255A有效。RD:读信号,低电平有效。它控制从8255A读出数据或状态信息。,WR:写信号,低电平有效。它控制把数据或控制命令字写入8255A。A1、A0:端口选择信号。8255A内部共有4个端口(即寄存器):3个数据端口(端口A、端口B、端口C)和1个控制端口,当片选信号CS有效时,规定A1、A0为00、01、10、11时,分别选中端口A、端口B、端口C和控制端口。CS、RD、WR、A1、A0这五个信号的组合决定了对三个数据端口和一个控制端口的读写操作,如表10-1所示。,表10-18255A端口选择和基本操作,10.2.38255A内部结构方块图,8255A内部结构方块图如图10.3所示。,图10.38255A内部结构方块图,RESET,由图10.3可以看出,8255A由以下几部分组成:(1)数据总线缓冲器这是一个双向三态8位数据缓冲器,它是8255A与CPU数据总线的接口。输入数据、输出数据以及CPU发给8255A的控制字和从8255A读出的状态信息都是通过该缓冲器传送的。,(2)端口A、端口B、端口C8255A有三个8位端口(端口A、端口B、端口C),各端口可由程序设定为输入端口或输出端口。在使用中,端口A和端口B常常作为独立的输入端口或输出端口。端口C也可以作为输入端口或输出端口,但往往是用来配合端口A和端口B的工作。在方式字的控制下,端口C可以分成两个4位的端口,分别用来为端口A和端口B提供控制和状态信息。,(3)A组控制和B组控制A组控制控制端口A及端口C的高4位。B组控制控制端口B及端口C的低4位。(4)读写控制逻辑读写控制逻辑负责管理8255A的数据传输过程。,10.2.48255A的控制字,1.方式选择控制字方式选择控制字的格式如图10.4所示。,图10.48255A方式选择控制字,假定要求8255A的各个端口工作于如下方式:端口A方式0,输出;端口B方式0,输入;端口C的高4位方式0,输出;端口C的低4位方式0,输入。相应的方式选择控制字应为10000011B(83H)。,在实验系统中8255A控制口的地址为28BH,则执行如下三条指令即可实现上述工作方式的设定。MOVDX,28BHMOVAL,83HOUTDX,AL;将方式选择控制字写入控制口,2.端口C按位置1置0控制字可以用专门的控制字实现对端口C按位置1置0操作,用以产生所需的控制功能,这种控制字就是“端口C按位置1置0控制字”。该控制字的具体格式如图10.5所示。,图10.5端口C按位置1/置0控制字,需要指出的是,端口C按位置1置0控制字是对端口C的操作控制信息,因此该控制字必须写入控制口,而不应写入端口C。控制字的D0位决定是置“1”操作还是置“0”操作,但究竟是对端口C的哪一位进行操作,则决定于控制字中的D3、D2、D1位。,例如,要实现对端口C的PC6位置“0”,则控制字应为00001100B(0CH)。设8255A的控制口地址同上,则执行下列指令即可实现指定的功能:MOVDX,28BHMOVAL,0CH;OUTDX,AL;将“端口C按位置1置0控制字”写入控制口,实现对PC6位置“0”,10.2.58255A的工作方式,1.方式0方式0也叫基本输入输出方式。在这种方式下,端口A和端口B可以通过方式选择控制字规定为输入口或者输出口;端口C分为高4位(PC7PC4)和低4位(PC3PC0)两个4位端口,这两个4位端口也可由方式选择控制字分别规定为输入口或输出口。,这四个并行口共可构成24=16种不同的使用组态。利用8255A的方式0进行数据传输时,由于没有规定专门的应答信号,所以这种方式常用于与简单外设之间的数据传送,如向LED显示器的输出,从二进制开关装置的输入等。,2.方式1,方式1也叫选通的输入输出方式。和方式0相比,最主要的差别就是当端口A和端口B工作于方式1时,要利用端口C来接收选通信号或提供有关的状态信号,而这些信号是由端口C的固定数位来接收或提供的,即信号与数位之间存在着对应关系。这种关系不可以用程序的方法予以改变。,(1)方式1输入当端口A和端口B工作于“方式1输入”时,端口C控制信号定义如图10.11所示。该图中还给出了相应的方式选择控制字。,图10.68255A方式1输入,对于图10.6中所示的控制信号说明如下:STB(Strobe):选通信号,低电平有效。它是由外设送给8255A的输入信号,当其有效时,8255A接收外设送来的一个8位数据。IBF(InputBufferFull):“输入缓冲器满”信号,高电平有效,它是一个8255A送给外设的联络信号。,当IBF为高电平时,表示外设的数据已送进输入缓冲器中,但尚未被CPU取走,通知外设不能送新数据;只有当IBF变为低电平时,即CPU已读取数据,输入缓冲器变空时,才允许外设送新数据。IBF信号是由STB使其置位(变为高电平),而由读信号RD的上升沿使其复位(变为低电平)。,INTR(InterruptRequest):中断请求信号,高电平有效。它是当STB为1、IBF为1且INTE也为1(中断允许)时被置为高电平。当选通信号结束(STB=1),已将一个数据送进输入缓冲器(IBF=1),并且端口处于中断允许状态(INTE=1)时,8255A的INTR端被置为高电平,向CPU发出中断请求信号。当CPU响应中断读取输入缓冲器中的数据时,由读信号RD的下降沿将INTR置为低电平。,INTEA(InterruptEnable):端口A中断允许信号。INTEA没有外部引出端,它实际上就是端口A内部的中断允许触发器的状态信号。INTEA由PC4的置位复位来控制,PC4=1时,使端口A处于中断允许状态。INTEAcontrolledbybitset/resetofPC4,INTEB:端口B中断允许信号。与INTEA类似,INTEB也没有外部引出端,它是端口B内部的中断允许触发器的状态信号。由PC2的置位复位来控制,PC2=1时,使端口B处于中断允许状态。,另外,在方式1输入时,PC6和PC7两位还闲着未用。如果要利用它们,可用方式选择控制字中的D3位来设定。方式1输入工作时序图如图10.7所示。,图10.7方式1输入工作时序图,来自外设的输入数据,_STB,IBF,INTR,_RD,tRIB,tST,tSIB,TSIT,tRIT,tPS,tPH,表10-2方式1输入工作时序图参数说明,(2)方式1输出当端口A和端口B工作于方式1输出时,方式选择控制字及相应的端口C控制信号定义如图10.8所示。,图10.88255A方式1输出,INTEA,PC7PC6,PC4,5,2,I/O,_OBFAACKA,PA7PA0,_WR,PC3,D7D0,INTRA,方式1输出(端口A),INTEB,PC1PC2,_OBFBACKB,PB7PB0,_WR,PC0,D7D0,INTRB,方式1输出(端口B),对图10.8中所示的控制信号说明如下:OBF(OutputBufferFull):“输出缓冲器满”信号,低电平有效,它是8255A输出给外设的一个控制信号。当其有效时,表示CPU已经把数据输出给指定端口,通知外设把数据取走。它是由写信号WR的上升沿置成有效(低电平),而由ACK信号的有效电平使其恢复为高电平。,ACK(Acknowledge):外设响应信号,低电平有效。当其有效时,表明CPU通过8255A输出的数据已经由外设接收。它是对OBF的回答信号。INTR(InterruptRequest):中断请求信号,高电平有效。它是8255A的一个输出信号,用于向CPU发出中断请求。INTR是当ACK、OBF和INTE都为“1”时才被置成高电平(向CPU发出中断请求信号);写信号WR的上升沿使其变为低电平(清除中断请求信号)。,INTEA:端口A中断允许信号,由PC6的置位/复位来控制,PC6=1时,端口A处于中断允许状态。INTEB:端口B中断允许信号,由PC2的置位/复位来控制,PC2=1时,端口B处于中断允许状态。另外,在方式1输出时,PC4、PC5两位还闲着未用,如果要利用它们可用方式选择控制字的D3位来设定。,图10.9方式1输出工作时序图,表10-3方式1输出工作时序图参数说明,10.2.68255A的状态字,8255A工作于方式1和方式2时的状态字是通过读端口C的内容来获得的。1.方式1状态字格式方式1状态字格式如图10.11所示。,图10.11方式1状态字格式,2.方式2状态字格式方式2的状态字也是从端口C读取。方式2状态字的格式如图10.12所示。,图10.12方式2状态字格式,10.2.78255A应用举例,例10.18255A工作于方式0,利用8255A将外设开关的二进制状态从端口A输入,经程序转换为对应的LED段选码(字形码)后,再从端口B输出到LED显示器。具体连线图如图10.13(a)所示。LED显示器如图10.13(b)所示。,图,10.138255,A,的应用,地,址,译,码,地址,CPU,(8088),RD,WR,A,0,A,1,_,_,D,7,D,0,8255,A,RD,WR,A,0,A,1,_,_,PA,0,PA,1,PA,2,PA,3,PB,0,PB,1,PB,2,PB,3,PB,4,PB,5,PB,6,PB,7,+5,V,2,K,4,K0,K1,K2,K3,a,b,c,d,e,f,g,h,+5,V,120,74,LS04,LED,(,a),连线图,地,址,译,码,地址,CPU,(8088),RD,WR,A,0,A,1,_,_,D,7,D,0,8255,A,RD,WR,A,0,A,1,_,_,PA,0,PA,1,PA,2,PA,3,PB,0,PB,1,PB,2,PB,3,PB,4,PB,5,PB,6,PB,7,+5,V,2,K,4,K0,K1,K2,K3,设8255A的端口地址为:端口AD0H,端口BD1H,端口CD2H,控制口D3H。则本例的初始化及输入、输出控制程序如下所示。,DATASEGMENTSSEGCODEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,67H,77H,7CH,39H,5EH,79H,71HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,90H;设置方式选择控制字,A口工作于方式0输入,B口工作于方式0输出OUT0D3H,ALRDPORTA:INAL,0D0H;读A口ANDAL,0FH;取A口低4位MOVBX,OFFSETSSEGCODE;取LED段选码表首地址XLAT;查表,AL(BX+AL),OUT0D1H,AL;从B口输出LED段选码,显示相应字形符号MOVAX,XXXXH;延时DELAY:DECAXJNZDELAY;MOVAH,1;判断是否有键按下INT16HJZRDPORTA;若无,则继续读端口AMOVAH,4CH;否则返回DOSINT21HCODEENDSENDSTART,例10.28255A工作于方式0,用8255A作为以查询方式工作的打印机接口,如图10.14所示。,图10.148255A作为打印机接口,工作原理为:当主机开始打印输出时,先测试打印机忙(BUSY)信号,如果打印机处于忙状态,则BUSY信号为1;反之,则BUSY信号为0。当检测到BUSY信号为0时,则主机可通过8255A向打印机输出一个字符。此时,还需输出一个选通信号(负脉冲)给打印机的STB端,用此负脉冲作为字符送到打印机输入缓冲器的打入脉冲。,用8255A的端口A作为打印输出数据口,工作于方式0;端口B不用;端口C也工作于方式0,端口C的PC2作为BUSY信号输入端,所以PC3PC0应设定为输入方式;PC6作为选通信号输出端,所以PC7PC4应设定为输出方式。设打印字符存放在内存2000H单元。8255A的端口地址为:端口AD0H,端口BD1H,端口CD2H,控制口D3H则初始化及打印控制子程序如下所示:,BEGIN:MOVAL,81H;方式选择控制字,使A、B、C三个端口工作于方式0,OUT0D3H,AL;端口A为输出,PC7PC4为输出,PC3PC0为输入MOVAL,0DH;用“端口C按位置1/置0控制字”置PC6=1,使STB为高电平OUT0D3H,ALTESBY:INAL,0D2H;读端口CTESTAL,04H;测试PC2(BUSY)JNZTESBY;如PC2=1(BUSY信号有效)打印机处于忙状态,继续查询MOVAL,DS:2000H;PC2=0(BUSY信号无效),取打印字符OUT0D0H,AL;由端口A输出打印字符MOVAL,0CH;用“端口C按位置1/置0控制字”置PC6=0,使STB为低电平OUT0D3H,ALINCALOUT0D3H,AL;置PC6=1,再使STB为高电平,从而产生一个负选通脉冲信号RET,第10章作业,10.110.210.410.510.710.1110.1210.1310.14,P245习题10.13解:程序流程框图:初始化及有关控制程序,图10.16交通灯控制,8255APC0PA2PA1PA0PB2PB1PB0,接系统总线,KRYGRYG(开关),主道灯,副道灯,
展开阅读全文