并行接口技术•并行接口简介•8255A可编程并行接口•并行接口应用设计并行接口简介并行接口——计算机的并行接口(LPT)是指采用并行传输方式进行数据传输的接口标准。其种类有:简单并行寄存器(74LS273)、可编程通用并行接口(8255A)、复杂并行接口(SCSI、IDE)。并行接口的特性——•数据宽度:并行传输数据的位数(8位、16位等);•接口控制线:实现并行数据传输的协调。PC机并行接口——一般PC机标准配置1-2个并行接口,接口外部形状是一个D型25针的孔型端子,内含有数据口、控制口、状态口3部分,使用3个8位数出锁存/输入缓冲器组成,分别占3个端口地址;提供8位TTL数据输出、5位数据输入及4位双向信号线。并行接口主要用来连接打印机或双机并行通信。8255A可编程并行接口并行接口的应用范围——各种外部设备(显示器、键盘、打印机、硬盘、CD-ROM、扫描仪等)的接口电路都配有并行接口电路,各种驱动控制(电机、数据采集、数字和模拟开关等)也都用到并行接口。8255A简介——是Intel系列的可编程通用并行接口电路,具有2个8位输入/输出端口(A口、B口)和2个4位(C口高/低4位)输入/输出端口;芯片为40脚双列直插式大规模集成电路,使用+5V电源,专为Intel系列微处理器设计,不需要附加外部电路,即可与Intel系列微处理器及外部设备直接连接。8255A结构内部结构——内有与外设连接的A、B、C数据端口;与处理器连接的读/写控制逻辑和数据总线缓冲器及A组、B组控制。引脚信号——整个引脚分为两部分:1.与外设连接部分引脚信号:PA7~PA0:A口数据信号PB7~PB0:B口数据信号PC7~PC0:C口数据信号2.与处理器连接部分引脚信号:D7~D0:系统总线数据信号RESET:芯片复位信号(输入),此信号有效,8255A内部所有寄存器被清除,数据端口被设为输入端口。CS:片选信号,低有效。由系统高位地址译码输出选择;A1、A0:8255A内部端口寻址信号,可选择内部3个数据端口及一个控制端口。RD,WR:系统对8255A的读/写控制信号,低有效。8255A端口地址分配如下表:8255A的工作模式控制字——8255A有2个控制字端口,分别是:1.方式选择控制字:提供编程来选择8255A的工作方式及3个数据端口的输入输出方向。使用8255A前必须设置该控制字,此过程称为对8255A的初始化。8255A的工作模式2.端口C置1/置0控制字:单独对C口的位设置,达到让这些位作为控制位使用。说明:上述控制字共用一个端口地址,为了内部区分,2个控制字的最高位为标志位:D7=1对应方式选择控制字;D7=0对应端口C置1/置0控制字。工作方式——8255A有三种工作方式:1.方式0:基本输入输出方式。A、B、C口皆可工作在此方式,三个端口输入不锁存,输出锁存;其控制可采用无条件传送方式或查询传送方式;在查询方式下,可选用C口的任意位充当查询状态位。例如,设8255A的控制寄存器的端口地址为80H,若要求PA和PB口工作于方式0,PA口、PB口和PC口的上半部分(高4位)作为输入,PC口的低4位为输出,怎样设置方式选择控制字?PA和PB为数据口,而PC口的大部分引脚作专用的联络信号各联络信号线之间有固定的时序关系,传送时,要严格按时序进行输入/输出操作过程中,产生固定的状态字,这些状态字可作为查询或中断请求字用。状态字从PC口读取。方式1为选通输入输出方式,需要专用的联络信号线,该方式通常用于查询(条件)传送,数据的输入输出均有能力单向传送2.方式1:选通输入输出方式方式1将三个端口分为A、B两组:端口A与端口C中的3位为A组;端口B与端口C中的其它3位为B组;A口、B口输入及输出都锁存;C口与A口、B口配合关系见下图。(1)端口A方式1作输入:数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据PC4PC5PC3PA7~PA0INTEAIBFAINTRASTBA中断允许触发器PC2PC1PC0PB7~PB0INTEBIBFBINTRBSTBB数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据中断允许触发器端口B方式1作输入:方式1输入联络信号定义STB*——选通信号,低电平有效由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器IBF——输入缓冲器满信号,高电平有效8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器INTR——中断请求信号,高电平有效8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据INTE——中断允许信号,高电平有效用于控制中断允许或中断屏蔽输入:STBA=PC4,IBFA=PC5,INTEA=PC4STBB=PC2,IBFB=PC1,INTEB=PC2INTR=INTEIBF上述信号的时序关系:STB先有效,之后IBF有效,IBF有效后使STB无效;若初始化设置INTE允许(PC4/PC2=1),则IBF有效后即可使INTR有效,中断请求信号发出;进入中断读数据指令产生RD有效信号,该有效信号使INTR无效,RD信号结束使IBF无效。(2)8255A工作在方式1下的输入时序(3)端口A方式1作输出:外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据PC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA中断允许触发器端口B方式1作输出:PC2PC1PC0PB7~PB0INTEBOBFBINTRBACKB外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据中断允许触发器方式1输出联络信号OBF*——输出缓冲器满信号,低有效8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走ACK*——响应信号,低有效外设的响应信号,指示8255A的端口数据已由外设接受INTR——中断请求信号,高有效当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据(4)8255A工作在方式1下的输出时序输出:OBFA=PC7,ACKA=PC6INTEA=PC6OBFB=PC1,ACKB=PC2,INTEB=PC2INTR=INTEOBF上述信号的时序关系:若初始化设置INTE允许(PC6/PC2=1),当OBF无效时,即可使INTR有效,产生中断请求;进入中断服务,执行输出指令,产生WR有效信号,WR信号结束使OBF有效,使INTR无效;OBF有效后,使ACK有效;ACK有效后使OBF无效,ACK结束使INTR有效。并行接口应用设计例18255A方式0无条件传输应用。使用8位开关电路,8位发光二极管和一个8255A芯片。通过开关状态控制发光二极管的亮与灭。端口A做输入,检测开关状态;端口C做输出,控制发光二极管的亮与灭。解:电路连接:8255AD7-D0K7-K0A1A0IORL7-L0IOW288H-D7-D0PA7-0A1A0RDPC7-0WRCS设8255A端口地址为:288~28BH,程序如下:D8255AEQU288HD8255BEQU289HD8255CEQU28AHD8255DEQU28BHCODESEGMENTASSUMECS:CODEBEGIN:MOVAL,10010000B;A口方式0输入,MOVDX,D8255D;C口输出OUTDX,ALSCAN:MOVDX,D8255A;从A口读入开关状态INAL,DXNOPMOVDX,D8255C;经C口输出至灯OUTDX,ALJMPSCAN;继续CODEENDSENDBEGIN例2:如图所示,设8255A端口地址为2F80H~2F83H,编程设置8255AA组、B组均工作于模式0,A口输出,B口输出,C口高4位输入,低4位输出。然后,读入开关S的状态,若S打开,则使发光二极管熄灭;若S闭合,则使发光二极管点亮。PB6PC58255A+5VS编程过程:MOVAL,88HMOVDX,2F83HOUTDX,ALMOVDX,2F82HINAL,DXTESTAL,20HJZL1;条件成立时PC5=0,S闭合MOVAL,0JMPEND1L1:ORAL,40HEND1:MOVDX,2F81HOUTDX,ALHLT例38255A方式0查询应用:8255A做打印机接口。处理器以查询方式控制输出数据到打印机:8255A将数据输出后,送出STROBE信号启动打印机,打印机用此信号将数据锁存,同时发出BUSY信号给8255A,表示正在打印,当打印完成,则将BUSY信号撤销,处理机可查询BUSY信号决定下一次输出数据。硬件电路:PA0~PA7PC7STROBEPC2BUSY8255A打印机设8255A端口地址为:2A8H~2ABH,将BUF缓冲区中字符串逐个送打印机打印,查询控制程序见下:DATASEGMENTBUFDB‘Hellothestudents!’COUNTEQU$-BUFDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETBUFMOVCX,COUNTMOVAL,10000001B;8255A口方式0输出,MOVDX,2ABH;C口高位输出,低位输入OUTDX,ALAGAIN:MOVAL,00001111B;使PC7=1,即设置STROBE=1OUTDX,ALMOVDX,2AAHSCAN:INAL,DX;读入C口数据TESTAL,04H;查询PC2(BUSY)=1?JNZSCAN;=1,继续查询MOVAL,[SI];=0,则输出字符数据MOVDX,2A8HOUTDX,ALMOVAL,00001110B;使PC7=0,即;设置STROBE=0MOVDX,2ABHOUTDX,ALINCSILOOPAGAINJMP$CODEENDSENDSTART