




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章可编程并行接口芯片Intel8255A,9.18255A的工作原理9.1.1功能Intel8255A是一个通用的可编程的并行接口芯片,内部有2个8位I/O口(PA、PB),两个4位I/O口(PC74、PC30).通过编程可设置3种工作方式,可适用于CPU与I/O设备之间的多种数据传送方式的要求。C口可作为数据口,可作为信号线(CPU与I/O设备之间的应答信号),可作为状态口,可按位置位/复位。价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。,9.1.28255A的内部结构和管脚引脚(DIP40)(1)D0D7:8位,双向,三态数据线,用来与系统数据总线相连;(2)端口A、B、C:PA0PA7(端口A,用来连接外设);PB0PB7(端口B,用来连接外设);PC0PC7(端口C,用来连接外设或者作为控制信号)。(3)CS、RESET、WR、RD、A1、A0(内部4个端口)。(4)VCC、GND。,2.内部结构,1三个数据端口A,B,C三个端口均可看作I/O口,但它们的结构和功能稍有不同。A口:是一个独立的8位I/O口,它的内部有对数据输入/输出的锁存功能。可编程实现8位输入、输出或双向传送。B口:也是一个独立的8位I/O口,仅对输出数据的锁存功能。可编程实现8位输入、输出,但不能实现双向传送。C口:可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口(用于输入、输出),也是仅对输出数据进行锁存。可按位置位/复位。也可作为A口(C口的高5位)、B口(C口的低3位)选通或双向传送的状态、控制信号。,2.A组和B组的控制电路这是两组根据CPU命令控制8255A工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对C口的指定位进行置/复位的操作。A组控制电路用来控制A口及C口的高4位;B组控制电路用来控制B口及C口的低4位。3.数据总线缓冲器8位的双向的三态缓冲器,与系统总线相连,输入/输出的数据,CPU的编程命令以及外设通过8255A传送的工作状态等信息,都是通过它来传输的。4读/写控制逻辑读/写控制逻辑电路负责管理8255A的数据传输过程。它接收片选信号及系统读信号、写信号、复位信号RESET,还有来自系统地址总线的口地址选择信号A0和A1,8255A的操作功能表CSRDWRA1A0操作数据传送方式00100读A口A口数据数据总线00101读B口B口数据数据总线00110读C口C口数据数据总线01000写A口数据总线数据A口01001写B口数据总线数据B口01010写C口数据总线数据C口01011写控制口数据总线数据控制口1无效数据总线进入高阻,9.1.38255A的编程命令8255A的编程包括两个内容:工作方式控制字设置,C口的按位置位/复位功能。这两个命令均写入控制端口(A1A0=11),用特征位D7区分,D7=1,为工作方式控制字,D7=0,为C口的按位置位/复位。1.工作方式控制命令字控制字要写入8255A的控制口,写入控制字之后,8255A才能按指定的工作方式工作。,工作方式控制命令字格式,A口:3种工作方式(0、1、2)B口:2种工作方式(0、1)C口:分成两个4位端口,除了可以用作输入输出端口外,还能用来配合A口和B口工作,提供联络信号。8255有3个8位并行口(2个8位口,2个4位口)例1某系统要求使用8255A的A口方式0输入,B口方式0输出,C口高4位方式0输出,C口低4位方式0输入。设8255的口地址为60H-63H。则控制字为:10010001即91H初始化程序为:MOVAL,91HOUT63H,AL,2.C口的置位/复位功能只有C口才有,它是通过向控制口写入按指定位置位/复位的控制字来实现的。C口的这个功能可用于设置方式1的中断允许,可以设置外设的启/停等。可以产生矩形波或方波。功能:指定PC口的某一位(某一个引脚)输出高电平或低电平。,例2:一片8255A的口地址为60H63H,PC5平时为低电平,要求编程使从PC5引脚输出一个正脉冲。MOVAL,00001011BMOV63H,AL;PC5为高电平MOVAL,00001010BMOV63H,AL;PC5为低电平注:C口的置位/复位命令写入命令口,不能写入C口。,9.1.48255A的工作方式8255A有三种工作方式,可以通过编程来设置。方式0:简单输入/输出查询方式;A,B,C端口均可。方式1:选通输入/输出中断方式;A,B,两个端口均可。方式2:双向输入/输出中断方式。只有A端口才有。工作方式的选择可通过向控制端口写入控制字来实现。1.方式0一种简单的输入/输出方式,无需应答联络信号。A,B,C三个口都可工作在这种方式下,可以通过方式选择命令字定义他们是作为输入还是作为输出。这些端口与CPU交换数据时,可直接使用输入输出指令从指定端口读取或写入数据。比如PA口地址为60H,CPU可通过指令直接读取或写入数据:INAL,60H|OUT60H,AL,2.方式1方式1是一种选通I/O方式,A口和B口仍作为两个独立的8位I/O数据通道,可单独连接外设,通过编程分别设置它们为输入或输出。而C口则要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可工作在方式0,可通过编程设置为输入或输出。(1)方式1的输入组态和应答信号的功能下图给出了8255A的A口和B口方式1的输入组态。,C口的PC3PC5用作A口的应答联络线,PC0-PC2则作用B口的应答联络线,余下的PC6PC7则可作为方式0使用。应答联络线的功能如下:STB:选通输入。用来将外设输入的数据从PA口或PB口写入8255A的输入缓冲器。IBF:输入缓冲器满。作为STB的回答信号。CPU读取数据后将其复位。INTR:中断请求信号,向CPU发出中断请求。INTR置位的条件是STB=1且IBF=1且INTE=1。,INTE:中断允许。无外部引脚。对A口来讲,是由PC4置位来实现,对B口来讲,则是由PC2置位来实现。事先通过C口置位/复位命令字将其置位。输入过程:外设准备好数据放在端口数据线上外设向8255发STB将数据输入8255IBF=1,输入缓冲器满(在INTE=1,中断允许时)INTR=1,向CPU提出中断申请CPU在允许的情况下相应中断转入中断服务,将输入缓冲器的数据取走,同时,清INTR,IBF=0,输入缓冲器空,允许外设输入数据。,方式1的输出组态和应答信号功能CPU通过8255向外设发送数据,C口的PC3、PC6、PC7用作A口的应答联络线,PC0-PC2则作用B口的应答联络线,余下的PC4PC5则可作为方式0使用。应答联络线的功能如下:OBF:输出缓冲器满。当CPU已将要输出的数据送入8255A时有效,用来通知外设可以从8255A取数。收到ACK后恢复为高电平。ACK:响应信号。作为对OBF的响应信号(负脉冲),表示外设已将数据从8255A的输出缓冲器中取走。INTR:中断请求信号。INTR置位的条件是ACK为高且OBF为高且INTE为高。即外设已经取走数据,便向CPU发中断,CPU可以发下一字节的数据了。INTE:中断允许。对A口来讲,由PC6的置位来实现,对B口仍是由PC2的置位来实现。,输出过程:CPU向8255写数据OBF=0,输出缓冲器满外设读完数据ACK=0有效,表明外设已收到数据(在INTE=1时)INTR=1,向CPU提出中断申请CPU在允许时响应中断CPU向8255写下一个数据。(3)选通输入/输出方式组合8255A工作于方式1时,允许对PA口和PB口分别定义其输入输出方向,可以定义一个端口作为输入,另一个端口作为输出。,3方式2方式2为双向选通I/O方式,只有A口才有此方式。这时,C口有5根线用作A口的应答联络信号,其余3根线可用作方式0,也可用作B口方式1的应答联络线。方式2就是方式1的输入与输出方式的组合,各应答信号的功能也相同。而C口余下的PC0PC2正好可以充当B口方式1的应答线,若B口不用或工作于方式0,则这三条线也可工作于方式0。,(1)方式2的组态,(2)方式2的应用场合方式2是一种双向工作方式(半双工),如果一个并行外部设备既可以作为输入设备,又可以作为输出设备,并且输入输出动作不会同时进行。PA口既可输入又可输出。(3)方式2和其它方式的组合方式2和方式0输入的组合:控制字:11XXX01T方式2和方式0输出的组合:控制字:11XXX00T方式2和方式1输入的组合:控制字:11XXX11X方式2和方式1输出的组合:控制字:11XXX10X其中X表示与其取值无关,而T表示视情况可取1或0。,9.1.58255与8086CPU之间的连接电路简单的连接电路如下:,9.28255A接口应用举例9.2.1基本输入/输出8个开关K7K0,要求不断检测它们的通断状态,并随时在发光二极管LED7LED0上显示出来。开关断开,相应的LED点亮;开关合上,LED熄灭。我们选用8086CPU,8255A和74LS138译码器等芯片。,设计8255A的A口作输人口,8个开关K7K0分别接PA7PA0。B口为输出口,PB7PB0分别接显示器LED7LED0。8255A的和RESET引脚分别与CPU的相应输出相连。8255A的数据线D7D0与8086的低8位数据总线D7D0相连,8255A的4个口地址都应为偶地址,A0必须总等于0。当A7A6A5=111,A4A3A0=100时,选中8255A。这样,8255A的4个端的地址分别为F0H、F2H、F4H和F6H,对应于8255A的A口、B口、C口和控制字寄存器。其硬件电路如下图所示。,程序设计:方式选择控制字:A口工作于方式0、输人,B口工作于方式0、输出,C口未用。控制字中与C口对应的位可以被置为0,则控制字为100100000。具体程序如下:MOVDX,0F6H;控制字寄存器MOVAL,10010000B;控制字OUTDX,AL;写人控制字TEST-IT:MOVDX,0F0H;指向A口INAL,DX;从A口读人开关状态MOVDX,0F2H;指向B口OUTDX,AL;B口控制LED,指示开关状态JMPTEST_IT;循环检测如果开关合上,LED点亮;开关断开,LED熄灭;程序该作如何改动?,MOVDX,0F6H;控制字寄存器MOVAL,10010000B;控制字OUTDX,AL;写人控制字TEST-IT:MOVDX,0F0H;指向A口INAL,DX;从A口读人开关状态MOVDX,0F2H;指向B口NOTAL;AL内容取反OUTDX,AL;B口控制LED,指示开关状态JMPTEST_IT;循环检测或使用XORAL,0FFH,9.2.28255外扩打印机例利用8255A的A口方式0与微型打印机相连,将CPU内存缓冲区BUFF中的字符打印输出。试完成相应的软硬件设计。首先我们分析一下打印机的工作。微型打印机和主机之间的接口采用并行接口。,打印机数据传输时序,工作流程:主机将要打印的数据送上数据线,然后发选通信号。打印机将数据读入,同时使BUSY线为高,通知主机停止送数。这时,打印机内部对读入的数据进行处理。处理完以后使ACK有效,同时使BUSY失效,通知主机可以发下一个数据。硬件连线如下图:,说明:由PC0充当打印机的选通信号,通过对PC0的置位/复位来产生选通。同时,由PC7来接收打印机发出的“BUSY”信号作为能否输出的查询。8255A的方式控制字为:10001000即88HA口方式0,输出;C口高位方式0输入,低位方式0输出PC0置位:00000001即01HPC0复位:00000000即00H8255A的4个口地址分别为:60H,61H,62H,63H。,程序如下:DADASEGMENTBUFFDBThisisaprintprogram!,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,START:MOVAX,DATAMOVDS,AXMOVSI,OFFSETBUFFMOVAL,88H;8255A初始化,A口方式0,输出OUT63H,AL;C口高位方式0输入,低位方式0输出MOVAL,01H;C口置位/复位控制字OUT63H,AL;使PC0置位,使选通无效WAIT:INAL,62HTESTAL,80H;检测PC7是否为1,即是否忙JNZWAIT;为忙则等待MOVAL,SICMPAL,$;是否结束符JZDONE;是则输出回车、换行OUT60H,AL;不是结束符,则从A口输出(此时打印机;还不能接收数据)MOVAL,00HOUT63H,AL;使PC0复位,使选通有效,有效后接收数据MOVAL,01HOUT63H,AL;使PC0置位,使选通无效INCSI;修改指针,指向下一个字符JMPWAIT,DONE:MOVAL,0DHOUT60H,AL;输出回车符MOVAL,00HOUT63H,AL;选通有效MOVAL,01HOUT63H,AL;选通无效WAIT1:INAL,62HTESTAL,80H;检测PC7是否为1即是否忙JNZWAIT1;为忙则等待MOVAL,0AHOUT60H,AL;输出换行符MOVAL,00HOUT63H,AL;选通有效MOVAL,01HOUT63H,AL;选通无效MOVAH,4CHINT21HCODEENDSENDSTART,例将上例中8255A的工作方式改为方式1,采用中断方式将BUFF开始的缓冲区中的100个字符从打印机输出。(假设打印机接口仍采用Centronics标准)分析:仍用PC7作为打印机的选通,打印机的回应接PC6,数据口为8255A的A口,8255A的中断请求信号(PC3)接至系统中断控制器8259A的IR3,其它硬件连线同上例,如下页图所示。,PC7,PC6,8255A的控制字为:1010XXXXPC6置位:00001101即0DH,允许8255A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论