520 likes | 654 Views
第九章 可编程接口与应用 —— 并行通信和并行接口 8255A. 主讲:刘英. 9.1 :并行通信和并行接口 8255A. 串行通信和并行通信 可编程并行接口芯片 8255A. 9.1 :并行通信和并行接口 8255A—— 串行通信和并行通信. 源. 目的. 源. 目的. 0 1 1 0 1 0 1 0. 两种数据通信方式: 串行传送和并行传送 。 并行传送: 数据在多条并行1位宽的传输线上同时由源传送到目的 。 以 1 字节的数据为例,在并行传送中,1字节的数据通过8条并行传输线同时由源传送到目的。
E N D
第九章 可编程接口与应用——并行通信和并行接口8255A 主讲:刘英
9.1:并行通信和并行接口8255A • 串行通信和并行通信 • 可编程并行接口芯片8255A
9.1:并行通信和并行接口8255A——串行通信和并行通信9.1:并行通信和并行接口8255A——串行通信和并行通信 源 目的 源 目的 01 101010 两种数据通信方式:串行传送和并行传送。 • 并行传送:数据在多条并行1位宽的传输线上同时由源传送到目的。以1字节的数据为例,在并行传送中,1字节的数据通过8条并行传输线同时由源传送到目的。 • 串行传送:数据在单条1位宽的传输线上,一位一位地按顺序分时传送。以1字节为例,在串行传送中,1字节的数据要通过一条传输 线分8次由低位到高位按顺序一位一位地传送。
9.1:并行通信和并行接口8255A——串行通信和并行通信9.1:并行通信和并行接口8255A——串行通信和并行通信
9.1:并行通信和并行接口8255A——串行通信和并行通信9.1:并行通信和并行接口8255A——串行通信和并行通信 串行通信和并行通信比较 • 距离:并行——近距离传送(通常小于30米) 串行——远距离传送(几米~数千公里) • 速度:二者的传送速率与距离成反比,但在短距离内并行快得多。 • 设备费用:随着大规模和超大规模集成电路的发展、逻辑器件价格趋低,而通信线路费用趋高,因此对远距离通信而言,串行通信的费用显然会低得多。另一方面串行通信还可利用现有的电话网络来实现远程通信,降低了通信费用。
9.1:并行通信和并行接口8255A • 串行通信和并行通信 • 可编程并行接口芯片8255A
9.1:并行通信和并行接口8255A——8255A 概述 Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。可由程序来改变其功能,通用性强、使用灵活。通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。 含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。
9.1:并行通信和并行接口8255A——8255A A组 A口 (8位) A组控制 PA0~PA7 数据总线 缓冲器 A组 C口高位 (4位) D0~D7 PC4~PC7 RD RD 读/写 控制逻辑 A1 B组 C口低位 (4位) A0 RD PC0~PC3 RESET B组控制 B组 B口 (8位) PB0~PB7 8255A的内部结构
9.1:并行通信和并行接口8255A——8255A 8255A的内部结构 • 数据总线缓冲器:三态8位双向缓冲器,与系统数据总线连接的缓冲部件;传送数据、控制字、状态字的通道。 • 3个8位数据端口(PA、PB、PC):通常PA口与PB口用作输入输出的数据端口,PC口用作数据传输或提供联络线的端口。在方式字的控制下,PC口可以分成两个4位的端口,其中PC7~PC4同端口A配合使用, PC3~PC0同端口B配合使用。 • A组、B组控制电路:这两组控制电路根据CPU发出的方式选择控制字来控制8255A的工作方式,每个控制组都接收来自读写控制逻辑的“命令”,接收来自内部数据总线的“控制字”,并向与其相连的端口发出适当的控制信号。A组控制电路控制PA口和PC口高4位,B组控制电路控制PB口和PC口低4位。 • 读/写控制逻辑:用来管理数据、控制字和状态字的传送,接收系统总线发来的有关信号,并向A、B两组控制部件发送命令。
9.1:并行通信和并行接口8255A——8255A 8255A的引脚功能 DIP封装,共40个引脚。 1. 连接系统总线的主要引脚 D0~D7:数据线,双向,连CPU数据总线; RESET:复位输入,接系统总线的RESET; CS*:片选控制输入,接译码器; RD*:读命令输入,接CPU的RD*或IOR*; WR*:写命令输入,接CPU的WR*或IOW*; A0,A1:片内端口地址输入,可选4个片内端口。接AB的任2位。
9.1:并行通信和并行接口8255A——8255A CS A1 A0 RD WR 功 能 0 0 0 0 1 A 对端口 读 输 0 0 1 0 1 B 对端口 读 0 1 0 0 1 C 对端口 读 入 0 1 1 非法,不能对控制口读 0 1 1 0 0 0 0 A 对端口 写 0 0 1 输 1 0 B 对端口 写 0 1 0 1 0 C 对端口 写 出 0 1 1 1 0 对控制口 写 1 × × × × 断 数据缓冲器为 三态 开 1 1 × × × 8255A的引脚功能 A1、A0端口选择情况,见右表 由CS*、A1、A0、RD*、WR*引脚的不同组合,实现各种不同的功能。见下表:
9.1:并行通信和并行接口8255A——8255A 8255A的引脚功能 2. 连接外设端的引脚 PA0~PA7:A口外设数据线,接外设; PB0~PB7:B口外设数据线,接外设; PC0~PC7:C口外设数据线或联络线,接外设。
9.1:并行通信和并行接口8255A——8255A 8255 外设1 DB A口 D0~D7 D0~D7 IOW WR 系 统 总 线 外设2 IOR RD C口 A1 A1 A0 A0 外设3 B口 译码器 CS A15~A2 8255A与系统的连接示意图
9.1:并行通信和并行接口8255A——8255A 8255A的工作方式 • 方式0——基本输入/输出方式(A、B、C口) • 方式1——选通工作方式(A、B口) • 方式2——双向选通传送方式(仅A口) • 某端口工作于哪一种方式,可通过软件编程来指定。即向8255写入方式控制字来决定其工作方式。
9.1:并行通信和并行接口8255A——8255A 8255A的初始化 可以利用软件编程确定8255的3个端口工作于何种方式下。 8255A的各种工作方式由CPU对8255A写入控制命令字来设定,这个过程称为“初始化”。 8255A有2种控制命令字: 方式选择控制字——确定3个端口的工作方式; C口置位/复位控制字——确定C口某一位的初始状态,这个功能可用于设置方式1的中断允许,可以设置外设的启/停等。
9.1:并行通信和并行接口8255A——8255A 8255A的初始化——方式选择控制字 D7 D6 D5 D4 D3 D2 D1 D0 B组控制 C口低位选择,1入0出 B口I/O选择,1入0出 B口方式选择,0=方式0 1=方式1 C口高位选择,1入0出 A口I/O选择,1入0出 A口方式选择00=方式0 01=方式1 1X=方式2 D7=1,方式控制字标志 A组控制
9.1:并行通信和并行接口8255A——8255A D7 D6 D5 D4 D3 D2 D1 D0 置位/复位选择 1=置位,0=复位 无效 D7=0为置位/复位控制字标志 D3 D2 D1 位选择 0 0 0 PC0 0 0 1 PC1 0 1 0 PC2 0 1 1 PC3 1 0 0 PC4 1 0 1 PC5 1 1 0 PC6 1 1 1 PC7 8255A的初始化——C口置位/复位控制字
9.1:并行通信和并行接口8255A——8255A 8255A的初始化——方式选择控制字 在方式 1、2下,C口作为A口、B口联络信号的引脚,其动作关系在芯片设计和制造时已固定,不由用户自己安排,也不能编程改变。即C口作为联络信号的引脚:不受方式控制字的控制。该出则出,该入则入。
9.1:并行通信和并行接口8255A——8255A • 例:8255A工作于方式0,A口输入,B口输出,C口的高半字节输出, C口的低半字节输入,地址译码:A7~A2=100000时,选中8255。编写初始化程序。 • 控制字:10010001 • 端口地址:80H~83H • 初始化: MOV AL, 91H OUT 83H, AL • 例:令C口第4位PC3=1 • 控制字:00000111 • 初始化: MOV AL, 07H OUT 83H, AL
9.1:并行通信和并行接口8255A——8255A 8255A的初始化 MOV DX,387H ;设控制口地址 MOV AL,82H ;1 000 0 0 1 0 OUT DX,AL ;输出控制字 XOR AL,AL ;A口输出全0 MOV DX,384H ;设A口地址 OUT DX,AL ;输出到A口
9.1:并行通信和并行接口8255A——8255A 8255A的工作方式——方式0(基本输入/输出方式) • 特点:8255A相当于三个独立的8位数据口。各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出。C端口即可以是一个8位的简单接口,也可以分为两个独立的4位端口。设置为输出口时有锁存能力,设置为输入口时无锁存能力。 • 适用于:无条件输入输出方式。查询输入输出方式:把A、B口作为8位数据的输入或输出口,C口的高/低4位分别定义为A、B口的控制位和状态位。
9.1:并行通信和并行接口8255A——8255A 8255A的工作方式——方式0(基本输入/输出方式) • IN AL,PORT ①外设将数据送到8255输入缓冲器中; ②CPU给出有效的8255地址; ③CPU发读命令,将8255A输入缓冲器中数据读入CPU的AL寄存器中。 输入缓冲器 外设 DB 8 数据 译码器 n AB
9.1:并行通信和并行接口8255A——8255A 8255A的工作方式——方式0(基本输入/输出方式) • OUT PORT,AL ① CPU给出有效的8255地址; ② CPU发写命令,将CPU的AL寄存器中数据写入8255A输出锁存器中。 输出锁存器 外设 DB 8 数据 译码器 n AB
9.1:并行通信和并行接口8255A——8255A 8255A的工作方式——方式1(选通工作方式) 利用一组选通控制信号控制A端口和B端口的数据输入输出。 • 特点: • A、B口作输入或输出口,C口分为两部分,其部分位(6位)固定用作A口、B口的选通控制信号,起应答联络和中断请求的作用。 • C口的剩余位仍可作数据位使用。 • A口、B口在作为输入和输出时的选通信号不同。 • 方式1的应用: 主要用于中断控制方式下的输入输出。 说明:C口除部分位用作选通信号外,其余位(2位)可工作在方式0下,作 为输入或输出线,用程序指定其数据传送方向。
9.1:并行通信和并行接口8255A——8255A 输入设备 输入设备 D7~D0 D7~D0 PA7~PA0 PB7~PB0 INTEA INTEB PC4 PC2 PC5 PC1 IBFA IBFB PC3 INTRA PC0 INTRB (到CPU) (到CPU) 8255A的工作方式——方式1(选通工作方式) A、B口都设为方式1输入 C口的联络信号: STB#——选通输入信号,低电平有效,由外设输入。 STB# 的前沿将端口数据线上的外设数据送入8255的输入缓冲器。 A组对应PC4;B组对应PC2。 IBF——输入缓冲器满信号,高电平有效,由8255A输出。为高电平时,表示外设已将数据写入端口缓冲器,但CPU还未读取,当CPU读取端口数据后,IBF变为低电平。所以,IBF信号是由STB#的前沿置位,由RD#的后沿复位。 A组对应PC5;B组对应PC1。
9.1:并行通信和并行接口8255A——8255A 输入设备 输入设备 D7~D0 D7~D0 PA7~PA0 PB7~PB0 INTEA INTEB PC4 PC2 PC5 PC1 IBFA IBFB PC3 INTRA PC0 INTRB (到CPU) (到CPU) 8255A的工作方式——方式1(选通工作方式) A、B口都设为方式1输入 C口的联络信号: INTE——中断允许,是否允许发出INTR请求。INTE =1和IBF为高电平时,允许发出INTR请求。无引出(A口由置位PC4,B口由置位PC2实现)。 INTR——中断请求,高电平有效,由8255A输出。 INTE =1和IBF为高电平时,由STB#的后沿产生,向CPU请求中断,让CPU读走输入缓冲器中的数据。INTR信号由RD#的前沿清除。 A组对应PC3;B组对应PC0。
第八章:并行通信和并行接口8255A——8255A 外设送来数据 ① PA7~PA0 PB7~PB0 ② STB 当INTE=1时 IBF INTR ③ RD 8255A的工作方式——方式1(选通工作方式) • 方式1输入时序:
输出设备 9.1:并行通信和并行接口8255A——8255A D7~D0 PA7~PA0 INTEA PC7 PC6 PC3 INTRA (到CPU) 输出设备 D7~D0 PB7~PB0 INTEB PC1 PC2 PC0 INTRB (到CPU) 8255A的工作方式——方式1(选通工作方式) A、B口都设为方式1输出 C口的联络信号: OBF#——输出缓冲器满信号,低电平有效,8255A输出。为低电平时,表示CPU已将数据输出给指定的端口,外设可取走数据。该信号由WR#的后沿置位。A组对应PC7;B组对应PC1 ACK#——响应信号,低电平有效,外设输入。=0时,表示外设已从数据端口取走数据,并准备好接收下一个数据。该信号的前沿使OBF#复位。 A组对应PC6;B组对应PC2。
输出设备 9.1:并行通信和并行接口8255A——8255A D7~D0 PA7~PA0 INTEA PC7 PC6 PC3 INTRA (到CPU) 输出设备 D7~D0 PB7~PB0 INTEB PC1 PC2 PC0 INTRB (到CPU) 8255A的工作方式——方式1(选通工作方式) A、B口都设为方式1输出 C口的联络信号: INTE——中断允许位,INTE=1和OBF#为高电平时,允许产生INTR信号。无引出(A口由置位PC6,B口由置位PC2实现)。 INTR——ACK#上升沿产生,8255输出。=1时请求CPU输出下一个数据(通常接到8259)。 A组对应C3;B组对应PC0。
第八章:并行通信和并行接口8255A——8255A ① D7~D0 送往外设数据 数据写入端口 WR ② OBF 当INTE=1时 INTR ACK ③ 8255A的工作方式——方式1(选通工作方式) • 方式1输出时序:
9.1:并行通信和并行接口8255A——8255A 8255A的工作方式——方式2(双向选通传送方式) • 特点: • 双向方式——既是输入口,又是输出口。 • 利用C口的5条线提供传输联络信号。 • 类似于A口方式1下输入和输出的组合。工作时输入、输出都能锁存。 • 只有A口可工作在方式2下。 • 当A组工作在方式2时,B组可工作在方式0或方式1下。 • 应用: • 可用于中断控制输入输出方式。 • 也可用查询方式与CPU联系。 • 当A口工作于方式2时,B口可工作于方式1(此时C口的剩余位刚好用作B口选通控制线);B口也可工作于方式0(此时C口的剩余位只能用作方式0下的输入输出线)。
9.1:并行通信和并行接口8255A——8255A D7~D0 PA7~PA0 INTEA2 PC4 PC5 INTEA1 PC6 PC7 PC3 INTRA IBFA 8255A的工作方式——方式2(双向选通传送方式) • C口的联络信号: • STB#——选通信号,由外设输入。=0时,将外设数据送入8255的输入锁存器。 对应PC4。 • IBF——输入锁存器满信号,由8255A输出。=1时通知外设输入的数据已写入缓冲器,此时不能送下一个数据。此信号由STB#的前沿产生。CPU用IN指令取走数据后(RD#的后沿),此信号被清除。 对应PC5。
9.1:并行通信和并行接口8255A——8255A D7~D0 PA7~PA0 INTEA2 PC4 PC5 INTEA1 PC6 PC7 PC3 INTRA IBFA 8255A的工作方式——方式2(双向选通传送方式) • C口的联络信号: • OBF#——输出缓冲器满信号,8255A输出。=0时通知外设取走数据。 对应PC7。 • ACK#——响应信号,外设输入。=0时表示外设已从数据端口取走数据。此信号使OBF#变高。 对应PC6。 • INTR——输入时由STB#的后沿产生,输出时由ACK#上升沿产生,8255输出。=1提出中断请求。 A组对应PC3。
9.1:并行通信和并行接口8255A——8255A +5V 8255A A0 A1 CS D7 ~D0 200 8088 CPU PA0 PA1 PA2 A0 A1 译码器 地址线 8255A应用举例 • [例9-1]设8255A的端口地址为:340H~343H,试编写8255初始化程序段和控制三个发光二极管依秩序循环显示程序段。
9.1:并行通信和并行接口8255A——8255A 开始 软件设计 1)设A口为输出口,方式0。B口输入,方式0,则方式选择控制字为82H。 2)A口输出代码: 0000 0110 06H,1号发光二极管亮 0000 0101 05H,2号发光二极管亮 0000 0011 03H,3号发光二极管亮 3)软件延时 (1)1ms的软件延时参考程序: 设系统的CPU的频率为8MHZ,则时钟节拍为:0.125微秒。执行PUSHF、POPF、LOOP指令需29个节拍。延迟1毫秒要循环的次数? 8255A初始化 CX 3 BX显示代码地址 输出到A口 延时 BX=BX+1 CX=CX-1 N CX=0? Y
9.1:并行通信和并行接口8255A——8255A 参考程序: DATA SEGMENT COTR EQU 343H ;8255A控制口地址 PB_A EQU 340H ;8255A的A口地址 PB_B EQU 341H ;8255A的B口地址 LED DB 06H,05H,03H;LED显示值 DATA ENDP CODE SEGMENT ASSUME CS:CODE,DS:DATA …... MOV DX,COTR MOV AL,82H ;方式0 OUT DX, AL ;A口为输出,B口为输入 MOV DX, PB_A ;A口地址
9.1:并行通信和并行接口8255A——8255A LP: MOV CX,3 LEA BX, LED ; 1号灯代码地址 DON: MOV AL, [BX] OUT DX, AL ;1,2,3循环点亮 CALL DELAY ;调延时程序 INC BX DEC CX JNZ DON JMP LP DEALY PROC NEAR ;软件延时 …. DEALY ENDP CODE ENDS END ;JMP LP MOV DX, PB_B IN AL,DX TEST AL,00000001B JNZ LP MOV DX,PB_A MOV AL, 00000111B OUT DX,AL
9.1:并行通信和并行接口8255A——8255A +5V 200 D7 ~D0 PA0 PA1 PA2 8255A A0 A1PB0 CS 8088 CPU A0 A1 2K 译码器 地址线 +5V 思考:用8255A控制三个发光二极管依秩序循环显示。假设开关闭合时,二极管循环显示;开关断开时,完成当前循环后息灭所有二极管。
9.1:并行通信和并行接口8255A——8255A 8255A应用举例 • [例9-2]利用8255A的A口方式0与微型打印机相连,将内存缓冲区BUFF中的400个字符打印输出。
9.1:并行通信和并行接口8255A——8255A DATA0~DATA7 STB BUSY ACK 8255A应用举例 • 首先分析一下打印机的工作时序 • 从图可见,当CPU通过接口要求打印机打印数据时,先要查看BUSY信号,BUSY=0时,才能向打印机输出数据,在把数据送上DATA线后,先发STB#=0信号通知打印机,打印机接到STB#=0后,发出BUSY=1,接收效据,当数据接收好并存入内部打印缓冲器后,送出ACK#=0信号,表示打印机已准备好接收新数据,并复位BUSY=0。
9.1:并行通信和并行接口8255A——8255A 8255A应用举例 • 硬件连线如下图所示 • 图中用8255A的PA口作为输出打印数据口,工作于方式0,PC口高4位工作于输入方式, PC7接收打印机的BUSY信号;PC口低4位工作于输出方式, PC0产生STB#信号。
9.1:并行通信和并行接口8255A——8255A MOV DX,PORTCNL ;8255A控制口口地址 MOV AL,88H ;8255A方式选择控制字 OUT DX,AL ;A口方式0输出,PC7输入,PC0输出 MOV AL,00000001B ;8255AC口的按位置位/复位按制字 OUT DX,AL ;PC0置1,使STB#高电平 MOV CX,400 ;打印字符个数 MOV SI,OFFSET BUFF POLL: MOV DX,PORTC IN AL,DX TEST AL,80H ;查BUSY = 0? JNZ POLL ;不为0,打印机忙,则等待 MOV DX,PORTA ;否则,向A口送数 MOV AL,[SI] OUT DX,AL MOV DX,PORTCNL ;8255A控制口口地址 MOV AL,00H ;PC0置0,使STB#为低电平 OUT DX,AL ;产生一个负脉冲 NOP NOP MOV AL,01H ;PC0置1,使STB#为高电平 OUT DX,AL INC SI LOOP POLL ;未打印完,继续 HLT
9.1:并行通信和并行接口8255A——8255A 8255A应用举例 • 思考:利用8255A的A口方式1与微型打印机相连,将内存缓冲区BUFF中的400个字符打印输出。
9.1:并行通信和并行接口8255A——总结 • 可编程并行接口芯片。 • 可编程并行接口芯片8255A的结构与功能,要求达到“领会”层次。 • 可编程并行接口芯片8255A的三种工作方式与初始化编程,要求达到“简单应用”层次。 • 可编程并行接口芯片8255A的应用,要求达到“综合应用”层次。 • 16位系统中的并行接口,要求达到“领会”层次。
9.1:并行通信和并行接口8255A——串行通信和并行通信9.1:并行通信和并行接口8255A——串行通信和并行通信 源 目的 源 目的 01 101010 两种数据通信方式:串行传送和并行传送。 • 并行传送:数据在多条并行1位宽的传输线上同时由源传送到目的。以1字节的数据为例,在并行传送中,1字节的数据通过8条并行传输线同时由源传送到目的。 • 串行传送:数据在单条1位宽的传输线上,一位一位地按顺序分时传送。以1字节为例,在串行传送中,1字节的数据要通过一条传输 线分8次由低位到高位按顺序一位一位地传送。
9.4:串行通信和串行接口8251A——串行通信方式9.4:串行通信和串行接口8251A——串行通信方式 字符 起始位 数据位 校验位 停止位 空闲位 高位 … 低位 1 0 1 1 1 0/1 0/1 0/1 0/1 串行通信方式 • 异步通信是指以字符为单位传送数据,用起始位和停止位标识每个字符的开始和结束字符,并且字符出现在数据流中的相对时间是任意的,而每个字符中的各位是以固定的时间传送。即:字符内同步,字符间异步。 • 传输的字符格式如图所示: 1个起始位、7或8个数据位、1~2个停止位和1个校验位
9.4:串行通信和串行接口8251A——串行通信方式9.4:串行通信和串行接口8251A——串行通信方式 ~ ~ 数据 同步字符 数据 数据 校验字符 ~ ~ 串行通信方式 • 异步通信为了可靠地传送数据,在每次传送数据的同时,附加了一些标志位。在大量数据传送时,为了提高速度,就去掉这些标志,这就是同步通信。 • 同步通信以一个数据块(帧)为传输单位,在数据块开始处用1个或2个同步字符来指示,最后以校验字符结束,并在发送端和接收端之间用时钟来实现同步。 • 传输格式(一帧)如下所示:
9.4:串行通信和串行接口8251A——串行通信方式9.4:串行通信和串行接口8251A——串行通信方式 波特率 • 所谓波特率是指每秒钟传送二进制数据的位数。单位是位/秒(bit/s)。 • 1波特=1位/秒(1bps) 例如:设数据传送的速率为120字符/秒,每个字符(帧)包括10个代码位(1个起始位、1个终止位、8个数据位),则传送的波特率为: 10×120=1200位/秒=1200波特率 每一位传送的时间为T=1/1200=0.833ms
9.4:串行通信和串行接口8251A——串行通信的传送方向9.4:串行通信和串行接口8251A——串行通信的传送方向 串行通信的传送方向 (1)单工方式(Simplex Mode) 在这种方式下,只允许数据按一个固定的方向传送。图中A只能发送,称为发送器;B只能接收,叫做接收器。不能从B传向A。 站A 站B
9.4:串行通信和串行接口8251A——串行通信的传送方向9.4:串行通信和串行接口8251A——串行通信的传送方向 串行通信的传送方向 (2)半双工方式(Half-Duplex Mode) 在这种方式下,数据既可以从A传向B,也可以从B传向A。因此A和B既可作为发送器,又可作为接收器,通常称为收发器。但是,由于A和B之间只有一根传输线,所以在同一时刻,只能进行一种传送,不能同时双向传输。因此,将其称为“半双工”方式。在这种工作方式下,要么A发送B接收,要么B发送A接收。 站A 站B