820 likes | 999 Views
第 10 章 可编程外围接口芯片 8255A 及其应用. 10.1 概述 10.2 8255A 的工作原理 10.3 8255A 的应用举例. 10.1 概述 10.1.1 并行通信. 并行接口 并行通信 : 各位数据都是并行传输的,它以字节(或字)为单位与 I/O 设备或被控对象进行数据交换。 并行通信由并行接口来完成 , 并行接口是连接 CPU 与并行外设的通道。 特点: 传输速度快;硬件开销大;只适合近距离传输。一个并行接口中包括状态信息、控制信息和数据信息。. ⑴ 状态信息
E N D
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 10.2 8255A的工作原理 10.3 8255A的应用举例
10.1 概述10.1.1 并行通信 • 并行接口 • 并行通信: • 各位数据都是并行传输的,它以字节(或字)为单位与I/O设备或被控对象进行数据交换。 • 并行通信由并行接口来完成,并行接口是连接CPU与并行外设的通道。 • 特点: • 传输速度快;硬件开销大;只适合近距离传输。一个并行接口中包括状态信息、控制信息和数据信息。
⑴状态信息 表示外设当前所处的工作状态。 例如:准备好信号表示输入设备已经准备好信息; 忙信号(BUSY)表示输出设备正在输出信息,等于指示CPU要处于等待状态。 ⑵控制信息 控制信息是由CPU发出的,用于控制外设接口的工作方式以及外设的启动和停机信息等。
⑶数据信息 CPU与并行外设数据交换的内容。 状态信息、控制信息和数据信息,通常都是通过数据总线传送,这些信息在外设接口中分别存取在不同的端口中。 对于一个外设接口,常常需要几个端口才能满足和协调外部设备的工作与要求,图10.1是一个典型的并行接口与CPU、外设的连接图。
数据总线 输入数据 输出数据准备好 输 控制寄存器 入 输入数据准备好 输入数据准备好 设 中断请求 备 输入应答 状态寄存器 复位 CPU 总线系统 IOR 输入缓冲寄存器 IOW 输出数据 输 出 输出缓冲寄存器 AEN 输出数据准备好 设 地 址 地址总线 CS 备 译码器 输出应答 A 0 A 1 图10.1 并行接口与CPU、外设的连接
2. 并行接口的组成 ⑴状态寄存器 状态寄存器用来存放外设的信息,CPU通过访问这个寄存器来了解某个外设的状态。 ⑵控制寄存器 并行接口中有一个控制寄存器,CPU对外设的操作命令都寄存在控制寄存器中。 ⑶数据缓冲寄存器 在并行接口中还设置了输入缓冲寄存器和输出缓冲寄存器,缓冲器是用来暂存数据,可以保证输入,输出数据的可靠性。因为外设与CPU交换数据,CPU的速度远远高于外设的速度。
3. 数据输入过程 数据输入过程,指的是外设向CPU输入数据。 4. 数据输出过程 数据输出过程,指的是CPU向外设输出数据。
10.1.2 串行通信 串行通信: 所谓串行通信是通过一位一位地进行数据传输来实现通信。 特点: 具有传输线少,成本低等优点,适合远距离传送;缺点是速度慢。若并行传送n位数据需时间T,则串行传送的时间最少为nT。 在实际传输中,是通过一对导线传送信息。在传输中每一位数据都占据一个固定的时间长度。 1. 串行接口的组成 串行接口是通过系统总线和CPU相连,串行接口部件的典型结构如图10.2所示。主要由控制寄存器、状态寄存器、数据输入寄存器和数据输出寄存器4部分组成。
数据总线 R RDY x 控制寄存器 T RDY x 接 状态寄存器 收 串 复位 时 CPU 入 钟 总线系统 并 IOR 数据输入寄存器 出 串行数据输入 IOW 发 送 并 数据输出寄存器 AEN 时 入 地 址 地址总线 钟 串 CS 译码器 出 串行数据输出 C/ D MODEM控制 图10.2 串行接口与CPU、外设的连接
⑴控制寄存器 控制寄存器用来保存决定接口工作方式的控制信息。 ⑵状态寄存器 状态寄存器中的每一个状态位都可以用来标识传输过程中某一种错误或当前传输状态。 ⑶数据寄存器 ①数据输入寄存器:串行数据一位一位地从传输线进入,经过串入并出(串行输入并行输出)电路的转换,当接收完一个字符之后,数据就从移位寄存器传送到数据输入寄存器,等待CPU读取。
②数据输出寄存器:CPU输出一个数据时,先送到数据输出缓冲寄存器,然后传到移位寄存器,经过并入串出(并行输入串行输出)电路的转换一位一位地通过输出传输线送到对方。②数据输出寄存器:CPU输出一个数据时,先送到数据输出缓冲寄存器,然后传到移位寄存器,经过并入串出(并行输入串行输出)电路的转换一位一位地通过输出传输线送到对方。
10.2 8255A的工作原理 并行接口电路,在早期的微机中与串行口、软盘接口、硬盘接口等都放在一块多功能接口卡上,插在微机的扩展槽上使用。现在这部分电路已在微机的主板上由与CPU配套的北桥芯片组来实现其功能。 在电路设计时采用专用的接口芯片,可编程的接口芯片8255A是完成并行通信的集成电路芯片。
CPU接口 内部逻辑 外部接口 PA ~PA 7 0 A组 端口 PA 1 40 PA 控制 A(8) 3 4 PA 2 39 PA 2 5 PA 3 38 PA 1 6 PA 4 37 PA 0 7 RD 5 36 WR PC ~PC 端口C CS 6 35 RESET 7 4 上半部 GND 7 34 D 0 (4) A 8 33 D 0 1 A 9 32 D 1 2 8位 数 据 DB PC 10 31 D 7 3 8255A 总 线 PC ~PC PC 11 30 D 端口C 3 0 6 4 内部 缓冲器 下半部 PC 12 29 D 5 5 数据总线 (4) PC 13 28 D 4 6 PC 14 27 D 0 7 RD PC 15 26 V 1 CC PC 16 25 PB WR PB ~PB 读写 2 7 7 0 B组 端口 PC 17 24 PB A 控制 3 6 控制 B(8) 0 PB 18 23 PB 逻辑 0 5 A PB 19 22 PB 1 1 4 RESET PB 20 21 PB 2 3 CS ( a ) ( b ) 8255内部结构和引脚图 (a) 8255A内部结构;(b) 8255A外引脚图
可编程并行接口芯片应具有的功能: (1) 具有两个以上的输入/输出数据端口(锁存/缓冲); (2) 每个数据端口有与CPU用应答方式交换信息所必须的控制和状态信息;也有与外设交换信息所必须的控制和状态信息; (3) 通常每个数据端口还具有能用中断方式与CPU交换信息所必须的电路; (4) 具有进行片选和读写控制的电路; (5) 可编程(由程序来选择数据端口,数据传送方向,交换信息的方式等)。
内部总线 PA7~PA0 A组控制 A口 D7~D0 数据总线 PC7~PC4 上C口 缓冲器 PC3~PC0 RD 下C口 o WR o 读/写 A0 控制逻辑 PB7~PB0 A1 B口 B组控制 RESET o CS 外设接口 内部逻辑 CPU接口 一、8255A的结构和功能
(一) 数据端口 8255A内部包含3个8位I/O端口A口、B口和C口,通过外部24根I/O线与外设交换数据或进行通信联络。其中C口可分为两个4位口使用。 PA7~PA0 A口 内部总线 PC7~PC4 上C口 PC3~PC0 下C口 PB7~PB0 B口 端口A和端口B可用作8位 数据I/O口,端口C既可作为8位I/O口,又可作为两个4位I/O口,还常用来配合A口和B口工作,作为控制信号输出、或作为状态信号输入。
A组控制 内部总线 B组控制 (二) 控制逻辑 这是两组根据CPU的编程命令控制8255A工作的电路,控制寄存器用来接收CPU送来的命令字,以决定A组、B组的工作方式,或对C口的每一个位执行位操作。
(三) 数据总线缓冲器 是双向三态的8位缓冲器, 用作8255A和系统数据总线的接口。 1)传送系统对8255A的控制字; 2)传送各端口的输入、输出数据。 内部总线 DB 数据总线 缓冲器 (四) 读/写控制逻辑 RD 控制总线的开放与关闭;控制信息传送的路径和方向。 o o 读/写 WR A0 至控制寄存器 控制逻辑 A1 RESET o 至数据端口 CS
8255A端口选择表 (五) 端口寻址
AB CB DB D7~D0 8255 PA PB PC 4 4 8 8 I/O I/O I/O I/O PA7 ~PA0 PB7 ~PB0 PC3 ~PC0 PC7 ~PC4 PB PA PC 8 I/O 8 I/O PB7 ~PB0 PA7 ~PA0 控制或 I/O 控制或 I/O RD WR A0 A1 CS PB PA PC 8 I/O 8 I/O PB7 ~PB0 PA7 ~PA0 I/O 控制 (六) 方式选择 方式0:基本输入输出 方式1:选通输入输出 方式2:双向传送
方式选择控制字格式 1=输入0=输出 1=输入0=输出 1=输入0=输出 1=输入0=输出 特征位 D7=1 下C口 I/O A组方式: 00=方式0 01=方式1 1x=方式2 B口I/O B组方式 0=方式0 1=方式1 上C口I/O A口I/O 二、8255A的控制字 1、方式选择控制字 8255A有3种基本的工作方式,在对8255A进行初始化编程时,应向控制寄存器写入方式选择控制字,以规定各端口的工作方式。
1 0 0 1 0 1 0 1 例:在一个8086/8088系统中,有一片8255芯片,其各个端口的地址分别为0F8H~0FBH,现要求各个端口的工作方式为: 端口A 方式0 输入 端口B 方式1 输出 端口C(上半部) PC7 ~PC4 输出 端口C(下半部) Bit3 输入 要求:进行初始化编程 分析:根据8255工作模式可确定方式控制字 95H 初始化编程: MOV AL,95H OUT 0FBH,AL
2、C口按位置位/复位控制字 端口C常用作控制或应答信号,通过对8255A的控制口写入按位置位/复位控制字,可使C口的任一个引脚的输出单独置1或置0。 1 置位 0 复位 C口按位置位/复位控制字格式 000 选中PC0 001 选中PC1 111 选中PC7 位选择 无关位 特征位 D7 = 0 例:要使端口C的bit3置位的控制字为:00000111B; MOV AL,00000111B OUT 0FBH,AL 而使端口C的bit3复位的控制字为:00000110B ; MOV AL,00000110B OUT 0FBH,AL
输入 数据有效 RD CS,A0,A1 D0~D7 数据有效 三、8255A的工作方式 1、方式 0-基本输入输出方式 适用于不需要应答信号的简单I/O场合。 A口和B口可作为8位端口,C口的高4位和低4位可作为两个4位的端口,且每个端口均可作为输入口或输出口用。 数据输出有锁存,输入无锁存。 方式0的输入时序
例如:要求8255A的A口和B口均工作于方式0, A口和下C口作输入口, B口和上C口作输出口,设8255A各端口地址为40H~43H, 可用下列指令来设置这种工作方式: MOV AL,91H ;方式控制字10010001B OUT 43H,AL ;方式控制字送控制寄存器 WR CS,A0,A1 D0~D7 数据有效 输出 数据有效 方式0的输出时序
方式0一般用于无条件传送的场合,不需要应答式联络信号,外设总是处于准备好的状态。方式0一般用于无条件传送的场合,不需要应答式联络信号,外设总是处于准备好的状态。 也可以用作查询式传送,查询式传送时,需要有应答信号。可以将A端口、B端口作为数据口使用。C端口则可用来输出一些控制信息,或输入外设的状态。利用C端口配合A端口和B端口完成查询式的I/O操作。
2. 方式1--选通输入/输出方式 当A端口和B端口以方式1进行输入输出时,必须利用C端口提供的固定的选通和应答信号,该方式也称选通输入/输出方式。 方式1的基本定义是: 分成A组和B组,每组包含一个8位的数据端口和1个4位的控制/数据端口。 可作输入,也可作输出,且输入和输出都可以被锁存。
1) 选通的输入方式 规定:PC3~PC5分配给A端口作联络线, PC0~PC2分配给B端口作联络线, C端口剩下的2位PC7、PC6可作为简单的输入/输出线使用。
A组工作于方式1输入的控制字 A组和B组工作于方式1输入的控制字 B组工作于方式1输入的控制字 D D D D D D D D D D D D D D D D D D D D D D D D 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 1 0 1 1 I/O 1 0 1 1 I/O 1 1 1 1 1 PC 、PC PC 、PC 方式1 方式1 7 6 7 6 1=输入 1=输入 B端口为输入 0=输出 0=输出 A端口为输入 PA ~PA PB ~PB 8 8 7 0 7 0 INTE INTE PC STB PC STB A B 4 A 2 B PC IBF PC IBF 5 A 1 B & & PC INTR PC INTR 3 A 0 B RD 2 RD PC ~PC I/O 7 6 ( a ) ( b ) 方式1选通输入下对应的控制信号图 (a) 对A端口;(b) 对B端口
方式1选通输入方式下各控制信号的意义: STB(Strobe):选通输入信号,低电平有效。A组方式控制字中对应PC4;B组方式控制字中对应PC2。 IBF(Input Buffer Full):输入缓冲器满信号,高电平有效。 是8255A送给外设的联络信号,A组方式控制字中对应PC5;B组方式控制字中对应PC1,该信号可供CPU查询。 该信号在选通输入信号STB变低后,300 ns时间内即变为有效的高电平。在RD信号撤消后的300 ns时间内IBF信号才撤消,变为无效的低电平,这样保证了数据传输的可靠性。
INTR(Interrupt Request):中断请求信号,高电平有效。A组方式控制字中对应PC3;B组方式控制字中对应PC0。当STB信号撤消变为高电平后,并且IBF信号也为高电平,INTR信号变为有效的高电平。 当CPU发出的RD信号有效后,400 ns的时间内INTR信号将撤消,变为低电平。 INTE(Interrupt Enable):中断允许信号,高电平有效。否则屏蔽中断请求。 INTE的状态是用软件通过由C端口置1/置0控制字来控制的,在A组中,使PC4置“1”后INTEA变高;在B组中,使PC2置“1”后INTEB变高,A端口和B端口才允许中断。如果PC4和PC2都置“0”,与之对应的INTE信号为低,则禁止中断。
输入缓冲器满状态,可供CPU来查询。在选通输入信号结束后向CPU发出中断请求信号,INTR变高(中断允许情况下),如图10.13中表示的箭头②。输入缓冲器满状态,可供CPU来查询。在选通输入信号结束后向CPU发出中断请求信号,INTR变高(中断允许情况下),如图10.13中表示的箭头②。 在中断服务程序中CPU发出读信号RD,RD的下降沿清除中断请求,如图10.13中表示的箭头③。当读信号结束后,使输入缓冲器满信号IBF变低,如图10.13中表示的箭头④。IBF变低表明输入缓冲器已空,通知外设可以输入新的数据。 选通输入方式的工作过程: 当外设数据已送到8255A某个端口的数据线上时,就发出选通输入信号STB,将数据通过A端口或B端口锁存到8255A的数据输入寄存器。STB信号变低将使输入缓冲器满信号IBF变高,如图10.13中表示的箭头①。输入缓冲器满意味着将阻止外设输入新的数据。
参 数 说 明 8255A 最小时间/ns 最大时间/ns tST 选通脉冲的宽度 500 tSIB 选通脉冲有效到IBF有效之间的时间 300 tSIT =1到中断请求INTR有效之间的时间 300 tPH 数据保持时间 180 tPS 数据有效到 无效之间的时间 0 tRIT 有效到中断请求撤除之间的时间 400 tRIB 为1到IBF为0之间的时间 300 8255A方式1输入时序参数说明表
选通的输入方式CPU如何读取数据? 1、采用查询式输入,CPU先查询IBF是否为高? 若IBF为高,8255A的输入缓冲器就为满,则CPU可从8255A读入数据。 2、采用中断方式传送数据,先用C端口置1/置0的控制字使相应的端口允许中断,也就是要使PC4或PC2置1。
2) 选通的输出方式 这种方式的工作过程与选通输入的情况相类似。对应的C端口也是固定分配。 规定:PC3、PC6、PC7分配给A端口; PC2、PC1、PC0分配给B端口, 剩下的2位PC4、PC5可作为简单的输入/输出线使用。 当控制字的D3位为“1”时,PC4、PC5作输入;当控制字的D3位为“0”时,PC4、PC5作输出。
A组工作于方式1输出的控制字 A组和B组工作于方式1输出的控制字 B组工作于方式1输出的控制字 D D D D D D D D D D D D D D D D D D D D D D D D 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 1 0 1 0 I/O 1 0 1 0 I/O 1 0 1 1 0 PC 、PC PC 、PC 方式1 方式1 5 4 5 4 1=输入 1=输入 B端口为输出 0=输出 0=输出 A端口为输出 PA ~PA 8 PB ~PB 8 7 0 7 0 INTE INTE PC ACK PC ACK A B 6 A 2 B PC OBF PC OBF 7 A 1 B & & PC INTR PC INTR 3 A 0 B WR 2 WR PC ~PC I/O 5 4 ( a ) ( b ) 方式l输出时C端口对A、B端口的控制图 (a) 对A端口;(b) 对B端口
方式1选通输出方式各控制信号的意义: OBF(Output Buffer Fu11):输出缓冲器满信号,低电平有效。A组方式控制字中对应PC7;B组方式控制字中对应PC1,由8255A向外设发出低电平的OBF信号。 输出指令写信号WR的上升沿出现后,将OBF信号置成有效低电平,如图10.15中表示的箭头②。当应答信号ACK变为有效低电平后,OBF信号撤消变为高电平,如图10.15中表示的箭头③。 ACK(Acknowledge):数据接收应答信号,低电平有效。A组方式控制字中对应PC6;B组方式控制字中对应PC2,是外设的响应信号。 ACK信号有效后使OBF变成无效的高电平,同时使INTR信号变为有效的高电平。
INTR:中断请求信号,高电平有效。A组方式控制字中对应PC3;B组方式控制字中对应PC0。由8255A向CPU发出中断请求,要求CPU输出新的数据。INTR:中断请求信号,高电平有效。A组方式控制字中对应PC3;B组方式控制字中对应PC0。由8255A向CPU发出中断请求,要求CPU输出新的数据。 当ACK撤消后为高电平,OBF也为高电平,中断允许信号INTE也为高时,INTR中断请求信号被置位为高电平,如图10.19中表示的箭头④。 中断请求信号是在WR有效的下降沿出现后使它变为无效的低电平,如图10.19中表示的箭头①。 INTE:中断允许信号,高电平有效。当该信号为“1”时,允许中断。INTE是用软件通过对C端口置1/置0的控制字来设置的。当PC6置1时,A端口允许中断;PC2置1,B端口允许中断。反之,不允许中断。
当8255A的输出选通方式采用中断与CPU通信时,CPU响应中断后,就向8255A输出数据, WR信号出现,其上升沿一方面撤消中断请求信号使INTR变低,表示CPU对上一次中断已经响应过。另一方面使OBF信号变为有效的低电平,以通知外设可以接收下一个数据。
参 数 说 明 8255A 最小时间/ns 最大时间/ns tWIT 从写信号有效到中断请求无效的时间 850 tWOB 从写信号无效到输出缓冲器清的时间 650 tAOB 有效到无效的时间 350 tAK 脉冲的宽度 300 tAIT 为1到发新的中断请求的时间 350 tWB 写信号撤除到数据有效的时间 350 8255A方式1输出时序参数说明表
3. 方式2--带选通的双向传输方式 双向方式8255A可以向外设发送数据,同时CPU通过这8位数据线又接收外设的数据。传输过程由C端口对A端口进行控制,所以称为带选通的双向传输方式。 方式2的基本定义: 只能适用于A端口,一个8位的双向端口(A端口)和1个5位的控制端口(C端口)。 A端口的输入和输出都可以被锁存。在这种方式下,C端口中高5位PC7~PC3作为控制信号和状态信息使用,剩下的3位PC2~PC0可作为简单的输入/输出线使用。
≥1 PC INTR 3 A A组工作于方式1输入的控制字 PA ~PA 8 & 7 0 D D D D D D D D 7 6 5 4 3 2 1 0 PC OBF 7 A 1 1 INTE1 PC ACK & 6 A PC ~PC A端口 2 0 方式 1=输入 PC STB B组方式 B端口方式 WR 4 A 0=输出 INTE2 PC IBF 1=输入 0=方式0 5 A RD 3 0=输出 PC ~PC I/O 1=方式1 2 0 方式2时C端口对A端口的控制信号图
方式2各控制信号的意义: STB:选通信号,低电平有效。对应于PC4,由外设提供给8255A。该信号负责把外设送到8255A的数据送入输入锁存器。 IBF:输入缓冲器满信号,高电平有效。对应PC5,是8255A送给CPU的状态信息,供CPU查询用。当该信号有效时,表示当前已经有一个新的数据送到了输入锁存器中,CPU可以取走。
OBF:输出缓冲器满信号,低电平有效。对应PC7,由8255A发给外设的选通信号,当OBF有效时,表明CPU已经将一个数据写入8255A的A端口中,通知外设可以取走数据。OBF:输出缓冲器满信号,低电平有效。对应PC7,由8255A发给外设的选通信号,当OBF有效时,表明CPU已经将一个数据写入8255A的A端口中,通知外设可以取走数据。 ACK:数据接收应答信号,低电平有效。对应PC6,这是外设对信号OBF的响应信号,该信号为低电平时,使A端口的输出缓冲器打开,送出数据到外设。否则,当该信号为高电平时,方式2时输出缓冲器处于高阻状态。
INTR:中断请求信号,高电平有效。对应PC3,不论A端口工作在输入方式还是工作在输出方式,当一个操作完成,并且要进入下一个操作时,8255A都要向CPU发出中断请求信号。INTR:中断请求信号,高电平有效。对应PC3,不论A端口工作在输入方式还是工作在输出方式,当一个操作完成,并且要进入下一个操作时,8255A都要向CPU发出中断请求信号。 INTEl:输出中断允许信号。为“1”时,允许向CPU发出由A端口输出数据的中断请求信号。反之,即使输出缓冲器空,也不允许8255A向CPU发中断请求信号。INTEl信号的置1或置0,是用软件使C端口的PC6置1或置0来实现的。 INTE2:输入中断允许信号。为“1”时,允许A端口的输入处于中断允许状态,反之,不允许中断。INTE2信号的置1或置0,同样是用软件通过C端口的PC4置1或置0来实现。 * 方式2的工作时序基本相当于方式1的选通输入时序和选通输出的时序的组合。
参 数 说 明 8255A 最小时间/ns 最大时间/ns tST 选通脉冲的宽度 500 tPH 数据保持时间 180 tSIB 选通脉冲有效到IBFA有效之间的时间 300 tPS 数据有效到 无效之间的时间 0 tWOD 从写信号无效到, 有效的时间 650 tAOD 有效到 无效的时间 350 tAD 有效到数据输出的时间 350 tHD 数据保持时间 200 表10-6 8255A方式2时序的参数说明
总结: 8255A有三种工作方式,用户可以通过编程来设置 • 方式0:基本输入输出方式 • 适用于无条件传送和查询方式的接口电路,A、B、C三个端口均可 。 • 方式1:选通输入输出方式 • 适用于查询和中断方式的接口电路,A 、B两个端口均可。 • 方式2:双向选通传送方式 • 适用于双向传送数据的外设,只有A端口才有。 • 适用于查询和中断方式的接口电路 初始化编程后: • 当数据端口作为输入接口时,执行输入IN指令将从输入设备得到外设数据 • 当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备