第七章 输入输出及其接口芯片
1 、输入输出设备通过接口电路与 CPU 连接7-1 输入输出概述
存储器
I/O接口
输入设备
I/O接口
数据总线 DB
控制总线 CB
地址总线 AB
输出设备
CPU
CPU
控制寄存器
输入缓冲寄存器
输出缓冲寄存器
状态寄存器
数据总线
地址译码
读信号写信号
准备好中断请求
地址片选
A0A1
输入设备
数据输入
数据输入准备好
数据输入回答
输出设备
数据输出
数据输出准备好
数据输出回答
• 由图可见,外设通过 I/O 接口电路与 CPU 相连。每个接口电路包含多个寄存器:数据输入寄存器、数据输出寄存器、状态寄存器、控制寄存器。• 通常称这些寄存器为 I/O 端口 (PORT) ,每个端口有一个端口地址。• CPU 与端口通过数据总线交换信息,信息类型包括:数据、对外设的控制信息、外设的状态信息,分别存放在接口电路的不同寄存器中。• 端口选择通过地址总线产生。
2 、接口电路的作用(为什么要用接口电路)( 1)速度的匹配 外设的读写速度可能很慢。 CPU 与端口进行
快速数据交换,端口与外设进行慢速交换。( 2)信息格式的变换 外部设备的数据形式可能是数字量、模拟量
或开关量等,数字量可能采用并行方式或串行方式。接口电路的功能之一是将不同信息格式变换为 CPU 能接收的标准并行信息,如电平转换、串并转换、 A/D 、 D/A 转换等;
( 3)提供主机和外设间传送数据的状态和控制信息
如 WR 、 RD 、 READY 、 INTR 等( 4)时序的匹配 CPU 时序与外设时序可能不一致,由接口电路
实现匹配。
3 、 I/O 端口的编址方式• CPU 对 I/O 端口编址有两种方式: 1 )与存储器统一编址方式; 2 ) I/O 端口独立编址方式。• 统一编址方式将外设端口与存储器一致处理,
使用相同的指令访问外设和存储器。• 独立编址方式需要专用的访问外设指令,硬
件上需要有控制线来区分访问存储器还是外设。
• 8086 CPU 采用外设端口独立编址方式。
7-2 可编程并行接口芯片 82551 、性能概要• 8255 是一个可编程并行接口芯片。• 有三个 8 位输入输出端口:端口 A 、端口 B 、端口
C ,以及控制 8255 内部工作方式的控制字寄存器,共 4 个端口。
• 每个端口可编程设定为输入端口或输出端口,并可设定为不同的工作方式。
• 端口 A 、端口 B 通常作为输入输出数据端口。• 端口 C 可作为数据端口使用;也可分成两个 4 位端
口,作为 A 口和 B 口的控制和状态端口。• 控制字寄存器接收 CPU 写入的控制字,对 A、 B、 C
端口进行控制,以决定其工作方式。
reset
D7~
D0
A7~
A2A1A0
RDWR
片选译码
数据缓冲器
读写控制
片内译码
CS
RESET
A1A0
RDWR
PC7~
PC0
PB7~
PB0
PA7~
PA0
控制字端口
端口 A
端口 C
端口 B
+5VGND
D7~
D0外
设
8255A总线
8255A
PA3PA2PA1PA0RDCS
GNDA1A0
PC7PC6PC5PC4PC3PC2PC1PC0PB0PB1PB2
PA4PA5PA6PA7WRRESETD0D1D2D3D4D5D6D7VccPB7PB6PB5PB4PB3
2 、 8255 芯片引脚
3 、端口寻址A1 A0 选中端口
0 0 端口 A
0 1 端口 B
1 0 端口 C
1 1 控制字端口
4 、 8255 的工作方式 8255 可有三种工作方式:• 方式 0 — 基本输入或输出方式 8255 端口与外设只有数据信号线,没有控制、
状态等联络信号的工作方式。• 方式 1 — 选通输入或输出方式 8255 端口与外设除数据信号线外,有控制、
状态等联络信号的工作方式。• 方式 2 — 选通双向传送方式
• 工作方式由 CPU 写入控制字寄存器中的控制字决定
• A 口可工作于方式 0 、方式 1 或方式 2
• B 口可工作于方式 0 或方式 1
• C 口只能工作于方式 0 ,可分成两个四位端口,可单独定义为基本输入或输出,也可以按位置位或复位。
• 当 A 口和 B 口工作于选通方式(方式 1, 方式2 )时, C 口的某些位被用于作为联络信号。
• C 口可通过控制字按位进行置位和复位操作。
5 、 8255 的控制字• 8255 的控制字有两种:工作方式控制字和 C
口置位复位控制字• 工作方式控制字控制 8255 各端口的工作方式• C 口置位 / 复位控制字对 C 口各位进行位操作
B 口
0 输出1 输入
0 方式 01 方式 1
1
D7 D6 D5 D4 D3 D2 D1 D0
特征位, 1 表示工作方式控制字
PC3~PC00 输出1 输入
B 口工作方式
PC7~PC4 0 输出1 输入A 口 0 输出
1 输入A 口工作方式 00 方式 0
01 方式 11x 方式 2
0 复位1 置位
0
D7 D6 D5 D4 D3 D2 D1 D0
特征位 D7=0 表示该特征字是 C口按位置位 / 复位控制字
无意义 选择设置位
C 口按位置位 / 复位控制字
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
例 8255 与 CPU 连接后所分配的地址为 F0~F3h
1) 确定各端口地址 ;
2) 编程设置 8255A:
A 口方式 0 输入, PC7~PC4 输出 B 口方式 0 输出, PC3~PC0 输入
答:1 )根据 8255 端口寻址关系可得出 A 口地址为 F0 H B 口地址为 F1 H C 口地址为 F2 H D 口地址为 F3 H2 )确定方式控制字
1 0 0 1 0 0 0 1
D7 D6 D5 D4 D3 D2 D1 D0
特征位 A 口方式 0
A 口输入
PC7~PC4输出
B 口方式 0
B 口输出
PC3~PC0输入
所以,方式控制字为 1001 0001B ,即 91H
3 )方式控制字设置的程序: MOV AL, 91H ; 方式控制字
OUT 0F3H, AL
6 、选通工作方式下联络信号的定义• 在方式 1 下, C 口作为 A 口、 B 口联络信
号的外部引脚,其动作关系在芯片设计和制造时已固定,不由用户设定,也不能编程改变。即 C 口作为联络信号的引脚,不受方式控制字的控制,不受 C 口按位置位 / 复位控制字控制。
1 )端口 A 工作在方式 1 输入时,应用 PC3 、 PC4 、 PC5 作为联络信号。
①PC4 — STB (strobe) 选通信号(低电平有效)
由外设发出送给 8255 ,作用是将外设送来的数据锁存到 8255 的输入端口。
② PC5 —IBF(input buffer full) 输入缓冲器满信号(高电平有效)
由 8255 发出,表示外设送来的数据已进入输入端口。当外设送来的数据送入输入端口后, 8255 自动发出 IBF 。
③PC3 — INTR 中断申请信号; 8255 发出,用来向 CPU 发出中断申请。 STB 、 IBF 、 INTEA 均为1时, 8255 发出 INTR 。
RD 信号的下降沿清除 INTR 。
PA7~PA0
PC4PC5
PC3
INTEAPC4
与门IBFSTB
INTR
D7~D0
• 在 A 口方式 1 输入,中断允许控制信号 INTEA ( PC4 )作为 8255 内部控制信号。其作用是控制 8255 的中断申请信号 INTR 是否允许发出。
• 通过对 C 口相应位的置位 / 复位来设置允许或不允许发出中断信号。
2 )端口 B 工作在方式 1 输入 时,应用 PC0 、PC1 、 PC2 作为联络信号。
PC2 — STB (strobe)
PC1 —IBF(input buffer full)
PC0 — INTR ( interrupt ) 中断允许控制信号 INTEB 由内部信号 PC2
的置位或复位设置决定。
PB7~PB0
PC2
PC1
PC0
INTEBPC2
与门RD
D7~D0
IBF
STB
INTRB
举例: 8255 端口地址为 10H~13H ,设 A 口工作于方式 1 输入,采用中断方式传送数据, B口工作于方式 0 输出, C 口工作于输出方式。对该 8255 进行初始化编程;并将 CL 中的数据通过 B 口输出,用 PC0 高电平控制输出设备的接收。
1 )确定控制字工作方式控制字为: 1011 0000B=0B0H
对 PC4 置位控制字为: 0000 1001B=09H
对 PC0 置位控制字为: 0000 0001B=01H
2 )初始化编程 MOV AL , 0B0H ;工作方式控制字 OUT 13H , AL ;赋给 8255 控制字寄存器
MOV AL , 09H ; OUT 13H , AL ;对 PC4 置位,允许 8255 向 CPU 发
中断 MOV AL , CL OUT 11H , AL ;将 CL中的数据发送到 B口 MOV AL , 01H OUT 13H , AL ; PC0置位,以控制外设接收数
据
3 )端口 A 工作在方式 1 输出时,应用 PC3 、 PC6 、 PC7 作为联络信号。
① PC6 — ACK 外设响应信号。 由外设发出,送给 8255 。作用是通知 825
5 输出端口的数据已被外设取走,可以传送下一个数据。
② PC7 — OBF (output buffer full) 输出缓冲器满信号
CPU 将数据送至 8255 输出缓冲器后, 8255自动发出此信号。表示数据已进入 8255 输出端口,通知外设把数据取走。
③ PC3 — INTR 中断申请信号 当 OBF 、 ACK 、 INTEA 均为1时, 8255A
自动发出 INTR 。 中断允许控制信号 INTEA 由内部信号 PC6
的置位或复位设置决定。
PA7~PA0
PC6
PC7
PC3
INTEAPC6
与门
OBFA
ACKA
INTRAWR
D7~D0
4 )端口 A 工作在方式 2 时,应用 PC3 、 PC4 、 PC5 、 PC6 、 PC7 作为联络信号,功能同上。
例:以 8255A 作为接口,采集一组开关 S7~ S0 的状态,然后它通过一组发光二极管 LED7—LED0 显示出来, (Si 闭合.对应 LEDi 亮; Si断开,对应 LEDi 灭 ),电路连接如图所示。已知 8255A 的 A、 B两组均工作在方式 0(1) 写出 8255A 四个端口地址;(2) 写出 8255A 的工作方式控制字;(3) 编写给定功能的汇编语言指令程序。
设 8255A 的 A口、 B口、 C口和控制口地址分别为:000H , 001H , 002H , 003H 。8255A 的工作方式控制字为: 1000X01XB
程序如下: MOV AL , 1000X01XB
MOV DX , 003H OUT DX , AL
DEC DXDEC DX
cycle: IN AL , DXNOT ALDEC DX
OUT DX , ALInc DX
jmp cycle