文章目录
- 1.8255A的内部结构与外部引脚
- 1.1.三个数据端口A、B、C:
- 1.2.A组控制和B组控制
- 1.3.数据总线缓冲器
- 1.4.读写控制逻辑
- 1.5.8255A的外部引脚
- 2.8255A的控制字
- 2.1.方式选择控制字
- 2.2.端口C按位置位/复位控制字
- 3.8255A的工作方式
- 3.1.方式0:基本输入输出方式
- 3.2.方式1:选通输入输出方式
- 3.3.双向输入输出方式
- 4.8255A与CPU的连接
芯片概述:
- 8255A是Intel公司生产的可编程并行接口芯片。
- 它不需要附加外部电路就可以和大多数并行传输数据的外部设备直接连接。
- 可以通过软件编程的方法分别设置它的3个8位I/O端口的工作方式。
1.8255A的内部结构与外部引脚
1.1.三个数据端口A、B、C:
数据端口概述:8255A芯片内部有3个8位的输入输出端口,分别为A口、B口、C口,可以通过指令分别将它们设置为输入或输出端口。
端口A:
- 端口A包含一个8位数据输入锁存器和一个8位的数据输出锁存器/缓冲器;
- 端口A无论是作为输入口还是输出口,其数据都可以受到锁存。
端口B:
- 端口B包含一个8位数据输入缓冲器和一个8位的数据输出锁存器/缓冲器;
- 端口B在作为输出口时,其数据能够得到锁存。端口B的输入口没有锁存能力, 因此外部设备的输入必须维持到被CPU读取为止。
端口C:
- 包含一个8位数据输入缓冲器和一个8位的数据输出锁存器/缓冲器;
- 端口C和端口B相同,作为输入口时没有锁存能力。
使用方式:
- 端口A和端口B一般作为独立的I/O口使用,与外部设备的数据线相连;
- 端口C可以作为一个独立的8位I/O口,也可以拆分为高4位和低4位两个4位
端口,作为两个独立的4位I/O口使用; - 端口C的某些位还可以与端口A和端口B配合,用作它们的联络信号线。
1.2.A组控制和B组控制
8255A将端口A、B、C分为两组:端口A和端口C的高四位构成A组,由A组控制逻辑电路进行控制;端口B和端口C的低4位构成B组,由B组控制逻辑电路进行控制。
1.3.数据总线缓冲器
数据总线缓冲器是一个双向三态的8位缓冲器,是8255A与CPU之间传输信息的通道,与系统的数据总线连接。
1.4.读写控制逻辑
- 读写控制逻辑负责管理8255A的数据传输过程。
- 它接收来自控制总线的控制信号,形成对端口的读写控制,并通过A组控制和B组控制电路实现对数据、状态和控制信息的传输。
1.5.8255A的外部引脚
与CPU相连的信号线:
- D7-D0:8255A的双向三态数据线,与系统的数据总线相连;
- #CS:芯片片选信号。信号有效时表示被选中,可以进行读写。通常与地址译码电路的输出端相连接。
- A1 A0:端口地址选择信号。在#CS有效时,A1A0为00、01、10、11时分别表示选择A、B、C和控制端口。
- #RD:读信号。当片选信号和读信号同时有效时,CPU可以从8255A读端口内的信息。
- #WR:写信号。当片选信号和写信号同时有效时,CPU可以向8255A写入数据或命令。
- RESET:复位信号。当为高电平时清除8255A所有内部寄存器的内容,并将3个数据端口置为方式0下的输入端口。
- Vcc和GND:电源和地线。
与外部设备相连的信号线:
- PA7-PA0:A口与外部设备连接的信号线,由A口的工作方式决定这些引脚用作输入、输出和双向。
- PB7-PB0:B口与外部设备连接的信号线,由B口的工作方式决定这些引脚用作输入、输出和双向。
- PC7-PC0:C口输入输出数据线,这些引脚的用途由A组、B组的工作方式决定。
2.8255A的控制字
8255A的两类控制字:
- 一类用于定义各端口的工作方式,称为方式选择控制字。
- 另一类用于对C端口的某一位进行置位或复位操作,称为C端口置位/复位控制字。
2.1.方式选择控制字
8255A的3种基本工作方式:
- 方式0:基本的输入输出方式;
- 方式1:带选通的输入输出方式;
- 方式2:双向传输方式。
8255A方式选择控制字的格式:
- 标志位:D7:D7位是方式选择控制字的标志位,必须为1。
- 工作方式选择:D6D5用于选择A组的工作方式,D2用于选择B组的工作方式。
- 输入输出方向选择:D4、D3、D1和D0分别用于选择A口、C口高4位、B口和C口低4位的输入输出方向。置一时表示输入,置零时表示输出。
各个端口的工作方式:
- 端口A:端口A可以工作在三种工作方式中的任何一种。
- 端口B:端口B只能工作在方式0或方式1。
- 端口C:端口C可以独立工作也可以配合端口A和端口B工作,为这两个端口的输入输出传输提供控制信号和状态信号。
2.2.端口C按位置位/复位控制字
控制字作用:端口C置位/复位控制字用于对端口C的任何一位置一或清零,同时不影响该端口其他位的状态。
控制字格式:
- 位选择:通过D3-D1设置进行置位或复位的数位。
- 置位或复位:通过设置最低位进行选择。
3.8255A的工作方式
3.1.方式0:基本输入输出方式
方式特点:该方式下8255A对3个端口24条数据线的用途没有任何强制性的规定,完全由使用者选择决定。
端口划分:可以将3个数据端口划分为4个可以进行独立输入输出的部分:端口A、端口B、端口C的高4位和端口C的低4位。
适用情况:该方式使用在无条件传送和查询式传送两种场合。
无条件传送下的使用方式:无条件传送一般用于连接简单的外部设备,此时接口和外部设备之间不使用联络信号,CPU可以随时对外部设备进行读写。
查询式传送下的使用方式:端口A和端口B作为数据的输入输出端口,端口C的若干位用作联络信号:通常把端口C的一组(4位)设置为输入,另一组(4位)设置为输出。将端口C的若干个输出引脚定义为端口A和端口B的控制信号,若干个输入引脚用作端口A和端口B的外部设备状态信号输入。
3.2.方式1:选通输入输出方式
方式特点:端口A和端口B用作8位数据的输入输出,端口C的一些引脚被规定为端口A、端口B的联络信号,不能再用于一般的输入输出。
引脚信号:如下图所示。
- #STBA和#STBB:外部设备数据输入选通信号,连接输入设备时使用,由外部设备送给8255A。该信号有效表示输入设备已经将数据准备好,已经出现在端口A或端口B的数据线上。这个信号同时使输入缓冲区满信号IBF变为有效。对于端口A,STBA信号将外部设备送往端口A的数据锁存到端口A输入锁存器内,端口B没有输入锁存功能。
- IBFA和IBFB:输入缓冲区满信号,连接输入设备时使用。IBF信号有效时,表示8255A相应端口已经接收到输入数据,但未被CPU取走,输入缓冲器已满。CPU可以通过读端口C得到IBFA和IBFB的状态。该信号一方面可供CPU查询,另一方面送给外部设备,组织外部设备发送新的数据。IBF信号由#STB信号置位,由CPU读信号的后沿将其复位。
- #OBFA和#OBFB:输出缓冲区满信号,连接输出设备时使用,由8255A输出给外部设备。当信号有效时,表示相应端口已经收到了来自CPU的数据,它的输出缓冲器数据有效,外部设备可以取走该数据。CPU可以通过读C端口获取#OBFA和#OBFB的状态。
- #ACKA和#ACKB:输出设备接收到数据后的应答信号,由外部设备输出给8255A。外部设备送回该信号表示外部设备已经接收到数据并输出完成,同时该信号会清除输出的#OBFA或#OBFB信号。CPU通过读端口C,获取#OBF为无效时,可以输出下一个数据给8255A相应的端口。
- INTEA和INTEB:端口A和端口B的中断允许信号。
- INTRA和INTRB:中断请求信号,由8255A输出给CPU或中断控制器。哪一个信号有效就表示哪一个端口正在申请中断。
工作特点:端口A和端口B中每有一个工作在方式1,则端口C中需要3位作为该方式的联络信号。
适用情况:如果外部设备能够向8255A提供输入数据选通信号和输出数据接收应答信号,就可以采用方式1,方便有效地传输数据。
具体应用场合:
- 中断方式:将INTE置为1,A组和B组可以使用各自的INTR信号申请中断。
- 查询方式:CPU通过读端口C,可以查询各个信号的当前状态,决定是否进行数据传输。
3.3.双向输入输出方式
方式特点:该方式下外设可以在端口的8位数据线上分别向8255A发送数据或从8255A接收数据,但是不能同时进行。只有端口A可以工作在方式2。
联络信号:该方式需要占用端口C的5位作为联络信号。
- INTE1:输出中断允许信号。信号有效时,8255输出缓冲器空时通过INTRA向CPU发出输出中断请求信号,为0时屏蔽。
- INTE2:输入中断允许信号。为1时允许,为0时屏蔽输入中断。
使用场合:如果一个外部设备既是输入设备也是输出设备,并且输入和输出是分时进行的,那么将此设备与8255A的端口A相连,并使得端口A工作在方式2就非常方便。
4.8255A与CPU的连接
- 与8088的连接:8088使用8位数据总线,8255A中的A1和A0可以直接与系统地址总线中的A1和A0连接。
- 与8086的连接:8086使用16位数据总线,访问8255A的四个端口时,编程地址应该是4个连续的偶地址。A0总是假定为0,8255的A1和A0引脚分别连接系统地址总线的A2和A1。