数字量输入输出并行通信_第1页
数字量输入输出并行通信_第2页
数字量输入输出并行通信_第3页
数字量输入输出并行通信_第4页
数字量输入输出并行通信_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字量输入输出并行通信第1页,共58页,2023年,2月20日,星期六并行数据传输方式以计算机的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据适合于外部设备与微机之间进行近距离、大量和快速的信息交换例如:微机与并行接口打印机、磁盘驱动器微机系统中最基本的信息交换方法例如:系统板上各部件之间,接口电路板上各部件之间第2页,共58页,2023年,2月20日,星期六8255A的基本性能Intel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。第3页,共58页,2023年,2月20日,星期六8255引脚图D0D1D2D3D4D5D6D7PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7RDWRA0A1RESETCS825534333231302928275369835643214039383718192021222324251415161713121110第4页,共58页,2023年,2月20日,星期六8255A的内部结构和引脚数据总线缓冲器内部控制线内部数据线D0~D7A组控制A组端口AA组端口C上部B组控制B组端口BB组端口C下部PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESET读写控制逻辑第5页,共58页,2023年,2月20日,星期六8255A内部结构由以下四部分组成:数据端口A、B、C;A组控制和B组控制;读/写控制逻辑电路;数据总线缓冲器。第6页,共58页,2023年,2月20日,星期六三个相互独立的输入/输出通道8255A具有三个相互独立的输入/输出通道:通道A、通道B、通道CA,B,C三通道可以联合使用,构成单线、双线或三线联络信号的并行接口。此时C口完全服务于A、B口。A口有三种工作方式:方式0、方式1、方式2。B口有两种工作方式:方式0、方式1。第7页,共58页,2023年,2月20日,星期六8255A的工作方式方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路方式1:选通输入输出方式适用于查询和中断方式的接口电路方式2:双向选通传送方式适用于与双向传送数据的外设适用于查询和中断方式的接口电路第8页,共58页,2023年,2月20日,星期六8255A的三个端口端口A:包括一个8位的数据输出锁存/缓冲器和一个8位的数据输入锁存器,可作为数据输入或输出端口,并工作于三种方式中的任何一种。

端口B:包括一个8位的数据输出锁存/缓冲器和一个8位的数据输入缓冲器,可作为数据输入或输出端口,但不能工作于方式2。

端口C:包括一个8位的数据输出锁存/缓冲器和一个8位的数据输入缓冲器,可在方式字控制下分为两个4位的端口(C端口上和下),每个4位端口都有4位的锁存器,用来配合端口A与端口B锁存输出控制信号和输入状态信号,不能工作于方式1或2。第9页,共58页,2023年,2月20日,星期六A组和B组控制的作用A组和B组控制的作用如下:A组控制逻辑控制端口A及端口C的上半部;B组控制逻辑控制端口B及端口C的下半部。第10页,共58页,2023年,2月20日,星期六C端口置1置0控制字端口C的数位常常作为控制位来使用,所以,在设计8255A芯片时,应使端口C中的各位可以用置1置0控制字来单独设置。说明:C端口置1置0控制字尽管是对端口C进行操作,但此控制字必须写入控制口,而不是写入C端口.第11页,共58页,2023年,2月20日,星期六8255内部寄存器选择/CSA1A0/RD/WR000A口->数据总线数据总线->A口001B口->数据总线数据总线->B口010C口->数据总线数据总线->C口011数据总线->控制寄存器第12页,共58页,2023年,2月20日,星期六写入方式控制字:控制字格式方式选择控制字1D6D5D4D3D2D1D0A组方式选择00=方式001=方式110=方式2端口A1=输入0=输出端口C(上半部)1=输入0=输出B组方式选择0=方式01=方式1端口B1=输入0=输出端口C(下半部)1=输入0=输出第13页,共58页,2023年,2月20日,星期六写入方式控制字:示例要求:A端口:方式1输入C端口上半部:输出,C口下半部:输入B端口:方式0输出方式控制字:10110001B或B1H初始化的程序段:

movdx,2A3h ;假设控制端口为2A3H moval,0b1h ;方式控制字

outdx,al ;送到控制端口第14页,共58页,2023年,2月20日,星期六端口C的位控制字位控制字写入控制端口特别便于置位复位内部中断允许触发器INTE端口C按位置/复位控制字0D6D5D4D3D2D1D01=置位0=复位D7D6D5D4D3D2D1D0

11110000

11001100

10101010C端口位选择第15页,共58页,2023年,2月20日,星期六关于端口C(1)C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出在控制上,C端口上半部和A端口编为A组,C端口下半部和B端口编为B组当A和B端口工作在方式1或方式2时,C端口的部分引脚将被征用,其余引脚仍可设定工作在方式0第16页,共58页,2023年,2月20日,星期六对端口C的数据输出有两种办法通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效通过控制端口:向C端口写入位控字,使C端口的某个引脚输出1或0,或置位复位内部的中断允许触发器关于端口C(2)第17页,共58页,2023年,2月20日,星期六读取的C端口数据有两种情况未被A和B端口征用的引脚:将从定义为输入的端口读到引脚输入信息;将从定义为输出的端口读到输出锁存器中的信息被A和B端口征用作为联络线的引脚:将读到反映8255A状态的状态字关于端口C(3)第18页,共58页,2023年,2月20日,星期六端口C的状态字方式1输入×××INTRAINTE2IBFAINTE1OBFAINTRBOBFBINTEBINTRAI/OI/OINTEAOBFA方式2双向方式1输出INTRBIBFBINTEBINTRAINTEAIBFAI/OI/OD0D1D2D3D4D5D6D7A组B组第19页,共58页,2023年,2月20日,星期六方式0方式0是一种基本输入或输出方式,它适用于无需握手信号的简单输入输出应用场合,端口A、B、C都可作为输入或输出数据使用,输出有锁存而输入无锁存。第20页,共58页,2023年,2月20日,星期六方式0输入时序datadata输入端口D0~D7RD

CS,A1,A0第21页,共58页,2023年,2月20日,星期六方式0输出时序WRdatadata输出端口D0~D7

CS,A1,A0第22页,共58页,2023年,2月20日,星期六方式1方式1也称选通的输入/输出方式。在这种方式下,无论是输入还是输出都通过应答关系实现,这时端口A或B用作数据口,端口C的一部分引脚用作握手信号线与中断请求线。第23页,共58页,2023年,2月20日,星期六若端口A工作于方式1,则B可工作于方式0;若端口B工作于方式1,则A可工作于方式0或余下的13位可工作于方式0;若端口A和B同时工作于方式1,端口C余下的两位还可用于传送数据或控制信号。方式1第24页,共58页,2023年,2月20日,星期六方式1输入引脚:A端口数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据PC4PC5PC3PA7~PA0INTEAIBFAINTRASTBA中断允许触发器第25页,共58页,2023年,2月20日,星期六方式1输入引脚:B端口PC2PC1PC0PB7~PB0INTEBIBFBINTRBSTBB数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据中断允许触发器第26页,共58页,2023年,2月20日,星期六方式1输入联络信号STB*——选通信号,低电平有效由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器IBF——输入缓冲器满信号,高电平有效8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器INTR——中断请求信号,高电平有效8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据第27页,共58页,2023年,2月20日,星期六方式1输入时序INTRIBF输入端口D0~D7STBRDdatadata第28页,共58页,2023年,2月20日,星期六方式1的输入过程1、当输入设备已准备好一个新数据时,首先检测IBF线的状态,若为低(表示输入锁存器"空"),则输入设备将数据放入PA7--PA0。2、然后发出选通信号STB,STB将PA7--PA0上的数据置入数据锁存器,这时8255A使IBF有效,指示输入锁存器已"满"。3、STB变为无效后,8255A使INTR由低变高,通过8259A向CPU发出中断请求,CPU响应请求并进入相应的中断服务程序。4、在中断服务程序中,CPU读端口A,RD的下降沿使INTR无效。5、RD的上升沿使IBF变无效,指示输入锁存器的数据已传送给CPU,处于"空"状态,准备接收新的数据。第29页,共58页,2023年,2月20日,星期六方式1输出引脚:A端口外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据PC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA中断允许触发器第30页,共58页,2023年,2月20日,星期六方式1输出引脚:B端口PC2PC1PC0PB7~PB0INTEBOBFBINTRBACKB外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据中断允许触发器第31页,共58页,2023年,2月20日,星期六方式1输出联络信号OBF*——输出缓冲器满信号,低有效8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走ACK*——响应信号,低有效外设的响应信号,指示8255A的端口数据已由外设接受INTR——中断请求信号,高有效当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据第32页,共58页,2023年,2月20日,星期六方式1输出时序datadataINTR输出端口D0~D7WROBFACK第33页,共58页,2023年,2月20日,星期六方式1的输出过程1、以端口A为例,当输出设备接收了前一次数据 后,8255A通过8259A向CPU请求中断。2、在中断服务程序中,CPU将数据写入指定的端口,WR变为有效,于是数据写入输出锁存器并出现在PA7--PA0。3、写信号WR的上升沿使OBF变为有效,指示输出设备PA7--PA0上,已有新的数据,同时还使INTR变为 无效。4、在PA7--PA0上输出数据。5、输出设备接收到数据后,向8255A发回ACK信号,ACK的上升沿通常表示输出设备已准备好再接收新的数据。6、8255A在ACK出现上升沿之前使OBF变为无效,若INTE=1,则还使INTR变为有效,再次请求中断。第34页,共58页,2023年,2月20日,星期六关于方式1中断控制8255A的中断由中断允许触发器INTE控制置位允许中断,复位禁止中断对INTE的操作通过写入端口C的对应位实现,INTE触发器对应端口C的位是作应答联络信号的输入信号的哪一位,只要对那一位置位/复位就可以控制INTE触发器选通输入方式下端口A的INTEA对应PC4端口B的INTEB对应PC2第35页,共58页,2023年,2月20日,星期六方式2:双向方式方式2将方式1的选通输入输出功能组合成一个双向数据端口,可以发送数据和接收数据只有端口A可以工作于方式2,需要利用端口C的5个信号线,其作用与方式1相同方式2的数据输入过程与方式1的输入方式一样方式2的数据输出过程与方式1的输出方式有一点不同:数据输出时8255A不是在OBF*有效时向外设输出数据,而是在外设提供响应信号ACK*时才送出数据第36页,共58页,2023年,2月20日,星期六方式2双向引脚PC6PC7PC3PA7~PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2用PC6设置INTE1(输出)用PC4设置INTE2(输入)输入和输出中断通过或门输出INTRA信号第37页,共58页,2023年,2月20日,星期六方式2双向时序data-outdata-outdata-indata-inINTRPA0~PA7D0~D7IBFWROBFACKSTBRD第38页,共58页,2023年,2月20日,星期六应用举例1:用8255A方式0与打印机接口BUSYDATA0~78255APC7PC2PA0~PA7打印机STROBE第39页,共58页,2023年,2月20日,星期六打印机接口的信号主机把数据送给引脚DATA0~DATA7同时送出数据选通信号STROBE*打印机在BUSY信号线上发出“忙”信号打印机处理好输入的数据时,撤消“忙”信号第40页,共58页,2023年,2月20日,星期六打印机接口时序BUSYDATA0~7ACKSTROBE第41页,共58页,2023年,2月20日,星期六8255A的初始化movdx,0fffeh;控制端口地址moval,10000001B;方式控制字:91Houtdx,al;A端口方式0输出,C端口上输出、下输入moval,00001111B;端口C的复位置位控制字,使PC7=1outdx,al第42页,共58页,2023年,2月20日,星期六打印子程序:查询printc

proc pushax pushdxprn: movdx,0fffch

;读取端口C

inal,dx

;查询打印机状态

andal,04h

;PC2=BUSY=0?

jnzprn

;PC2=1,打印机忙,则循环等待第43页,共58页,2023年,2月20日,星期六打印子程序:输出movdx,0fff8h;PC2=0,打印机不忙,则输出数据moval,ahoutdx,al

;将打印数据从端口A输出第44页,共58页,2023年,2月20日,星期六打印子程序:打印movdx,0fffeh

;从PC7送出控制低脉冲moval,00001110B

;置STROBE*=0outdx,alnop

;产生一定宽度的低电平nopmoval,00001111B

;置=1outdx,al第45页,共58页,2023年,2月20日,星期六打印子程序:返回

popdx popax retprintc endp第46页,共58页,2023年,2月20日,星期六用8255A方式1与打印机接口1000pf2K15321441LS123单稳电路+5VDATA0~78255APC6INTRPC3PC7PA0~PA7打印机ACKACKOBFSTROBE第47页,共58页,2023年,2月20日,星期六8255A方式1与打印机接口时序配合PA0~PA7(DATA0~7)ACKOBFSTROBE第48页,共58页,2023年,2月20日,星期六8255A的初始化movdx,0fffeh;控制口地址=0fffehmoval,0a0h;控制字10100000outdx,almoval,0ch;00001100使INTEA(PC6)为0,禁止中断outdx,al……movcx,counter

;打印字节数送CXmovbx,offsetbuffer

;取字符串首地址callprints

;调用打印子程序第49页,共58页,2023年,2月20日,星期六打印子程序:输出prints

proc pushax

;保护寄存器

pushdxprint1:

moval,[bx]

;取一个数据

movdx,0fff8h outdx,al

;从端口A输出第50页,共58页,2023年,2月20日,星期六打印子程序:查询

movdx,0fffchprint2:

inal,dx testal,80h

;检测(PC7)为1否?

jzprint2

;为0,说明打印机没有响应,继续检测第51页,共58页,2023年,2月20日,星期六打印子程序:返回

incbx

;为1,说明打印机已接受数据

loopprint1

;准备取下一个数据输出

popdx

;打印结束,恢复寄存器

popax ret

;返回prints

endp第52页,共58页,2023年,2月20日,星期六8255内部寄存器选择/CSA1A0/RD/WR000A口->数据总线数据总线->A口001B口->数据总线数据总线->B口01

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论