您好,欢迎访问三七文档
1微机原理、汇编与接口技术赵敏2011.1128.28.3可编程并行接口8255A可编程计数器/定时器8253串行通信与异步通信控制器8250的应用第八章常用可编程接口芯片8.138.1可编程并行接口8255A8255是为8080,8085和8088微型机系统设计的并行I/O接口芯片。48255的内部组成如图所示8.1.18255的组成与接口信号数据总线缓冲器读/写控制逻辑CSRD0A1ARESETB组控制A组控制A组端口AB组端口BA组端口C上半部B组端口C下半部WR8888884444PA7~PA0PC7~PC4PC3~PC0PB7~PB0D7~D05端口A(PortA)、端口B(PortB)和端口C(PortC)都是8位的端口,都可以选择作为输入或输出。可以将端口C的高4位和低4位分开使用,分别作为输入和输出。端口A和端口B作为选通输入或输出的数据端口时,端口C的指定位与端口A和端口B配合使用,用作控制信号或状态信号。1.端口A、端口B和端口C8.1.18255的组成与接口信号6根据CPU的方式命令字控制8255的工作方式。根据CPU的命令对端口C的每一位实现按位复位或置位。A组控制电路控制端口A和端口C的上半部(PC7~PC4)。B组控制电路控制端口B和端口C的下半部(PC3~PC0)。2.A组和B组控制电路8.1.18255的组成与接口信号7这是一个三态双向的8位缓冲器,它是8255与系统数据总线的接口。输入输出的数据以及CPU发出的命令控制字和外设的状态信息,都是通过这个缓冲器传送的。3.数据总线缓冲器8.1.18255的组成与接口信号8控制把CPU的控制命令或输出数据送至相应的端口,控制把外设的状态信息或输入数据通过相应的端口送至CPU。4.读/写控制逻辑8.1.18255的组成与接口信号9(1)A1、A0端口选择:用来选择A、B、C3个端口和控制字寄存器。通常,它们与PC微机的地址线A1和A0相连。(2)CS选片信号:低电平有效,由它启动CPU与8255之间的通信。通常,它与PC微机地址线的译码电路的输出线相连,并由该译码电路的输出线来确定8255的端口地址。4.读/写控制逻辑8.1.18255的组成与接口信号10(3)RD读信号:低电平有效,它控制8255送出数据或状态信息至系统数据总线。通常,它与PC微机的IOR相连。(4)WR写信号:低电平有效,它控制把CPU输出到系统数据总线上的数据或命令写到8255。通常,它与PC微机的IOW相连。4.读/写控制逻辑8.1.18255的组成与接口信号11(5)RESET复位信号:高电平有效,它清除控制寄存器,并置A、B、C3个端口为输入方式。实验中常用的复位信号产生电路如图所示。4.读/写控制逻辑8.1.18255的组成与接口信号12A1,A0和CS,RD,WR及组合所实现的各种功能如下:8.1.18255的组成与接口信号A1A0操作01000写端口A01001写端口B01010写端口C01011写控制字寄存器00100读端口A00101读端口B00110读端口C00111无操作138255有3种工作方式,由方式选择控制字来选用:(1)方式0(Mode0)--基本输入输出。(2)方式1(Mode1)--选通输入输出。(3)方式2(Mode2)--双向传送。8.1.28255的工作方式与控制字141.方式选择控制字8.1.28255的工作方式与控制字1特征位端口A方式00——方式001——方式11×——方式2端口A输入/输出1——输入0——输出PC3~PC0输入/输出1——输入0——输出端口B方式0——方式01——方式1端口B输入/输出1——输入0——输出PC7~PC4输入/输出1——输入0——输出D7D6D5D4D3D2D1D0特征位D7D6D5D4D3D2D1D0无关×××选择位置位/复位1——置位0——复位000PC0选择位001PC1010PC2011PC3100PC4101PC5110PC6111PC7152.按位置位/复位控制字8.1.28255的工作方式与控制字1特征位端口A方式00——方式001——方式11×——方式2端口A输入/输出1——输入0——输出PC3~PC0输入/输出1——输入0——输出端口B方式0——方式01——方式1端口B输入/输出1——输入0——输出PC7~PC4输入/输出1——输入0——输出D7D6D5D4D3D2D1D0特征位D7D6D5D4D3D2D1D0无关×××选择位置位/复位1——置位0——复位000PC0选择位001PC1010PC2011PC3100PC4101PC5110PC6111PC716如:端口C的bit3(PC3)置位的控制字为00000111B(07H),它复位的控制字为00000110B(06H)。注意:C端口的按位置位/复位控制字须跟在方式选择控制字之后写入控制字寄存器。即使仅使用该功能,也应先选送一方式控制字。8.1.28255的工作方式与控制字17例8.1将8255C端口的8根I/O线接8只发光二极管的正极(八个负极均接地),用按位置位/复位控制字编写使这8只发光二极管依次亮、灭的程序。设8255的端口地址为380H~383H。本程序要使用8255的2个控制字--方式选择字和按位置位/复位字。这2个控制字都写入8255的控制字寄存器,由它们的D7位为1或0来区别写入的字是方式选择字还是置位/复位字。8255的控制字寄存器的端口地址为383H。方式选择字只写入一次,其后写入的都是置位/复位字。8.1.28255的工作方式与控制字188255与PC微机的连接及8255C端口与8只发光二极管的连接如图。19程序框图控制字寄存器的端口地址送间址寄存器写入方式选择字PC0的置位字送AL写入置位字点亮一只发光二极管延时让发光二极管发光改置位字为复位字熄灭发光二极管将PCi的复位字改为PCi+1的置位字11号功能调用检测有无键入有键入吗?NY20stacksegmentstackstackdw32dup(0)stackendscodesegmentbeginprocfarassumess:stack,cs:codepushdssubax,axpushax21MOVDX,383H;383H为控制字寄存器的端口地址MOVAL,80H;方式选择字OUTDX,ALMOVAL,1;PC0的置位控制字AGAIN:OUTDX,AL;点亮一只发光二极管LOOP$;延时LOOP$ANDAL,0FEH;置位字改为复位字OUTDX,AL;熄灭点亮的发光二极管ADDAL,3;PCi→PCi+1,复位字改为下一位的置位字ANDAL,0FH;保持D7为022PUSHAXMOVAH,11;检查键盘有无输入INT21H;无0送AL,有-1送ALINCALPOPAXJNZAGAINretbeginendpcodeendsendbegin23这是一种基本的I/O方式。在这种工作方式下,3个端口都可由程序选定作输入或输出。它们的输出是锁存的,输入是不锁存的。在这种工作方式下,可以由CPU用简单的输入或输出指令来进行读或写。因而当方式0用于无条件传送方式的接口电路时是十分简单的,这时不需要状态端口,3个端口都可作为数据端口。8.1.33种工作方式的功能1.方式024若将例8.1改为C端口方式0输出,则控制程序为:stacksegmentstackstackdw32dup(0)stackendscodesegmentbeginprocfarassumess:stack,cs:codepushdssubax,axpushaxMOVDX,383HMOVAL,80HOUTDX,AL25MOVDX,382H;C端口的端口地址送DXMOVAL,1;C端口的输出值AGAIN:OUTDX,ALLOOP$;延时LOOP$PUSHAXMOVAH,11;11号功能调用:检查键盘有无输入INT21H;无0送AL,有-1送ALINCAL;有键入,AL=-1,AL增1,AL=0POPAXJZBACKROLAL,1;改变C端口的输出值JMPAGAINBACK:retbeginendpcodeendsendbegin26方式0也可作为查询式输入或输出的接口电路,此时端口A和B分别可作为一个数据端口,而取端口C的某些位作为这两个数据端口的控制和状态信息。27这是一种选通的I/O方式。它将3个端口分为A、B两组,端口A和端口C中的PC3~PC5或PC3、PC6、PC73位为A组;端口B和端口C的PC2~PC03位为B组。端口C中余下的两位,仍可作为输入或输出用,由方式控制字中的D3来设定。端口A和B都可以由程序设定为输入或输出。此时端口C的某些位为控制状态信号,用于联络和中断,其各位的功能是固定的,不能用程序改变。2.方式128方式1输入的状态控制信号及其时序关系如图。29(1)STB(strobe)选通信号,低电平有效。这是由外设发出的输入信号,信号的前沿(下降沿),把输入装置送来的数据送入输入缓冲器;信号的后沿(上升沿)使INTR有效(置1)。(2)IBF(inputbufferfull)输入缓冲器满信号,高电平有效。这是8255输出给外设的联络信号。外设将数据送至输入缓冲器后,该信号有效;RD信号的上升沿将数据送至数据线后,该信号无效。30(3)INTR(interruptrequest)中断请求信号,高电平有效。这是8255的一个输出信号,可用作向CPU申请中断的请求信号,以要求CPU服务。当IBF为高和INTE(中断允许)为高时,由STB的上升沿(后沿)使其置为高电平。由RD信号的下降沿(CPU读取数据前)清除为低电平。(4)INTE(interruptenable)中断允许信号,端口A中断允许INTEA可由用户通过对PC4的按位置位/复位来控制。而INTEB由PC2的置位/复位控制。INTE置位允许中断。INTE复位禁止中断。31例8.2用选通输入方式从A端口输入100个8位二进制数。32stacksegmentstackstackdw32dup(0)stackendsdatasegmentBUFDB100DUP(?)dataendscodesegmentbeginprocfarassumess:stack,cs:code,ds:datapushdssubax,axpushax控制程序:33MOVES,AXmovax,datamovds,axMOVDX,38FHMOVAL,0B0HOUTDX,ALMOVAL,9;PC4置1,允许A端口中断OUTDX,ALMOVAX,SEGIS8255;中断程序入口地址送中断向量表MOVES:01C6H,AXMOVAX,OFFSETIS8255MOVES:01C4H,AXMOVCX,100MOVBX,0MOVDX,38CH34INAL,0A1H;读屏蔽字ANDAL,0FDH;改变屏蔽字,允许IRQ9中断OUT0A1H,ALROTT:JMP$LOOPROTTINAL,0A1H;恢复屏蔽字,禁止IRQ9中断ORAL,2OUT0A1H,ALretIS8255:INAL,DXMOVBUF[BX],ALINCBXMOVAL,61H;指定中断结束命令35OUT0A0H,ALMOVAL,62HOUT20H,ALPOPAX;修改返址INCAXINCAXPUSHAXIRETbeginendpcodeendsendbegin
本文标题:微机原理与接口技术
链接地址:https://www.777doc.com/doc-3280990 .html