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