380 likes | 669 Views
第十章 并行输入输出接口芯片 8255A. 第一节 8255A 的内部结构和引脚信号. 第二节 8255A 工作方式及其功能. 第 三 节 8255A 应用举例. 第一节、 8255A 的内部结构和引脚信号. 有 24 可用于与外设相连接的 I/O 引脚,这 24 条引脚分属于 A , B , C 三个端口 有三种主要工作方式:方式 0 ,方式 1 ,方式 2. 一、 8255A 的引脚. 8255A. PA3 PA2 PA1 PA0 RD CS GND A1 A0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
E N D
第十章 并行输入输出接口芯片8255A 第一节 8255A的内部结构和引脚信号 第二节 8255A工作方式及其功能 第三节 8255A应用举例
第一节、8255A的内部结构和引脚信号 • 有24可用于与外设相连接的I/O引脚,这24条引脚分属于A,B,C三个端口 • 有三种主要工作方式:方式0,方式1,方式2 一、8255A的引脚
8255A PA3 PA2 PA1 PA0 RD CS GND A1 A0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 PB0 PB1 PB2 PA4 PA5 PA6 PA7 WR RESET D0 D1 D2 D3 D4 D5 D6 D7 Vcc PB7 PB6 PB5 PB4 PB3 Intel系列的8位并行接口芯片 通用性强,使用灵活 可用程序设置和改变芯片的工作方式 是一种典型的可编程并行接口芯片 40个引脚,双列直插式
A组 端口A PA7~PA0 A组 端口C 高四位 PC7~PC4 B组 端口C 低四位 PC3~PC0 PB7~PB0 B组 端口B 二、8255A内部结构 A组控 制逻辑 数据 总线 缓冲器 D7-D0 RD 读/写 逻辑 控制 B组控 制逻辑 WR A1 A0 RESET CS
A1 A0 RD WR CS 操作 0 0 0 1 0 端口A 数据总线 0 1 0 1 0 端口B 数据总线 1 0 0 1 0 端口C 数据总线 0 0 1 0 0 数据总线 端口A 0 1 1 0 0 数据总线 端口B 1 0 1 0 0 数据总线 端口C 1 1 1 0 0 数据总线 控制字寄存器 X X X X X 数据总线三态 1 1 0 1 0 非法状态 X X 1 1 0 数据总线三态 三、引脚基本操作
第二节 8255A工作方式及其功能 基本输入/输出方式(方式0) 选通工作方式(方式1) 双向传送方式(方式2)(仅A口) 某端口工作于哪一种方式,可通过软件编程来指定。即向8255写入方式控制字来决定其工作方式,
8255A有两种控制字,由写入内容的D7位区分: • D7=1, 方式控制字 • 设定A口、B口、C口的工作状态和工作方式。 • 工作状态:输入或输出 • 工作方式:方式 0、方式 1、方式 2 • D7=0, C口按位置位/复位控制字 • 使C口中的某一位为1(置位)或0(复位)。
0 输出 1 输入 PC3~PC0 0输出 1 输入 B口 0 方式0 1 方式1 B口工作方式 1 D7 D6 D5 D4 D3 D2 D1 D0 0 输出 1 输入 PC7~PC4 0 输出 1 输入 A口 00 方式0 01 方式1 1x 方式2 A口工作方式 特征位,D7=1表示是方式控制字 方 式 控 制 字 各 位 含 义
C口按位置位/复位控制字各位含义: 0 复位 1 置位 无意义 选择设置位 设置内容 0 D7 D6 D5 D4 D3 D2 D1 D0 特征位,D7=0 表示是C口按位 置位/复位控制字
假设端口地址为 F0H~F3H • 通过控制口置 PC2 为 0,置 PC4 为 1 • MOV DX,0F3H;置DX为控制口地址 • MOV AL,0000 0100B ;置PC2为0 • OUT DX, AL • MOV AL,0000 1001B ;置PC4为1 • OUT DX, AL
方式选择 1、方式0 (基本输入输出 ) 基本功能: (1)输出有锁存而输入无锁存 (2)8255A具有两个8位端口(端口A和B)以及两个4位的端口 ,均可作为输入输出
方式0时序: (1)输入时序:
2、方式1(选通的输入/输出方式 ) 基本功能: (1)拥有两个数据端口,每个端口都可以用作输入或者输出 (2)每个端口包含8位的数据端口和三条控制线 (3)若仅端口A工作于方式1,则余下的13位可工作于方式0。若仅端口B工作于方式1,端口A可工作于方式2或方式0
对方式1输入的端口,C口提供与外部联络的信号有:对方式1输入的端口,C口提供与外部联络的信号有: • ①STB 选通信号(低电平有效) • 由外设发出,送给8255A, • 作用是将外设送来的数据锁存到8255A的输入端口。 • ②IBF 输入缓冲器满信号(高电平有效) • 8255A 发出, • 表示外设送来的数据已进入输入端口。 • 当外设送来的数据送入输入端口后, • 8255A自动发出IBF。 • ③INTR 中断申请信号 • (高电平或上升沿有效) • 8255A 发出,用来向CPU发出中断申请。 • STB、IBF、INTE均为1时,8255A自动发出INTR。 PA7~PA0 INTEA PC4 PC4 STB PC5 IBF 与门 PC3 INTR
对方式1输入的端口,8255A内部的控制信号有: • INTE 中断允许控制信号 • 作用是控制是否允许8255A的中断申请信号INTR发出。 • 此信号无引出, • 通过控制口对C口相应位的置位/复位设置允许或不允许。 • A口,对PC4置位, 使INTEA=1, 允许中断 • 对PC4复位, 使INTEA=0, 不允许中断 • B口,对PC2置位, 使INTEB=1, 允许中断 • 对PC2复位, 使INTEB=0, 不允许中断 PA7~PA0 INTEA PC4 PC4 STB PC5 IBF 与门 PC3 INTR
PA7~PA0 D7~D0 PA7~PA0 PB7~PB0 ① 外设送来数据 INTEA PC4 STB ② 当INTE=1时 IBF PC4 STB IBF PC5 INTR RD 与门 INTR ③ RD PC3 ① 当外设数据准备好,将数据送至端口线PA7~PA0或PB7~PB0 ②外设发出选通信号STB: (1) 将数据锁存在输入端口内。 (2) 使IBF变高,表示输入端口满,可用于阻止外设输入新数据 (3) 如果INTE=1, STB的上升沿使INTR变高,发出中断请求。 ③ 中断处理程序中CPU 读取数据,发出RD信号: (1) RD 的下降沿清除INTR (2) RD 的上升沿清除IBF (3) 端口内的数据进入CPU
对方式1输出的端口,C口提供与外部联络的信号有:对方式1输出的端口,C口提供与外部联络的信号有: ①OBF 输出缓冲器满信号(低电平有效) 当数据送至8255A输出缓冲器后,8255A自动发出。 表示CPU送来的数据已进入8255A输出端口, 可用来通知外设把数据取走。 ②ACK 外设响应信号(低电平有效) 由外设发出,送给8255A。 作用是通知 8255A 输出端口的数据已被外设取走, 可以传送下一个数据。 ③INTR 中断申请信号(高电平或上升沿有效) 8255A 发出, 用来向CPU发出中断申请。 当OBF 、ACK、INTE均为1时,8255A自动发出INTR。 PA7~PA0 ACKA INTEA PC6 OBFA PC6 INTRA PC7 与门 PC3
对方式1输出的端口,8255A内部的控制信号有: INTE 中断允许控制信号 作用是控制是否允许中断申请信号INTR发出。 • 此信号无引出, • 通过控制口对C口相应位的置位/复位设置允许或不允许。 • A口,对PC6置位, 使INTEA=1, 允许中断 • 对PC6复位, 使INTEA=0, 不允许中断 • B口,对PC2置位, 使INTEB=1, 允许中断 • 对PC2复位, 使INTEB=0, 不允许中断 PA7~PA0 ACKA INTEA PC6 OBFA PC6 INTRA PC7 与门 PC3
D7~D0 PA7~PA0 INTEA PC6 PC6 PC7 与门 PC3 ACKA OBFA INTRA WR 数据写入端口 送往外设数据 ① WR ② OBF 当INTE=1时 ACK ③ ① CPU输出数据 ② CPU发出WR: (1) 数据写到 8255A的端口 (2) 使OBF有效,表示输出端口满, 可作为外设的选通信号,通知外设取数据。 (3)清除中断请求信号INTR ③外设接受到数据后,发出ACK信号: (1) ACK的下降沿使OBF变高, (2) 当INTE=1, ACK的上升沿使INTR变高, 发出中断请求,请求CPU输出新的数据。
INTE的状态可利用C口的位控方式来设置: 输入: A口的INTE:写入PC4 B口的INTE:写入PC2 输出: A口的INTE:写入PC6 B口的INTE:写入PC2 例如:方式1输入允许A口中断,则应按如下方法设置INTEA。 MOV DX,控制寄存器地址 MOV AL,0xxx1001B ;1=允许中断,0=禁止中断 OUT DX,AL 注意:
3、方式2(选通的双向I/O方式 ) 基本功能: (1)仅适用于端口A,作为双向的数据总线 (2)端口C有5条引脚用作为端口A的握手信号线和中断请求线 (3)输入和输出是锁存的
由PA口输出字符到终端机的显示缓冲器,PB口用于键盘输入字符由PA口输出字符到终端机的显示缓冲器,PB口用于键盘输入字符 当PC2=1时,表示键盘输入字符就绪,当PC1=0时,表示显示缓冲器已空 要求用软件查询方法把从键盘输入的每个字符都送到终端机的显示缓冲器上,同时送到内存BUFFER开始的单元中,当输入的是回车键,操作结束, 端口地址44H~47H 以8255A作为终端机的接口 第三节 8255A应用举例
初始化8255 N PC2=1? Y Y 是否回车 N 存储 N PC1=0? 输出至显示缓冲器 N CX=1? Y 结束
DATA SEGMENT BUFFER DB 100 DUP(?) COUNT EQU $-BUFFER DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ DB 100 DUP (?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:MOV AL,10000010B OUT 47H,AL 控制字:10000010B
MOV AX,DATA MOV DS,AX MOV ES,AX MOV CX,COUNT LEA DI,BUFFER CLD CHECK1:IN AL,46H TEST AL,00000100B JZ CHECK1 IN AL,45H CMP AL,0DH JZ DONE STOSB MOV BL,AL CHECK2:IN AL,46H TEST AL,00000010B JNZ CHECK2
MOV AL,BL OUT 44H,AL DEC CX JNZ CHECK1 DONE:MOV AH,4CH INT 21H CODE ENDS END START