微机原理与接口技术 第 8 章 并串行通信接口.ppt
微机原理与接口技术,第 8 章 并/串行通信接口,教案,8.1 并行通信接口,8.1.1 并行I/O接口概述8.1.2 可编程并行I/O接口82558.1.3 8255应用例,并行I/O接口,并行通信接口的功能:数据缓冲/锁存 查询工作状态 选择数据传输方式 发送控制命令 端口寻址和编程,并行I/O接口的数据传输,并行I/O接口的数据传输方式可以采用无条件传输方式、查询方式、中断方式和DMA方式。并行I/O数据传输采用最多的是查询方式或中断方式。并行I/O数据的传输过程,一般都需要应答联络,彼此确认。一个新的传输过程,必须在双方对上一个传输过程进行应答之后发生。,并行接口的数据输入过程,并行I/O接口数据输入过程及应答联络信号:当外设向接口输入数据的同时,发“数据输入选通”(STB)信号,STB信号可将接口的“READY”状态置位供CPU查询,或者作为向CPU发出的输入中断请求信号;CPU执行输入(IN)指令的同时,将“READY”状态复位;“READY”的复位信号可作为向外设发出的“数据输入应答”信号。,并行接口的数据输出过程,并行I/O接口数据输出过程及应答联络信号:CPU执行输出(OUT)指令的同时,将接口的“BUSY”状态置位,“BUSY”的置位信号可作为向外设发出的“数据输出选通”信号,通知外设接收数据;当外设从接口接收到数据后,向接口发出“数据输出应答”(ACK)信号;ACK信号可将“BUSY”状态复位供CPU查询,或者作为向CPU的发出的数据输出中断请求信号。,并行I/O接口8255,Intel 8255是一个广泛用于微机系统的可编程并行I/O接口。8255不需附加外部电路便可和大多数外设直接连接,使用十分方便。8255采用40脚双列直插式封装,有24条并行I/O引脚,可选择实现4/8/12/16/20/24位并行I/O。8255可实现与CPU之间的直接、查询、中断数据传输方式。8255具有可选择的方式0、方式1、方式2三种工作方式。,8255的内部结构,8255的引脚特性,8255与外设相连的有三个8位数据端口:端口A(PA7PA0),端口B(PB7PB0),端口C(PC7PC)。8255内部有A组和B组逻辑控制:分别控制A组(PA7PA0,PC7PC4),B组(PB7PB0,PC3PC0)的工作方式和读/写操作。8255有D7D0(双向、三态)数据线:内接一个8位数据缓冲器,外与系统数据总线相连。8255有6个读/写控制逻辑引脚:RESET,WR,RD,CS,A1,A0,分别接收CPU和译码电路的控制信号,地址信号。,8255读/写操作的控制逻辑,方式控制字,端口C置位/复位控制字,8255控制字设置例,8255 控制字通过写控制端口的方式设置。8255 控制字的性质通过特征位区分。例如,8255端口地址80H83H(P142)。MOVAL,91HOUT83H,AL;写控制字91HMOVAL,0DHOUT83H,AL;PC6置1MOVAL,08HOUT83H,AL;PC4清0,8255的工作方式,8255有三种工作方式:方式0 基本输入/输出方式,即直接(不需联络)数据传输。A,B,C端口均可为方式0的输入口或输出口使用。方式1 选通输入/输出方式,即需联络的数据传输。方式1的输入或输出,均需要端口C提供固定的3位联络信号。方式2 双向传输方式。方式2相当于方式1的输入和输出组合,需要端口C提供固定的5位联络信号。8255的端口A可以选择方式0,方式1,方式2。8255的端口B可以选择方式0,方式1。8255的端口C 做数据口,仅可以为方式0。(端口C某些位可配合方式1或方式2做联络信号。),8255方式0的工作特点,方式0可以将数据端口A、B、C组合成各种位数的并行I/O接口(多达16种组合)。各个数据端口均都可用做输入口(缓冲器),或者输出口(锁存器)。方式0主要使用在无条件(直接)传送场合。,8255方式0编程例,端口地址30H33H。MOVAL,89H;A口、B口输出,C口输入OUT33H,AL;写方式控制字INAL,32H;读C口NOTAL;C口数据取反OUT30H,AL;写A口MOVAL,0F0H;取B口数据OUT31H,AL;写B口,端口地址60H63H。MOVAL,88H;C口高4位输入,低4位输出OUT63H,AL;写方式控制字INAL,62H;读C口(高4位)MOVCL,4SHRAL,CL;C口的高4位移到低4位OUT62H,AL;写C口(低4位),8255方式1的联络信号,端口A或端口B采用方式1,必须由端口C提供联络信号。方式1输入的联络信号:STB(输入):数据输入选通信号。IBF(输出):输入缓冲器满信号(可供查询)。方式1输出的联络信号:OBF(输出):输出缓冲器满信号(可供查询)。ACK(输入):数据输出应答信号。方式1输入/输出的中断信号:INTR(输出):中断请求信号。INTE(内部输出):中断允许信号。,方式1联络信号表,8255方式1的工作特点,端口A或端口B可以选择使用方式1,并可选择各自为输入或输出。在选定的同时,自动规定了端口C有关的联络、控制和中断请求信号。若采用方式1中断方式,必须将相关的INTE置为1,端口A或端口B才可以使用各自的INTR信号申请中断。若采用方式1查询方式,可以通过查询端口A或端口B相关IBF或OBF信号的当前状态,决定是否能进行数据传输。若端口A和端口B均选定为方式1,则需端口C提供6位做联络信号,剩下的2位还可工作在方式0的输入/出方式。若端口A和端口B中只有一个工作在方式1,而另一个工作在方式0,则端口C中有3位作为方式1的联络信号,端口C其余5位均可工作在方式0的输入/出方式。,8255方式2的工作特点,方式2 是双向传输,相当于方式1 的输入和输出的组合,只适用于端口A。外设在端口A 的8位数据线上分时向CPU发送数据或从CPU接收数据。方式2 需要端口C提供固定的5位,即端口C的PC7PC3,做指定的控制/联络信号。方式2一般采用中断方式进行数据传输。,8255应用例1,【例8.2】8255作为采用中断方式的字符打印机接口。PC3连接中断控制器8259的IR3,中断类型号为0BH。8259端口地址:20H,21H。8255端口地址:60H 63H。,例8.2 主程序,MOV AL,0A0H;A口方式1,输出,PC0输出OUT 63H,ALMOV AL,0DH;PC6为1,8255的A口中断允许OUT 63H,ALMOV AL,1;PC0初始为1,打印选通信号无效OUT 62H,AL PUSH DSMOV DX,SEG LPTINTMOV DS,DXMOV DX,OFFSET LPTINTMOV AX,250BHINT 21H;设置0BH中断向量表POP DS,CLIIN AL,21HAND AL,0F7H;开放8259的IR3中断OUT 21H,ALLEA DI,BUFFER;DI取打印区BUFFER首地址STIINT0BH;用软件中断指令调用第一个打印;中断程序,做为启动中断之用;循环等待并处理打印中断,;直到打印中断关闭,例8.2 中断子程序,LPTINT PROC FARPUSHAX;保护AX现场MOVAL,DI;根据DI指针取一个打印字符INCDI;DI+1OUT60H,AL;从A口输出打印字符MOVAL,0;使PC0为0,产生有效选通信号OUT62H,ALINCAL;使PC0为1,撤消选通信号OUT62H,ALMOVAL,20H;发EOI命令OUT20H,ALPOPAX;恢复AX现场IRETLPTINT ENDP,8255应用例2,【例8.3】IBM PC/XT系统板上8253的计数器2的应用。8253计数器2为方式3,输出约1KHz的方波到扬声器发声。GATE2由8255的PB0控制,OUT2输出经过与门放大发声。与门的允许/禁止由8255的PB1控制。,例8.3 编程要点,8255的设置程序已完成,B口为输出。设置8253的计数器2,让其能输出约1KHz频率的方波。GATE2由8255的PB0控制,OUT2的输出经过与门,与门由8255的PB1控制。发声时间用PB1和PB0同时为“1”的时间来控制。设长声时间为3s,短声时间为0.5s。在需要发声时,以长/短声参数(BL=6或1)做入口参数,调用发声子程序 BEEP。8253端口地址:40H43H。8255端口地址:60H63H。,例8.3 发声子程序,BEEPPROCMOV AL,0B6H;计数器2为方式3,16位二进制计数OUT43H,ALMOVAX,0533H;计数值1331(0533H)OUT42H,ALMOVAL,AHOUT42H,AL,INAL,61H;读 8255端口B的原值(不发声)MOVAH,AL;保存在AHORAL,03H;使PB1和PB0为1(其他位不变)OUT61H,AL;输出PB1和PB0(扬声器发声)SUBCX,CX;CX=0,最大计数值65536 GT:LOOPGT;“延时”发声DECBLJNZGT;长声6次“延时”,短声1次“延时”MOVAL,AHOUT61H,AL;恢复端口B的原值(停止发声)RET BEEPENDP,8255应用实验,【实验5】开关控制发光二极管显示电路。8255的端口A接发光二极管组,端口B接开关组。8255的端口地址:60H63H。1.采用方式0(直接)的控制:设置8255方式字(82H)读B口开关值送到A口亮/灭发光二极管无条件转,MOVAL,82H OUT63H,ALA1:INAL,61H OUT60H,AL JMPA1,实验5(中断方式),2.采用方式1(中断)的控制:用手动触发开关做STBB信号,引发B端口中断。INTRB(PC0)接8259A的IRQ7端(中断类型号为0FH)。8259端口地址:20H21H。,MOVAX,OFFSET IRQ7MOV003CH,AXMOVAX,0MOV003EH,AX;设置IRQ7中断向量表CLIINAL,21HANDAL,7FH;设置IRQ7中断开放OUT21H,ALMOVAL,86HOUT63H,AL;设置8255方式字MOVAL,05HOUT63H,AL;设置B口中断允许(PC2=1)A1:STIJMP A1,中断方式程序,IRQ7中断子程序:IRQ7:INAL,61HOUT60H,ALMOVAL,20HOUT20H,ALIRET,实验5(查询方式),3.采用方式1(查询)的控制:通过查询8255的PC1(IBFB)了解触发开关是否按动。每按动一次触发开关,读开关组数据,亮/灭LED发光管组。MOVAL,86H;设置8255方式字(86H)OUT63H,ALMOVAL,04H;设置PC2=0,B口中断屏蔽OUT63H,AL A1:INAL,62HTESTAL,02H;测试PC1(IBFB)=1?JZA1INAL,61H;读B口开关值,并清除IBFBOUT60H,AL;亮/灭对应的发光二极管 JMPA1;循环,习题8.2,习题8.3,8.2 8255A的端口A,B都定义为方式1输入,则方式控制字是什么?此时,方式控制字中D3,D0两位的作用是什么?8255A的端口A,B都定义为方式1输入,方式控制字是10110110。由于端口A,B定义为方式1,需要PC5 PC0(6位)配合做方式1的联络信号,此时,方式控制字中D3位表示剩下的PC7和PC6位的输入/出方向,D0位无意义。8.3 假定8255A的端口A为方式1输入,端口B为方式1输出,端口C的各位是什么含义?PC2 PC0(3位)分别做端口B方式1输出的联络信号ACK,OBF,INTR;PC5 PC3(3位)分别做端口A方式1输入的联络信号STB,IBF,INTR;PC7和PC6(2位)做输入/出。,习题8.4,8.4 对满足下列要求的8255A(端口地址60H63H)初始化设置。(1)设端口A,B和C均为基本输入/输出方式(输入/输出分别考虑)。MOV AL,80H;方式字80H:A口,B口,C口均为方式0输出;或9BH(均为输入),或82H,90H.OUT 63H,AL;设置方式控制字(2)设端口A为选通输出方式,允许中断,端口B为基本输入方式,端口C为输出方式。MOV AL,0A2H;A口方式1输出,B口方式0输入,C口输出OUT 63H,AL;设置方式控制字MOV AL,0DH;端口C置/复位字:PC6=1OUT 63H,AL;设置A口输出中断允许,即INTE=1,(3)设端口A为双向方式,允许中断;端口B为选通输出方式,不允许中断。MOV AL,0C4H;A口方式2(双向),B口方式1输出OUT 63H,AL;设置方式控制字MOV AL,04H;端口C置/复位字:PC2=0OUT 63H,AL;设置B口输出中断屏蔽,即INTE=0MOV AL,09H;端口C置/复位字:PC4=1OUT 63H,AL;设置A口输入中断允许,即INTE2=1MOVAL,0DH;端口C置/复位字:PC6=1OUT63H,AL;设置A口输出中断允许,即INTE1=1,(4)设端口A为选通输入方式,端口B为选通输出方式,均允许中断,端口C剩余两位PC7置1,PC6清0。MOV AL,0B4H;A口方式1输入,B口方式1输出,C口输出OUT 63H,AL;设置方式控制字MOV AL,09H;端口C置/复位字:PC4=1OUT 63H,AL;设置A口输入中断允许,即INTE=1MOV AL,05H;端口C置/复位字:PC2=1OUT 63H,AL;设置B口输出中断允许,即INTE=1MOV AL,80HOUT 62H,AL;设置PC7=1,PC6=0,习题8.5,8.5 编写程序:读取8255A端口A输入的数据,随即向端口B输出,并对输入数据加以判断,当大于等于80H时,PC5和PC2置位,否则复位。设定:8255A端口地址60H63H。MOVAL,90HOUT63H,AL;设置方式控制字INAL,60H;“读”A口OUT61H,AL;“写”B口CMPAL,80HJAEP1;80H,转P1MOVAL,00H;PC5和PC2复位JMPP2P1:MOVAL,24H;PC5和PC2置位P2:OUT62H,AL;“写”C口HLT,