常见的几种数据传送方式的比较:1.无条件传送:只能用于外部设备与CPU的动作同步时,否则出错。这种方式程序设计较简单,只用在对一些简单外设的操作。2.查询传送:接口及编程都较为简单;但在传送过程中,若外设数据没有准备好,则CPU一直在查询、等待,而不能做其他事情,CPU的效率低下。3.中断传送:只有当外设数据准备好时(向CPU发出请求),CPU才进行数据传送,其余时间CPU可以做其他事情,CPU效率大大提高;但每传送一次数据,CPU都要执行一次中断服务程序,除执行IN和OUT指令外,还要进行保护和恢复断点及某些寄存器等工作,增加了额外开销,从而制约了其传送效率。4.DMA传送:在DMAC的控制下,外设直接和存储器(也可外设与外设,存储器与存储器之间)进行数据传送,而不必经过CPU,从而传送效率大大提高;缺点是硬件电路较为复杂。并行通信在多根传输线上同时传送数据。DnDn-1D0C1C0发送方接收方数据位控制位特点:速度快,但造价高;适合于短距离传送。第八章可编程并行输入/输出接口芯片8255A一、8255A的基本性能Intel8086/8088系列的可编程外设接口电路为8255(改进型为8255A)。具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。8255A具有三个相互独立的输入/输出通道:通道A、通道B、通道C。A组控制逻辑控制端口A及端口C的上半部;A组有0,1,2三种工作方式。B组控制逻辑控制端口B及端口C的下半部,B组只能工作于方式0,1。二、8255A的结构框图(如图8-1所示)从功能上来分,8255A的结构可分为:总线接口电路、内部控制逻辑和输入/输出接口电路。(1)总线接口电路数据总线缓冲器和读/写控制逻辑。(2)内部控制逻辑(3)输入/输出接口电路图8-18255A的结构框图内部数据总线PB7~PB0B组B口(8位)PC3~PC0B组C口(4位)PC7~PC4PA7~PA0A组A口(8位)A组C口(4位)A组控制B组控制D7~D0数据总线缓冲器读/写控制逻辑RDWRA1A0RESETCS8255A的引脚说明8255A是40根引脚,双列直插式芯片。40根引脚的分布图如图8-2所示,这些引脚可分成:(1)与外设连接的引脚(2)与CPU连接的引脚图8-28255A引脚分布图A口B口C口PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7D0D1D2D3D4D5D6D7A0A1CSRDWRRESETVccGND3443333223113040293928382737188255A19920821622523362435251415161713261271110表5-18255A端口选择表例:8255的A1、A0引脚分别接总线的A1、A0,已知8255的A口地址为218H,问B口、C口、控制口地址分别为多少?219H、21AH、21BH三、8255A的编程控制字(1)工作方式控制字:用来设定通道的工作方式及数据的传送方向的。(2)C口按位置位/复位控制字:向控制寄存器写入控制字,而使它的每一位置位或复位。两个控制字的差别:工作方式控制字放在程序的开始部分;按位置位/复位控制字可放在初始化程序以后的任何地方。(1)方式选择控制字8255A有三种基本工作方式:(1)方式0——基本输入输出方式(2)方式1——选通输入输出方式(3)方式3——双向传送方式方式由CPU输出的命令字决定。B(2)C端口置1置0控制字:•端口C的数位常常作为控制位来使用,所以,应使端口C中的各位可以用置1置0控制字来单独设置。注意:C端口置1置0控制字尽管是对端口C进行操作,但此控制字必须写入控制口,而不是写入C端口。四、8255A的工作方式1.方式0-基本的输入或输出方式(重点要求)•三个端口的每一个都可由程序选定作为输出或输入;•没有固定的用于应答的联络信号。故方式0:•可用于无条件传送的接口电路;•也可用于查询式输入输出接口电路,此时,只需将端口C(也可用端口A、端口B)的某些位作为两个数据端口的控制或状态信息。图8-3系统连接图PB7~PB0PA7~PA08位开关8位LED指示灯RESET接系统RESET信号线蜂鸣片按钮8255APC0PC4数据总线D7~D0CS2.方式1-选通的输入/输出方式(了解)方式1是一种选通方式。端口A和端口B仍作为输入输出,端口C的某些位作为选通信号。方式1:•可用作查询式输入\输出接口电路;•也可用于中断式输入\输出接口电路。3.方式2-选通的双向I/O方式此模式置限于A口使用,它在单一的8位总线上实现与I/O设备或外部结构的双向通信。方式2:•可用作查询式输入\输出接口电路;•也可用于中断式输入\输出接口电路。五、应用举例例1:在一系统中,要求8255工作在方式0,从A口输入数据,从B口输出显示,从C口输出显示10101010。设控制口地址为63H。0程序如下:Moval,90hOut63h,al;送控制字到控制字寄存器。Inal,60h;从A口输入数据Out61h,al;从B口输出数据moval,0AAHOut62h,al;从C口输出数据说明:C口还可按位设置例2:打印机驱动接口是一个并行接口,它需要数据口输出数据,控制口用于控制打印机工作,状态口用于测试打印机的现行工作状态。要求用8255芯片设计一个打印机控制接口。用PC2去检测打印机的BUSY信号,PC6产生选通脉冲STB信号,PA口作为输出字符的数据口,工作于方式0。设8255A的端口地址:A端口:80HB端口:81HC端口:82H控制口:83H(1)画出硬件连接原理图。(2)以查询方式编制输出一个字符(设该字符已在BL寄存器中)的程序。8255A作为打印机接口的示意图如下:译码器A0A1IORIOWA0A1RDWRCS工作过程:8255A不断查询打印机的状态,当打印机为忙状态,8255A处于查询等待状态。当打印机为空闲状态时,CPU通过8255A向打印机输出一个字符。复位PC6:00001100(0CH)置位PC6:00001101(0DH)MOVAL,0DH;设按位置位/复位控制字OUT83H,AL;置PC6=1,使选通无效具体程序段如下:MOVAL,81H;(控制字若为83H也对)OUT83H,AL;送控制字MOVAL,0DH;设按位置位/复位控制字OUT83H,AL;置PC6=1,使选通无效WAIT:INAL,82H;读C口状态TESTAL,04H;测试BUSY状态(PC2)JNZWAIT;忙,循环测试MOVAL,BL;不忙,取打印字符OUT80H,AL;送A口MOVAL,0CH;设按位置位/复位控制字OUT83H,AL;置PC6=0,选通打印机INCALOUT83H,AL;置PC6=1总结掌握可编程输入/输出接口芯片8255A的应用及编程方法(方式0,硬件电路,程序)。练习1:设8255的端口地址为:3F8H、3F9H、3FAH、3FBH,要求A口工作于方式0,输入;B口工作于方式0,输出;C口高4位为输出,低4位为输入,试编写8255的初始化程序。MOVDX,3FBHMOVAL,0B1HOUTDX,AL控制字:10110001(B1H)练习2:设8255A口的端口地址为:64H,要求A口工作于方式0,输入;B口工作于方式0,输出;要求检测C口PC4,若PC4=0,则读A口数据,并从B口输出显示,试编写程序实现该功能。控制字:1011100X(B8H或B9H)程序如下:Moval,0B8HOut67h,al;送控制字到控制字寄存器。WAIT:INAL,82H;读C口状态TESTAL,10H;测试(PC4)JNZWAIT;PC4=1,循环测试Inal,64h;从A口输入数据Out65h,al;从B口输出数据作业P132:5、8、9题