微机原理及应用 主讲:谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 第10章 并行接口芯片8255 引言 CPU与外设之间的信息传送都是通过接口电路来 进行的。 计算 机 外 部设备、计算机 计 算机之间交 换信息称之为计算机通信,计算机通信可分为两大类 : 并行通信: 8位或16位或32位数据同时传输, 速度快,信息率高,成本高 串行通信: 一位一位数据传送(在一条线上顺 序传送),成本低 实现并行通信的接口就是并行接口。 10.1 可编程并行接口芯片8255A(结构) 8255A是可编程的,可通过软件来设置芯片的工作 方式。连接外部设备时,通常不需要 附加 外部 电路 。 8255A的内部结构(见P304图10-1) 由以下几部分组成: 10.1 可编程并行接口芯片8255A(结构) 1.有三个8位数据端口,即端口A 、 B、 C,可用软件使 它们分作输入端口或输出端口。 (1)端口A 一个8位数据输入锁存器 一个8位数据输出锁存器/缓冲器 (2)端口B 一个8位数据输入缓冲器 一个8位数据输出锁存器/缓冲器 (3)端口C 一个8位数据输入缓冲器 一个8位数据输出锁存器/缓冲器 A口和B口可作为独立的输入端口或输出端口,而 C口则常被分成两个4位端口,以配合A口和B口的工作, 输入状态信号和输出控制信号。 10.1 可编程并行接口芯片8255A(结构) 8255内部结构 图 10-1 8255A的内部结构 o o o D 7 ~D 0 RD WR A 1 A 0 RESET CS PA 7 ~PA 0 I/O PC 7 ~PC 4 I/O PC 3 ~PC 0 I/O PB 7 ~PB 0 I/O 数据 总线 缓冲嚣 读写 控制 逻辑 A组 控制 B组 控制 内部 总线 A组 A口 A组 C口 B组 B口 B组 C口 10.1 可编程并行接口芯片8255A(结构) 2、A组和B组控制电路 这两组控制电路一方面接收芯片内部总线上的 控制字,另一方面接收来自读/写控制逻辑电路的读/ 写命令,以决定两组端口的工作方式和读/写操作。 A组控制电路 控制端口A和端口C的高4位(PC7~PC4) B组控制电路 控制端口B和端口C的低4位(PC3~PC0) 10.1 可编程并行接口芯片8255A(结构) o o o D 7 ~D 0 RD WR A 1 A 0 RESET CS 数据 总线 缓冲嚣 读写 控制 逻辑 A组 控制 B组 控制 A组 A口 A组 C口 B组 C口 B组 B口 PA 7 ~PA 0 I/O PC 7 ~PC 4 I/O PC 3 ~PC 0 内部 总线 I/O PB 7 ~PB 0 I/O 图10-1 8255A的内部结构 10.1 可编程并行接口芯片8255A(结构) 2、A组和B组控制电路 这两组控制电路一方面接收芯片内部总线上的 控制字,另一方面接收来自读/写控制逻辑电路的读/ 写命令,以决定两组端口的工作方式和读/写操作。 A组控制电路 控制端口A和端口C的高4位(PC7~PC4) B组控制电路 控制端口B和端口C的低4位(PC3~PC0) 10.1 可编程并行接口芯片8255A(结构) 3.数据总线缓冲器 是一个双向三态的8位数据缓冲器, 它是8255A与 系统总线的连接接口,输入输出的数据 ,CPU发给 8255A的控制字及外设的状态信息都是通过缓冲器传 送的。 4.读/写控制逻辑 负责管理8 255A的数据传送过程,它接收C S、 A1、 A0和 控 制 信 号 RD、WR、RESET, 将这些信号进行组合, 得到对 A组控制和B组控制的控制命令,以完成对数据 、 状态信息及控制信息的传输。 10.1 可编程并行接口芯片8255A(结构) 数据缓冲和读写控制逻辑 o o o D 7 ~D 0 RD WR A 1 A 0 RESET CS 数据 总线 缓冲嚣 读写 控制 逻辑 A组 控制 B组 控制 A组 A口 A组 C口 B组 C口 B组 B口 PA 7 ~PA 0 I/O PC 7 ~PC 4 I/O PC 3 ~PC 0 内部 总线 I/O PB 7 ~PB 0 I/O 图10-1 8255A的内部结构 8255A的引脚信号 8255A CS WR RD PA 7 ~PA 0 D 7 ~D 0 A口 PB 7 ~PB 0 B口 PC 7 ~PC 0 A 1 C口 A 0 RESET 图10-X 8255A的引脚信号 10.2 方式选择 8255A的控制字 8255A通过向 控制端口 写控制字,来决定各端口 的工作。 控制字分为二类: 一类是芯片各端口的 方式选择控制字 ,它可使 8255A的3个数据端口工作在不同的工作方式。 另一类是 C端口按位置位/复位控 制字 ,它可对C 端口的某一位置1或置0。 10.2 方式选择 1. 方式选择控制字 先介绍8255A的三种工作方式 方式0:基本的输入/输出。 在此方式下,A 、 B、 C可分别设置成输入或输出。 方式1:选通输入/输出方式。 只有A口、B口可工作在方式1,它们要分别占用C 口三条线作为联络线,C口的余下线只能工作在方式0 。 10.2 方式选择 方式2:双向传送方式 只有A口可工作在方式2,此时C口有5条线 用 来 作A口和外设之间的联络线,C口剩下的3 条线视B 口 而定,若B口工作在方式0,亦为方式0;若B 口 工 作 在 方式1,则作B口联络线。 10.2 方式选择 方式选择控制字的格式如下图所示: D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 特征位 A组方式选择 00=方式0 01=方式1 1×=方式2 A口: 1=输入 0=输出 PC 7 ~PC 4 : 1=输入 0=输出 B组方 式选择 : 1=方式1 0=方式0 B口 1=输入 1=输入 0=输出 0=输出 PC 3 ~PC 0 : 特征位 1有效 图10-3 8255A方式选择控制字 10.2 方式选择 举例: 设A口、B口、C口均工作在方式0,要求A口、B 口作输出,C口作输入。 方式选择控制字为: 10001001B=89H D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 1 00 0 0 0 11 特 征 位 A 组 方式0 A口 C 高 输 入 C 低 输 入 B口 输 出 B组 方式0 10.2 方式选择 程序编写 方式 选择 控制 字应 送入控制口,可用如下两条 指令完成:(设控制口地址为83H) MOV AL,89H OUT 83H,AL 2.C端口按位置位/复位控制字 其格式如下: D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 0 0 0 PC 0 0 0 1 PC 1 0 1 0 PC 2 0 1 1 PC 3 1 0 0 PC 4 1 0 1 PC 5 1 1 0 PC 6 1 1 1 PC 7 C端口置位/复位标志 0=有效 位 选 择 0复位 1置位无效 图10-4 C端口按位置位/复位控制字 10.2 方式选择 C端口的数据位常作为控制位用。此控制字 只 影响其中某一位,其它位状态不变。 例:将PC5复位,其控制字为: 00001010B 即0AH 若将PC3置位,其控制字为: 0000111B 即 07H 注意:此控制字尽管是对端口 C进行操 作, 但此 控制字必须写入控制口。 10.2 方式选择 例: 设控制口地址为22B H, 对P C5进行复位的 指令段为: MOV AL,0AH MOV DX,22BH OUT DX,AL 10.3 方式0 1、基本功能 方式0也叫 基本的输入/输出 方式 ,参加这种方 式传送数据的有两个8位端口(A口和B口)及两 个 4位 端口(C口的高4位及低4位) 10.3 方式0 方式0的特点为: ①四个端口中的任一端口既可 作输 入口 ,也可作 输出 口,各端口之间没有必然的联系。 ②各个端口的输入或输出,可以有16种不同的组合。 ③输出是锁存的,输入是不锁存的。 2、方式0举例 设8255A的A口、B口均工 作 在 方 式 0,A 口作 输入 (开关量)B口作输出。原理图如下: 10.3 方式0 图10-5 方式0举例 D 7 ~D 0 CS WR RD PA 7 PB 7 PA 0 PB 0 R R 发 光 二 极 管 8255A A 1 A 0 RESET R +5V R 驱 动 器 10.3 方式0 设8255A的 A口地址为228H B口地址为229H C口地址为22AH 控制口地址为22BH 程序段为: CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX MOV AL,90H ;方式控制字 MOV DX,22BH OUT DX,AL 1 0 0 1 0 0 0 0 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 10.3 方式0 MOV SI,8000H LP: MOV DI,6000H LP1: MOV DX,228H IN AL,DX ;读入A口开关状态 MOV DX,229H OUT DX,AL ;B口输出 DEC DI JNZ LP1 DEC SI JNZ LP RET MAIN ENDP CODE ENDS END START IN AL,DX 10.3 方式0 D 7 ~D 0 CS WR RD PA 7 PB 7 PA 0 PB 0 R R 发 光 二 极 管 ‘0’ ‘1’ 图10-5 方式0举例 8255A A 1 A 0 RESET R +5V R 驱 动 器 10.3 方式0 MOV SI,8000H LP: MOV DI,6000H LP1: MOV DX,228H IN AL,DX ;读入A口开关状态 MOV DX,229H ;B口输出 DEC DI JNZ LP1 DEC SI JNZ LP RET MAIN ENDP CODE ENDS END START OUT DX,AL 10.3 方式0 图10-5 方式0举例 D 7 ~D 0 CS WR RD PA 7 PB 7 PA 0 PB 0 R R 发 光 二 极 管 低电平 8255A A 1 A 0 RESET R R 高电平 驱 动 器 +5V 10.3 方式0 MOV SI,8000H LP: MOV DI,6000H LP1: MOV DX,228H IN AL,DX ;读入A口开关状态 MOV DX,229H ;B口输出 DEC DI JNZ LP1 DEC SI JNZ LP RET MAIN ENDP CODE ENDS END START OUT DX,AL 10.4 方式1 1、方式1的基本功能 方式 1也叫选通的输入/输出方式。端口A和端 口B均分别可设置为输入或输出。和方式0相比 , 其 差别主要是要利用C端口提供选通信号和应答信号, 而 这 些 信 号 与 端口C中的数位之间有着固定的对应 关系,这种关系不是程序可以改变的。 2、方式1输入情况下有关信号规定及时序 10.4 方式1 ①方式1输入端口对应控制信号如下图示: B口方式 1输入 A口方式 1输入 PC 3 & INTE A PC 4 PC 5 PC 6、 7 PA 7 ~PA 0 STB A IBF A INTR A I/O 书上有错 PC 0 & INTE B PC 1 PB 7 ~PB 0 STB B IBF B PC 2 INTR B 方式控制字 方式控制字 图10-11 方式1时输入端口的信号 1 0 1 1 1/ 0 1 1 1 10.4 方式1 1.STB 选通信号输入,低电平有效。这 是 外 设 送给8255A的输入信号,当其有效时,输入设备把 数据送入8255A的输入缓冲器(A口用PC 4、 B口用 PC2 作选通输入端) 2.IBF 输入缓冲器满信号,高电平有效 。 这 是 8255A输出的状态信号,当其有效时表示数据已输 入至输入缓冲器(A口用PC5、B口用PC1作IBF) 3.INTR 中断请求信号,高电平有效。这是82 55A 送往C PU的中断请求信号,以要求C PU服务(A口用 PC3、B口用PC0作INTR) 10.4 方式1 4.INTE 中断允许信号,实际上这是一个 控 制 中 断允许或中断屏蔽的信号。INTE没有外部引出端, 它是通过对C端口按位置位/复位来控制的。对 方 式 1输入而言: 允许8255A的A口中断,将PC4置位 禁止8255A的A口中断,将PC4复位 允许8255A的B口中断,将PC2置位 禁止8255A的B口中断,将PC2复位 10.4 方式1 ②方式1的输入时序(参见P314图10-12) 图10-12 方式1的输入时序 t SIT t RIT t RIB ? ?? t ST STB t SIB t PH t PS 来自外设的 输入数据 INTR RD ? IBF 10.4 方式1 当外设数据准备好,并已输至8255A的端 口数据线上,外设发出STB信号将数据装入 8255A的输入缓冲器,STB下降沿 经 t SIB 时间后,IBF变高,通知外设停止送数,此 信号可提供CPU查询,而STB的上升沿 后 经过t SIT 向CPU发出INTR信号(如果INTE=1), 若CPU允许响应中断,在中断服务程序中,CPU 用IN指令读入数据,在RD下降沿经t RIT 就清除 中断请求,在RD上升沿经t RIB 使IBF变低,表示 数据已读至CPU,缓冲器空,告知外设可输入 新的数据,开始下一个数据输入过程。 10.4 方式1 ②方式1的输入时序(参见P314图10-12) 图10-12 方式1的输入时序 t SIT t RIT t RIB ? ?? t ST STB ? t SIB t PH t PS 来自外设的 输入数据 INTR RD IBF 10.4 方式1 当外设数据准备好,并已输至8255A的端 口数据线上,外设发出STB信号将数据装入 8255A的输入缓冲器,STB下降沿 经 t SIB 时间后,IBF变高,通知外设停止送数,此 信号可提供CPU查询,而STB的上升沿 后 经过t SIT 向CPU发出INTR信号(如果INTE=1), 若CPU允许响应中断,在中断服务程序中,CPU 用IN指令读入数据,在RD下降沿经t RIT 就清除 中断请求,在RD上升沿经t RIB 使IBF变低,表示 数据已读至CPU,缓冲器空,告知外设可输入 新的数据,开始下一个数据输入过程。 10.4 方式1 ②方式1的输入时序(参见P314图10-12) t SIT t RIT t RIB ? ?? t ST STB t SIB t PH t PS 来自外设的 输入数据 INTR RD ? IBF 图10-12 方式1的输入时序 10.4 方式1 若A口、B口同时申请中断,内部无排队, 优先权一样,要求硬件排队。 设A口、B口均工作在方式1的输入,则 方式控制字为: 1 0 1 1 1 1 1 0=BEH 特 A PC 6 B B 无 征A口入 PC 7 方式1 入效 位 方式 1 入 允许A口中断 00001001=09H(PC 4 置位) 允许B口中断 00000101=05H(PC 2 置位) 10.4 方式1 ①方式1输出端口对应控制信号如下图示: B口方式 1输出 A口方式 1输出 PC 3 & INTE A PC 6 PC 7 PC 4、 5 PA 7 ~PA 0 ACK A OBF A PC 0 & INTE B PC 2 PC 1 PB 7 ~PB 0 ACK B OBF B INTR B 书上有错 INTR A I/0 方式控制字 方式控制字 图10-8 方式1时输出端口的信号 1 0 1 0 1/0 1 1 0 10.4 方式1 1.OBF 输出缓冲器满信号,低电平有效 。 这 是 8255A输出给外设的一个信号,当其有效, 表示C PU已 经把数据输出至指定的端口,外设可把数据取走(A 口用PC7、B口用PC1作OBF) 2.ACK 外设的响应信号,低电平有效。当其有效, 告知C PU输出给8255A的数据已 由 外 设 取 走 (A口用 PC6、B口用PC2作ACK) 10.4 方式1 3.INTR 中断请求信号,高电平有效。当外设(输 出装置)已接受了CP U输出的数据后,用I NTR向C PU提 出 新 的 中 断 请 求,要求C PU继续输出数据(A口用 PC3、 B口用PC0作INTR) 4.INTE 中断 允许 信号 ,其 意义与方式1的输入情 况一样。 允许A口中断 PC6置位 允许B口中断 PC2置位 10.4 方式1 ②方式1的输出时序如下图示:(参见P316图10-14) ? ? ? t WOB t AOB t AK t AIT WR OBF ACK 数据有效 INTR t WIT t WB 送往外设的数据 图10-14 方式1的输出时序 10.4 方式1 输出过程是由CPU响应中断开始,在中断 服务程序中,CPU向8255A输出数据,发出WR 写信号,WR的上升沿一方面清除中断请求 INTR,表示CPU已经响应了中断; 另一方面 使OBF有效,通知外设接收数据,在WR上升 沿经过t WB 时间数据就输出了。当外设接收 数据后, 发出ACK信号,其下降沿使OBF无 效,而其上升沿使INTR有效,发出新的中断 请求,从而开始一个新的输出过程。 10.4 方式1 设 A口、B口均工作在方式1输出,其方 式控制字为: 1 0 1 0 0 1 0 0 = A4H 特 A PC 4 B B 无 征A口出 PC 5 方式1 出效 位 方式1 出 允许A口中断 00001101=0DH (PC 6 置位) 允许B口中断 00000101=05H (PC 2 置位) Summary ? Question and Problem ?