第八章 并行接口芯片

Post on 12-Jan-2016

179 views 0 download

description

第八章 并行接口芯片. 教学重点 8255A 的功能 8255A 的内部结构、引脚 8255 的工作方式和编程 8255 的应用. 并行数据传输方式. 并行传输以计算机的字长为传输单位(通常是 8 位、 16 位或 32 位),一次传送 1 个字长的数据 并行传输 微机系统中最基本的信息交换方法 例如:系统板上各部件之间,接口电路板上各部件之间 适合于外部设备与微机之间进行近距离、大量和快速的信息交换 例如:微机与并行接口打印机、磁盘驱动器. 第一节 可编程的输入输出接口 8255A. 8255A 是具有多种功能的可编程并行接口电路芯片, 40 个引脚。 - PowerPoint PPT Presentation

Transcript of 第八章 并行接口芯片

第八章 并行接口芯片

教学重点 8255A 的功能 8255A 的内部结构、引脚 8255 的工作方式和编程 8255 的应用

并行数据传输方式

并行传输以计算机的字长为传输单位(通常是 8位、 16 位或 32 位),一次传送 1 个字长的数据

并行传输微机系统中最基本的信息交换方法 例如:系统板上各部件之间,接口电路板上各部件之

间 适合于外部设备与微机之间进行近距离、大量和

快速的信息交换 例如:微机与并行接口打印机、磁盘驱动器

第一节 可编程的输入输出接口 8255A 8255A 是具有多种功能的可编程并行接口电路

芯片, 40 个引脚。 一、 8255A 的结构 8255 有 3 个 8 位的数据端口( A/B/C ),共 2

4 个 I/O 引脚,各端口共有 3 种输入输出工作方式 基本输入 / 输出( A/B/C 口) 选通输入或选通输出( A/B 口) 双向选通( A 口)

一、 8255A 的内部结构和引脚

数据总线

缓冲器

内部控制线

内部数据线D0 ~ D7

A 组控制

A 组端口 C

上部

B 组控制

B 组端口 B

B 组端口 C

下部

读写控制逻辑 PC0 ~ PC3

CL 口

PB0 ~ PB7

B 口

PC4 ~ PC7

CH 口

PA0 ~ PA7

A 口

RDWR

A0

A1

CSRESET

A 组端口 A

5

1. 连接外设的数据端口 端口 A : PA0-PA7 , 8 位端口,支持工作方式 0 、 1 、 2 端口 B : PB0-PB7 , 8 位端口,支持工作方式 0 、 1 端口 C : PC0-PC7 ,拆分为两个 4 位端口,仅支持工作方式 0

端口 A : PA0-PA7 (A 组控制 ) 常作数据端口使用,功能最强大

端口 B : PB0-PB7 (B 组控制 ) 常作数据端口使用

端口 C : PC4-PC7 (A 组控制 ) , PC0-PC3 (B 组控制 ) 可作数据、状态或控制端口使用 可拆分成两个 4 位端口分别输入或输出 每位可独立进行输出控制(位控制) 使用最灵活,较难掌握

2. 与处理器的连接引脚

CS A1 A0 I/O 地址 读操作 RD 写操作 WR0 0 00 0 10 1 00 1 1

60H61H62H63H

读端口 A读端口 B读端口 C

非法

写端口 A写端口 B写端口 C

写方式字和位控字

二、 8255A 的工作方式 P343 图 8-2

方式 0 :基本输入输出方式(不带联络) 适用于无条件传送和查询方式的接口电路

方式 1 :选通输入输出方式(带输入联络或输出联络) 适用于查询和中断方式的接口电路

方式 2 :双向选通方式(同时带输入联络和输出联络) 适用于可双向传送数据的外设 适用于查询和中断方式的接口电路

方式 0 的输入时序(数据来自外设)

外设提供数据输入端口

D0 ~ D7

RD

CS 、 A1A0

请体会这里 8255A 的数据缓冲作用

数据

8255 外设CPU内总线 外总线

方式 0 的输出时序(数据来自 CPU )

WR

CPU 数据

数据输出端口

D0 ~ D7

CS 、 A1A0

8255A 对 CPU 输出的数据进行锁存

8255 外设CPU内总线 外总线

方式 1 输入引脚:端口 A

PC4

PC5

PC3

PA7~PA0

INTEA

IBFA

INTRA

STBA

中断允许触发器

输入缓冲器满信号表示 A 口已经接收数据

数据选通信号表示外设已经准备好数据

中断请求信号请求 CPU 接收数据

外设数据

征用 C 口 3 引脚和 1 个控制位

方式 1 输入引脚:端口 B

PC2

PC1

PC0

PB7~PB0

INTEB

IBFB

INTRB

STBB

中断允许触发器

输入缓冲器满信号表示 B 口已经接收数据

数据选通信号表示外设已经准备好数据

中断请求信号请求 CPU 接收数据

外设数据

征用 C 口 3 引脚和 1 个控制位

方式 1 输入 联络信号 STB—— 选通信号,低电平有效

由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至 8255A 的输入锁存器

IBF—— 输入缓冲器满信号,高电平有效 8255A 输出的联络信号。当其有效时,表示数据已锁

存在输入锁存器 INTR—— 中断请求信号,高电平有效

8255A 输出的信号,可用于向 CPU 提出中断请求,要求 CPU 读取外设数据

方式 1 输入 时序

外设数据

INTR

IBF

数据

输入端口

D0 ~ D7

STB

RD

STB 和 IBF 是外设和 8255A 间的一对应答联络信号,为的是可靠地输入数据

方式 1 中断控制

8255A 的中断由中断允许触发器 INTE 控制 置位允许中断,复位禁止中断

对 INTE 的操作通过写入端口 C 的对应位实现,INTE 触发器对应端口 C 的位是作应答联络信号的输入信号的哪一位,只要对那一位置位 / 复位就可以控制 INTE 触发器

选通输入方式下 端口 A 的 INTEA 对应 PC4 端口 B 的 INTEB 对应 PC2

方式 1 输出引脚:端口 A

PC6

PC7

PC3

PA7~PA0

INTEA

OBFA

INTRA

ACKA

输出缓冲器满信号表示 CPU 已经输出了数

外设响应信号表示外设已经接收到数据

中断请求信号请求 CPU 再次输出数据

征用 C 口 3 引脚和 1 个控制位

中断允许触发器通过位控 PC6 设

置 INTEA

输出数据

方式 1 输出引脚:端口 B

PC2

PC1

PC0

PB7~PB0

INTEB

OBFB

INTRB

ACKB

输出缓冲器满信号表示 CPU 已经输出了数

外设响应信号表示外设已经接收到数据

中断请求信号请求 CPU 再次输出数据

征用 C 口 3 引脚和 1 个控制位

中断允许触发器通过位控 PC2 设置

INTEB

输出数据

方式 1 输出联络信号 OBF—— 输出缓冲器满信号,低电平有效

8255A 输出给外设的一个控制信号,当其有效时,表示 CPU 已将输出数据锁存在 8255A 指定的端口,外设可以来取

ACK—— 响应信号,低电平有效 外设提供的响应信号,通知 8255A 其端口数据已被

外设接收 INTR—— 中断请求信号,高有效

当输出设备已接受数据后, 8255A 输出此信号向 CPU 提出中断请求,要求 CPU 继续提供数据

端口 A 的 INTEA 对应 PC6 端口 B 的 INTEB 对应 PC2

方式 1 输出 时序

8255 外设CPU内总线 外总线

INTR

CPU 数据

数据输出端口D0 ~ D7

WR

OBF

ACK

-OBF 和 -ACK 是外设和 8255A 间的一对应答联络信号,为的是可靠地输出数据

方式 2 双向选通方式 方式 2 将方式 1 的选通输入与选通输出功能组合

成一个双向数据端口,可以发送数据和接收数据 只有端口 A 可以工作于方式 2 ,需要利用端口

C 的 5 个信号线,其作用与方式 1 相同 方式 2 的数据输入过程与方式 1 的输入方式一样 方式 2 的数据输出过程与方式 1 的输出方式有一

点不同:数据输出时 8255A 不是在 OBF 有效时向外设输出数据,而是在外设提供响应信号 ACK 有效时才送出数据

方式 2 双向选通引脚

PC6

PC7

PC3

PA7~PA0

INTE1

-OBFA

INTRA

ACKA

PC4

PC5 IBFA

STBAINTE2

数据

输入中断和输出中断

通过或门输出 INTRA 信号

征用 C 口 5 引脚和 2 个控制位

中断允许触发器(控制中断输出)通过位控 PC6 设置

INTE1

中断允许触发器(控制中断输出)通过位控 PC4 设置

INTE2输入联络输入联络

输出联络输出联络

方式 2 双向选通时序

该例中: CPU先输出数据,再读取外设输入的数据

INTR

输出数据

输入数据

输入数据PA0 ~ PA7

D0 ~ D7

IBF

WR

OBF

ACK

STB

RD

输出数据

三、 8255A 的编程

初始化编程:只写 1 个方式控制字到控制口 控制口 I/O 地址: A1A0= 11

工作过程中:通过数据端口对外设数据进行读写 数据口 A 、 B 和 C 的 I/O 地址,分别为: 00 、 01 、

10 IBM PC/XT 机上,数据口 A/B/C 和控制口的 I/O

地址分别为: 60H 、 61H 、 62H 和 63H

1. 向控制口写方式字——控制字格式

D7 D6 D5 D4 D3 D2 D1 D0

0 0 1 0 0 1 0 1

1 A 口工作方式

00 方式 0 01 方式 1 1x 方式 2

A 口输出/ 输入

0 输出1 输入

CH口输出 / 输

0 输出1 输入

B 口工作方式

0 方式0

1 方式1

B 口输出 / 输

0 输出1 输入

CL口输出 / 输

0 输出1 输入

A 组控制 B 组控制

表示: A 口方式 1 输出, CH口输出, B 口方式 1输入, CL口输入。

25h

1. 向控制口写方式字——示例

要求: A 口:方式 1 输入 CH口:输出 CL口:输入 B 口:方式 0 输出

方式控制字: 1 0110 001 B 或 B1H 初始化的程序段:mov dx,0fffeh ; 假设控制端口为 FFFEHmov al,0b1h ;方式控制字out dx,al ;送到控制端口

2. 读写数据端口 (A 口 /B 口 /C 口 )

初始化编程后: 当数据端口作为输入接口时, CPU执行输入

IN 指令, CPU 将从输入设备得到外设数据 当数据端口作为输出接口时, CPU执行输出

OUT 指令,将把 CPU 的数据送给输出设备 8255A 具有锁存输出数据的能力

对设置为输出的端口同样可以输入(读) 此时不是读取外设数据,而是读取的是前次 C

PU 输出给外设的数据(锁存在锁存器中)

2. 读写数据端口:示例

利用 8255A 的输出锁存能力,可实现对某一位的输出控制

对输出端口 B 的 PB7 位置位的程序段:mov dx,0fffah ;B 端口假设为 FFFAHin al,dx ; 读出 B 端口原输出内容or al,80h ;使 PB7= 1out dx,al ;输出新的内容

3. 涉及 C 口的操作——归纳 1

在控制上, C 口上半部( CH )和 A 口被编为 A 组, C口下半部( CL )和 B 口被编为 B 组。即它被拆分成两个4 位端口分别进行控制 :

两个 4 位端口均只能工作于方式 0 (指未被征用的引脚) 但可分别选择输入或者输出

C 口具有唯一的地址,可按 8 位方式进行读 / 写,此时: 设置为输出的引脚可读可写(输出锁存器) 设置为输入的引脚可读(引脚)、写操作无意义 在选通方式下,对被征用的引脚可读(分别映射到中断允许位、

输入 / 输出缓冲器状态位、中断请求状态位)。 C 口还可通过位控字进行按位的写(只写 C 口 1 位):

对设置为输出的引脚可写(输出锁存器) 在选通方式下,对被征用的输入引脚可写(映射到中断允许位)

3. 涉及 C 口的操作——归纳 2 当 A 和 B 口工作在方式 1 或方式 2 时, C 口的部分

引脚或全部引脚将被征用: A 口方式 1 将征用 C 口 3 个引脚:

输出: PC6/PC7 (输出联络) , PC3 (中断) 输入: PC4/PC5 (输入联络) , PC3 (中断)

B 口方式 1 将征用 C 口 3 个引脚: 输出: PC2/PC1 (输出联络), PC0 (中断 ) 输入: PC2/PC1 (输入联络), PC0 (中断 )

A 口方式 2 将征用 5 个引脚: PC4/PC5 (输入联络), PC6/PC7 (输出联络 ), PC3 (中

断) C 口未被征用的引脚仍将工作在方式 0 ,但必须成

组进行设置,即 CH 或 CL 中的引脚必须同为输入或同为输出。

3. 涉及 C 口的操作——归纳 3

对 C 口的数据输出有两种办法 向 C 口直接写字节数据——该数据将被写进 C 端口的

输出锁存器中,并从设置为输出的引脚输出,但对设置为输入的引脚无效。

向控制口写位控字——使 C 口设置为输出的某个引脚输出 1 或 0 。

在选通方式下向控制口写位控字——还可置位或复位 8255 内部的中断允许触发器。在选通方式下,该触发器已被映射在 C 口被征用的某个输入引脚上。

向控制口写入位控字

位控字用于控制 C 口的输出引脚( CH/CL 口工作于基本方式)或内部的中断允许位( A/B 口工作于选通方式),

位控字应写入 8255 的控制口,例如:mov al,0dh

out 控制口 ,al 当 CH 工作在非选通输出方式时,令 PC6 引脚输出 1; 当 A 口工作在选通输出或双向选通输出方式时,将相应的中

断允许位 INTEA 或 INTE1 置 1 (开中断)。

位控字用于控制 C 口的输出引脚( CH/CL 口工作于基本方式)或内部的中断允许位( A/B 口工作于选通方式),

位控字应写入 8255 的控制口,例如:mov al,0dh

out 控制口 ,al 当 CH 工作在非选通输出方式时,令 PC6 引脚输出 1; 当 A 口工作在选通输出或双向选通输出方式时,将相应的中

断允许位 INTEA 或 INTE1 置 1 (开中断)。

D7 D6 D5 D4 D3 D2 D1 D0

0标志

x x x位编码

位数据

0 x x x 1 1 0 1 0dh

3. 涉及 C 口的操作——归纳 4 读取 C 口数据有两种情况: 针对未被 A 和 B 端口征用的引脚:

将从定义为输入的位读到引脚上的输入信息 将从定义为输出的位读到前次输出锁存的信息

针对已被 A 和 B 端口征用作为联络线的引脚: 将读到反映 8255A 工作状态的状态字,其中包括:

数据缓冲器的状态( -OBFx 或 IBFx ) 中断允许的状态( INTEx ) 中断请求的状态( INTRx )

D7 D6 D5 D4 D3 D2 D1 D0

方式 1 输入( A 口、 B 口)I/O I/O IBFA INTEA INTRA INTEB IBFB INTRB

方式 1 输出( A 口、 B 口)OBFA INTEA I/O I/O INTRA INTEB OBFB INTRB

方式 2 双向( A 口)OBFA INTE1 IBFA INTE2 INTRA × × ×

从端口 C 读到状态字A 组控制 B 组控制

10.2 8255A 的应用

作为通用的并行接口电路芯片, 825A 具有广泛的应用,如 : 应用在 IBM PC/XT 微机上 应用于打印机接口电路 用于连接简易键盘 用于驱动 LED 数码管 等等

第二节 8255A 在 IBM PC/XT 上的应用

工作在基本输入 / 输出方式 0 端口 A 为方式 0 输入,用来读取键盘扫描码 端口 B 工作于方式 0 输出,例如控制扬声器等 端口 C 为方式 0 输入,读取系统状态和配置

系统的初始化编程:mov al,1 0011 001 b ;方式控制字 99Hout 63h,al

打印机接口的信号与时序

主机把数据送给引脚 DATA0 ~ DATA7 同时送出数据选通信号 STROBE 打印期间,打印机在 BUSY信号线上发出忙信号 打印机处理好输入的数据时

撤消忙信号 同时又送出一个响应信号 ACK

主机把数据送给引脚 DATA0 ~ DATA7 同时送出数据选通信号 STROBE 打印期间,打印机在 BUSY信号线上发出忙信号 打印机处理好输入的数据时

撤消忙信号 同时又送出一个响应信号 ACK

以打印机为例说明 8255 应用 打印机接口的信号与时序

BUSY (出)

DATA0 ~ 7 (入)

ACK (出)

STROBE (入)

打印机忙

打印机响应

一般用于查询

一般用于选通

用 8255A 方式 0 与打印机接口

BUSY

DATA0 ~ 7

8255A

PC7

PC2

PA0 ~ PA7

打印机

STROBE

8255A的初始化mov dx,0fffeh ; 控制口地址: FFFEH

mov al,1 0000 001B ; 方式控制字: 91H

out dx,al ;A 口方式 0 输出, CH 输出、 CL

输入

mov al,0 000 111 1B ; 位控字,令 PC7= 1 ,即 -STROB

E 无效

out dx,al

例 10.1

打印子程序:查询

printc proc

push ax

push dx

prn: mov dx,0fffch ; 读取端口 C

in al,dx ; 查询打印机状态and al,04h ;测试 PC2 ( BUSY )jnz prn ; 为 1 ,打印机忙,则循环等

例 10.1

打印子程序:输出

mov dx,0fff8h ; 为 0 ,打印机不忙,则输出数据mov al,ah

out dx,al ; 将打印数据从端口 A 输出

例 10.1

打印子程序:打印

mov dx,0fffeh ;从 PC7 送出控制负脉冲mov al,0 000 111 0B ; 置 -STROBE= 0 (有效)out dx,al

nop ;产生一定宽度的负脉冲nop

mov al,0 000 111 1B ; 置 -STROBE =1 (无效)out dx,al ; 打印机 -STROBE 端输入负脉冲

例 10.1

打印子程序:返回

pop dx

pop ax

ret

printc endp

例 10.1

10.2.3 用 8255A 方式 1 与打印机接口

1000pf 2K

15

3

2

14

41LS123单稳电路 +5V

DATA0 ~ 7

8255A

PC6

INTR

PC3

PC7

PA0 ~ PA7

打印机

ACK-ACK

-OBFSTROBE

调整 -STROBE负脉冲的宽度

8255A 方式 1 与打印机接口时序配合

PA0 ~ PA7( DATA0 ~ 7 )

ACK

OBF

STROBE

打印机在方式 1 工作时的时序

8255A的初始化

mov dx,0fffeh

mov al,0a0h ; 方式字 1 0100 000

out dx,al

mov al,0ch ; 位控字,令 INTEA ( PC6 )为 0 ,禁止中断out dx,al……

mov cx,counter ; 打印字节数送 CX

mov bx,offset buffer ; 取字符串首地址call prints ;调用打印子程序

例 10.2

打印子程序:输出

prints proc

push ax ;保护寄存器push dx

print1: mov al,[bx] ; 取一个数据mov dx,0fff8h

out dx,al ;从端口 A 输出

例 10.2

打印子程序:查询

mov dx,0fffch

print2: in al,dx

test al,80h ;检测 PC7 ,即 -OBFA 状态jz print2 ; 为 0 ,说明打印机方面未响应, ; 继续检测

例 10.2

打印子程序:返回

inc bx ; 为 1 时打印机已接收数据loop print1 ; 准备输出下一个数据pop dx ; 打印结束,恢复寄存器pop ax

ret ;返回prints endp

例 10.2

10.2.4 双机并行通信接口

PA0 ~ PA7

PC4

PC0

8255A

甲方(发送)方式 1 输出

PA0 ~ PA7

PC7

PC6

8255A

乙方(接收)方式 0 输入

OBF

ACK

CPU查询引脚输入

有效时,读数据并输出应答信号

两机均采用查询方式工作

CPU 查询中断请求标志 ,亦可查询

输出缓冲器状态

甲机的初始化

mov dx,0fffeh

mov al,0a0h ; 方式字 1 0100 000 : A 口方式 1 输出out dx,al

mov al,0dh ;令 INTEA ( PC6 )= 1 ,允许中断输出out dx,al

例 10.3

甲机发送程序

trsmt: mov dx,0fffch ;C 口地址in al,dx ; 读 C 口and al,08h ; 查询 INTRA ( PC3 )jz trsmt ; 为 0 ,无中断请求,继

续查mov dx,0fff8h ;否则,发送数据mov al,ah

out dx,al

例 10.3

乙机的初始化

mov dx,0fffeh

mov al,98h ; 方式字 1 0011 000 : A 口方式 0 输入out dx,al

mov al,01h ; 令应答信号( PC0 )= 1 (初始无效)out dx,al

例 10.3

乙机 :查询接收

receive: mov dx,0fffch

in al,dx ; 读 C 口and al,10h ; 查询甲机的写选通信号( PC4 )jnz receive ; 为 1 时无效(甲未发数据),

; 继续查询

mov dx,0fff8h ; 接收数据in al,dx

mov ah,al ; 数据保存于 ah

例 10.3

乙机:接收响应

mov dx,0fffeh

mov al,00h ; 应答信号( PC0 )= 0 (有效)out dx,al

nop ; 适当延时,产生一定宽度的有效负脉冲nop

mov al,01h ; 应答信号( PC0 )= 1 (无效)out dx,al

例 10.3

并行打印机接口

一般采用 Centronics 标准接口或者其简化接口 Centronics接口是的一个并行接口协议,该协议规定了 36脚簧式插头座和信号含义,其中前11 条线是关键信号,他们是 8 条数据线 3 条联络线(选通、响应和打印机忙)

Centronics接口信号中还有一些特殊的控制线、和状态线

PC 系列机的并行打印机接口是一个 25针插口

1. 控制打印机的信号——打印机输入

SLCTIN (选择输入)——相当于打印机选中信号

INIT (初始化)——使打印机被复位成初始状态

AUTOFEEDXT (自动走纸)——使打印机打印后自动走纸一行

STROBE (选通)——用于使打印机接收数据的选通信号。负脉冲的宽度在接收端应大于 0.5s,数据才可靠地存入打印机数据缓冲区

2. 反映打印机状态的信号——打印机输出

BUSY(忙)——表示打印机不能接收数据 ACK (响应)——打印机处理完一个数据字节后

就回送一个响应信号(负脉冲,脉宽约为 5s),表示打印机已就绪,准备接收新的数据

PE (纸尽)——说明打印机已无纸 SLCT (选中)——表示打印机处于联机选中状态 ERROR (出错)——当打印机处于无纸、脱机

或错误状态之一时,该信号变为低电平

3. 数据线

DATA0 ~ DATA7——8 位并行数据信号线,打印数据通过它送至打印机

8 位数据的可靠输出通过 3 个联络信号进行控制: 选通: STROBE (输入打印机) 响应: ACK (打印机输出) 打印机忙: BUSY (打印机输出)

打印时序

打印机时序

BUSY

DATA0 ~ 7

ACK

STROBE

本章教学要求1. 掌握 8255A 的结构特点和引脚功能2.掌握 8255A 的各种工作方式、编程及方

式 0/1 的应用3. 了解并行打印机接口的引脚定义和接口

时序