Transcript 输出接口芯片8255A
第十章 并行输入输出接口芯片8255A 一、8255A的引脚 (1) 有24可用于与外设相连接的I/O引脚,这24条引 脚分属于A,B,C三个端口 (2) 有三种主要工作方式:方式0,方式1,方式2 Intel系列的8位并行接口芯片 通用性强,使用灵活 可用程序设置和改变芯片的工作方式 是一种典型的可编程并行接口芯片 40个引脚,双列直插式 PA3 PA2 PA1 PA0 RD CS GND A1 A0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 PB0 PB1 PB2 8255A PA4 PA5 PA6 PA7 WR RESET D0 D1 D2 D3 D4 D5 D6 D7 Vcc PB7 PB6 PB5 PB4 PB3 二、8255A内部结构 A组控 制逻辑 D7-D0 RD WR A1 A0 RESET CS 数据 总线 缓冲器 读/写 逻辑 控制 B组控 制逻辑 A组 端口A PA7~PA0 A组 端口C 高四位 PC7~PC4 B组 端口C 低四位 B组 端口B PC3~PC0 PB7~PB0 三、引脚基本操作 A1 A0 RD WR CS 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 X 1 X X 1 X X 0 1 X 1 1 X 0 0 操作 端口A 端口B 端口C 数据总线 数据总线 数据总线 数据总线 数据总线 数据总线 数据总线 端口A 端口B 端口C 控制字寄存器 数据总线三态 非法状态 数据总线三态 基本输入/输出方式(方式0) 选通工作方式(方式1) 双向传送方式(方式2)(仅A口) 某端口工作于哪一种方式,可通过软件编程来 指定。即向8255写入方式控制字来决定其工作方 式, l 8255A有两种控制字,由写入内容 的D7位区分: D7=1, 方式控制字 设定A口、B口、C口的工作状态和工作方式。 工作状态: 工作方式: D7=0 , C口按位置位/复位控制字 使C口中的某一位为1(置位)或0(复位)。 方 式 控 制 字 各 位 含 义 D7 1 D6 D5 D4 D3 D2 D1 D0 0 输出 PC3~PC0 1 输入 B口 0 输出 1 输入 B口工作方式 0 方式0 1 方式1 PC7~PC4 A口 A口工作方式 0 输出 1 输入 00 方式0 01 方式1 1x 方式2 特征位,D7=1表示是方式控制字 0 输出 1 输入 C口按位置位/复位控制字各位含义: D7 D6 D5 D4 D3 D2 D1 D0 0 无意义 特征位,D7=0 表示是C口按位 置位/复位控制字 选择设置位 D3 D2 D1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 设置位 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 0 复位 设置内容 1 置位 • 假设端口地址为 F0H~F3H 通过控制口置 PC2 为 0,置 PC4 为 1 MOV DX,0F3H MOV AL,0000 0100B OUT DX, AL MOV AL,0000 1001B OUT DX, AL ;置DX为控制口地址 ;置PC2为0 ;置PC4为1 方式选择 1、方式0 (基本输入输出 ) (1)输出有锁存而输入无锁存 (2)8255A具有两个8位端口(端口A和B)以 及两个4位的端口 ,均可作为输入输出 方式0时序: (1)输入时序: (2)输出时序: 2、方式1(选通的输入/输出方式 ) 基本功能: (1)拥有两个数据端口,每个端口都可以用 作输入或者输出 (2)每个端口包含8位的数据端口和三条控制 线 (3)若仅端口A工作于方式1,则余下的13位 可工作于方式0。若仅端口B工作于方式1,端 口A可工作于方式2或方式0 控制字与C口引脚(方式1 输入): 对方式1输入的端口,C口提供与外部联络的信号 有: • ① STB 选通信号(低电平有效) 由外设发出,送给8255A, 作用是将外设送来的数据锁存到8255A的输入端 PA7~PA0 口。 INTE A • ② IBF 输入缓冲器满信号(高电平有效)PC4 8255A 发出, 表示外设送来的数据已进入输入端口。 当外设送来的数据送入输入端口后, 8255A自动发出IBF。 与 门 PC4 PC5 STB IBF PC3 INTR • ③ INTR 中断申请信号 • (高电平或上升沿有效) 8255A 发出,用来向CPU发出中断申请。 STB、IBF、INTE均为1时,8255A自动发出INTR。 对方式1输入的端口,8255A内部的控制信号有: • INTE 中断允许控制信号 • 作用是控制是否允许8255A的中断申请信号INTR发出。 • • 此信号无引出, 通过控制口对C口相应位的置位/复位设置允许 或不允许。 PA7~PA0 • A口,对PC4置位, 使INTEA=1, 允许中断 – • INTEA PC4 对PC4复位, 使INTEA=0, 不允许中断 B口,对PC2置位, 使INTEB=1, 允许中断 – 对PC2复位, 使INTEB=0, 不允许中断 与门 PC4 PC5 STB IBF PC3 INTR PA7~PA0 PB7~PB0 ①外设送来数 STB 据② D7~D 0 PA7~PA0 INTE A STB PC4 IBF 当INTE=1时 PC4 RD PC5 IBF INTR 与 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 控制字与C口引脚(方式1 输出): 对方式1输出的端口,C口提供与外部联络的 信号有: ① OBF 输出缓冲器满信号(低电平有效) 当数据送至8255A输出缓冲器后,8255A自动发 PA7~PA0 出。 INTE 表示CPU送来的数据已进入8255A输出端口, 可用来通知外设把数据取走。 ② ACK 外设响应信号(低电平有效) 由外设发出,送给8255A。 作用是通知 8255A 输出端口的数据已被外设取走, 可以传送下一个数据。 A PC6 PC6 PC7 与 门 PC3 ③ INTR 中断申请信号(高电平或上升沿有效) 8255A 发出, 用来向CPU发出中断申请。 当OBF 、ACK、INTE均为1时,8255A自动发出 ACKA OBFA INTRA 对方式1输出的端口,8255A内部的控制信号有: INTE 中断允许控制信号 作用是控制是否允许中断申请信号INTR发出。 • • • • 此信号无引出, 通过控制口对C口相应位的置位/复位设置允许或不 允许。 PA7~PA0 A口,对PC6置位, 使INTEA=1, 允许中断 INTEA – 对PC6复位, 使INTEA=0, 不允许中断 PC6 B口,对PC2置位, 使INTEB=1, 允许中断 – 对PC2复位, 使INTEB=0, 不允许中断 与门 PC6 PC7 ACKA OBFA PC3 INTRA D7~D0 送往外设数据 数据写入端口 ① WR ② PA7~PA0 INTEA PC6 OBF 当INTE=1时 ACK ③ WR 与门 PC6 PC7 ACKA OBFA PC3 INTRA ① 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)输入和输出是锁存的 控制字与C口引脚: 方式2的时序如图所示。 当CPU将数据写入端口A 时,尽管变为有效,但数 它可以认为是方式1输出 据并不出现在端口的数据 和输入的组合,但有以下 不同: 部设备发出信号时,数据 线PA7~PA0上。只有外 才进入PA7~PA0。 输入和输出引起的中断请 求信号都通过同一条引脚 输出,CPU必须通过查询 信号和信号不能同时有 OBFA和IBFA状态才能确 效,否则将出现数据传送 “冲突”。 定是输入过程引起的中断 请求还是输出过程引起的 中断请求。 以8255A作为终端机的接口 由PA口输出字符到终端机的显示缓冲器,PB口用 于键盘输入字符 当PC2=1时,表示键盘输入字符就绪,当PC1=0 时,表示显示缓冲器已空 要求用软件查询方法把从键盘输入的每个字符都 送到终端机的显示缓冲器上,同时送到内存 BUFFER开始的单元中,当输入的是回车键,操 作结束, 端口地址44H~47H 初始化8255 N PC2=1 ? Y 是否回车 N Y 存储 N PC1=0 ? 输出至显示缓冲器 N CX=1? Y 结束 控制字:10000010B 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 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