Download - 第八章 并行接口芯片
![Page 1: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/1.jpg)
第八章 并行接口芯片
教学重点 8255A 的功能 8255A 的内部结构、引脚 8255 的工作方式和编程 8255 的应用
![Page 2: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/2.jpg)
并行数据传输方式
并行传输以计算机的字长为传输单位(通常是 8位、 16 位或 32 位),一次传送 1 个字长的数据
并行传输微机系统中最基本的信息交换方法 例如:系统板上各部件之间,接口电路板上各部件之
间 适合于外部设备与微机之间进行近距离、大量和
快速的信息交换 例如:微机与并行接口打印机、磁盘驱动器
![Page 3: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/3.jpg)
第一节 可编程的输入输出接口 8255A 8255A 是具有多种功能的可编程并行接口电路
芯片, 40 个引脚。 一、 8255A 的结构 8255 有 3 个 8 位的数据端口( A/B/C ),共 2
4 个 I/O 引脚,各端口共有 3 种输入输出工作方式 基本输入 / 输出( A/B/C 口) 选通输入或选通输出( A/B 口) 双向选通( A 口)
![Page 4: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/4.jpg)
一、 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
![Page 5: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/5.jpg)
5
![Page 6: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/6.jpg)
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 位端口分别输入或输出 每位可独立进行输出控制(位控制) 使用最灵活,较难掌握
![Page 7: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/7.jpg)
2. 与处理器的连接引脚
CS A1 A0 I/O 地址 读操作 RD 写操作 WR0 0 00 0 10 1 00 1 1
60H61H62H63H
读端口 A读端口 B读端口 C
非法
写端口 A写端口 B写端口 C
写方式字和位控字
![Page 8: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/8.jpg)
二、 8255A 的工作方式 P343 图 8-2
方式 0 :基本输入输出方式(不带联络) 适用于无条件传送和查询方式的接口电路
方式 1 :选通输入输出方式(带输入联络或输出联络) 适用于查询和中断方式的接口电路
方式 2 :双向选通方式(同时带输入联络和输出联络) 适用于可双向传送数据的外设 适用于查询和中断方式的接口电路
![Page 9: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/9.jpg)
方式 0 的输入时序(数据来自外设)
外设提供数据输入端口
D0 ~ D7
RD
CS 、 A1A0
请体会这里 8255A 的数据缓冲作用
数据
8255 外设CPU内总线 外总线
![Page 10: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/10.jpg)
方式 0 的输出时序(数据来自 CPU )
WR
CPU 数据
数据输出端口
D0 ~ D7
CS 、 A1A0
8255A 对 CPU 输出的数据进行锁存
8255 外设CPU内总线 外总线
![Page 11: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/11.jpg)
方式 1 输入引脚:端口 A
PC4
PC5
PC3
PA7~PA0
INTEA
IBFA
INTRA
STBA
中断允许触发器
输入缓冲器满信号表示 A 口已经接收数据
数据选通信号表示外设已经准备好数据
中断请求信号请求 CPU 接收数据
外设数据
征用 C 口 3 引脚和 1 个控制位
![Page 12: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/12.jpg)
方式 1 输入引脚:端口 B
PC2
PC1
PC0
PB7~PB0
INTEB
IBFB
INTRB
STBB
中断允许触发器
输入缓冲器满信号表示 B 口已经接收数据
数据选通信号表示外设已经准备好数据
中断请求信号请求 CPU 接收数据
外设数据
征用 C 口 3 引脚和 1 个控制位
![Page 13: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/13.jpg)
方式 1 输入 联络信号 STB—— 选通信号,低电平有效
由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至 8255A 的输入锁存器
IBF—— 输入缓冲器满信号,高电平有效 8255A 输出的联络信号。当其有效时,表示数据已锁
存在输入锁存器 INTR—— 中断请求信号,高电平有效
8255A 输出的信号,可用于向 CPU 提出中断请求,要求 CPU 读取外设数据
![Page 14: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/14.jpg)
方式 1 输入 时序
外设数据
INTR
IBF
数据
输入端口
D0 ~ D7
STB
RD
STB 和 IBF 是外设和 8255A 间的一对应答联络信号,为的是可靠地输入数据
![Page 15: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/15.jpg)
方式 1 中断控制
8255A 的中断由中断允许触发器 INTE 控制 置位允许中断,复位禁止中断
对 INTE 的操作通过写入端口 C 的对应位实现,INTE 触发器对应端口 C 的位是作应答联络信号的输入信号的哪一位,只要对那一位置位 / 复位就可以控制 INTE 触发器
选通输入方式下 端口 A 的 INTEA 对应 PC4 端口 B 的 INTEB 对应 PC2
![Page 16: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/16.jpg)
方式 1 输出引脚:端口 A
PC6
PC7
PC3
PA7~PA0
INTEA
OBFA
INTRA
ACKA
输出缓冲器满信号表示 CPU 已经输出了数
据
外设响应信号表示外设已经接收到数据
中断请求信号请求 CPU 再次输出数据
征用 C 口 3 引脚和 1 个控制位
中断允许触发器通过位控 PC6 设
置 INTEA
输出数据
![Page 17: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/17.jpg)
方式 1 输出引脚:端口 B
PC2
PC1
PC0
PB7~PB0
INTEB
OBFB
INTRB
ACKB
输出缓冲器满信号表示 CPU 已经输出了数
据
外设响应信号表示外设已经接收到数据
中断请求信号请求 CPU 再次输出数据
征用 C 口 3 引脚和 1 个控制位
中断允许触发器通过位控 PC2 设置
INTEB
输出数据
![Page 18: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/18.jpg)
方式 1 输出联络信号 OBF—— 输出缓冲器满信号,低电平有效
8255A 输出给外设的一个控制信号,当其有效时,表示 CPU 已将输出数据锁存在 8255A 指定的端口,外设可以来取
ACK—— 响应信号,低电平有效 外设提供的响应信号,通知 8255A 其端口数据已被
外设接收 INTR—— 中断请求信号,高有效
当输出设备已接受数据后, 8255A 输出此信号向 CPU 提出中断请求,要求 CPU 继续提供数据
端口 A 的 INTEA 对应 PC6 端口 B 的 INTEB 对应 PC2
![Page 19: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/19.jpg)
方式 1 输出 时序
8255 外设CPU内总线 外总线
INTR
CPU 数据
数据输出端口D0 ~ D7
WR
OBF
ACK
-OBF 和 -ACK 是外设和 8255A 间的一对应答联络信号,为的是可靠地输出数据
![Page 20: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/20.jpg)
方式 2 双向选通方式 方式 2 将方式 1 的选通输入与选通输出功能组合
成一个双向数据端口,可以发送数据和接收数据 只有端口 A 可以工作于方式 2 ,需要利用端口
C 的 5 个信号线,其作用与方式 1 相同 方式 2 的数据输入过程与方式 1 的输入方式一样 方式 2 的数据输出过程与方式 1 的输出方式有一
点不同:数据输出时 8255A 不是在 OBF 有效时向外设输出数据,而是在外设提供响应信号 ACK 有效时才送出数据
![Page 21: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/21.jpg)
方式 2 双向选通引脚
PC6
PC7
PC3
PA7~PA0
INTE1
-OBFA
INTRA
ACKA
PC4
PC5 IBFA
STBAINTE2
数据
输入中断和输出中断
通过或门输出 INTRA 信号
征用 C 口 5 引脚和 2 个控制位
中断允许触发器(控制中断输出)通过位控 PC6 设置
INTE1
中断允许触发器(控制中断输出)通过位控 PC4 设置
INTE2输入联络输入联络
输出联络输出联络
![Page 22: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/22.jpg)
方式 2 双向选通时序
该例中: CPU先输出数据,再读取外设输入的数据
INTR
输出数据
输入数据
输入数据PA0 ~ PA7
D0 ~ D7
IBF
WR
OBF
ACK
STB
RD
输出数据
![Page 23: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/23.jpg)
三、 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
![Page 24: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/24.jpg)
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
![Page 25: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/25.jpg)
1. 向控制口写方式字——示例
要求: A 口:方式 1 输入 CH口:输出 CL口:输入 B 口:方式 0 输出
方式控制字: 1 0110 001 B 或 B1H 初始化的程序段:mov dx,0fffeh ; 假设控制端口为 FFFEHmov al,0b1h ;方式控制字out dx,al ;送到控制端口
![Page 26: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/26.jpg)
2. 读写数据端口 (A 口 /B 口 /C 口 )
初始化编程后: 当数据端口作为输入接口时, CPU执行输入
IN 指令, CPU 将从输入设备得到外设数据 当数据端口作为输出接口时, CPU执行输出
OUT 指令,将把 CPU 的数据送给输出设备 8255A 具有锁存输出数据的能力
对设置为输出的端口同样可以输入(读) 此时不是读取外设数据,而是读取的是前次 C
PU 输出给外设的数据(锁存在锁存器中)
![Page 27: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/27.jpg)
2. 读写数据端口:示例
利用 8255A 的输出锁存能力,可实现对某一位的输出控制
对输出端口 B 的 PB7 位置位的程序段:mov dx,0fffah ;B 端口假设为 FFFAHin al,dx ; 读出 B 端口原输出内容or al,80h ;使 PB7= 1out dx,al ;输出新的内容
![Page 28: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/28.jpg)
3. 涉及 C 口的操作——归纳 1
在控制上, C 口上半部( CH )和 A 口被编为 A 组, C口下半部( CL )和 B 口被编为 B 组。即它被拆分成两个4 位端口分别进行控制 :
两个 4 位端口均只能工作于方式 0 (指未被征用的引脚) 但可分别选择输入或者输出
C 口具有唯一的地址,可按 8 位方式进行读 / 写,此时: 设置为输出的引脚可读可写(输出锁存器) 设置为输入的引脚可读(引脚)、写操作无意义 在选通方式下,对被征用的引脚可读(分别映射到中断允许位、
输入 / 输出缓冲器状态位、中断请求状态位)。 C 口还可通过位控字进行按位的写(只写 C 口 1 位):
对设置为输出的引脚可写(输出锁存器) 在选通方式下,对被征用的输入引脚可写(映射到中断允许位)
![Page 29: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/29.jpg)
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 中的引脚必须同为输入或同为输出。
![Page 30: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/30.jpg)
3. 涉及 C 口的操作——归纳 3
对 C 口的数据输出有两种办法 向 C 口直接写字节数据——该数据将被写进 C 端口的
输出锁存器中,并从设置为输出的引脚输出,但对设置为输入的引脚无效。
向控制口写位控字——使 C 口设置为输出的某个引脚输出 1 或 0 。
在选通方式下向控制口写位控字——还可置位或复位 8255 内部的中断允许触发器。在选通方式下,该触发器已被映射在 C 口被征用的某个输入引脚上。
![Page 31: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/31.jpg)
向控制口写入位控字
位控字用于控制 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
![Page 32: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/32.jpg)
3. 涉及 C 口的操作——归纳 4 读取 C 口数据有两种情况: 针对未被 A 和 B 端口征用的引脚:
将从定义为输入的位读到引脚上的输入信息 将从定义为输出的位读到前次输出锁存的信息
针对已被 A 和 B 端口征用作为联络线的引脚: 将读到反映 8255A 工作状态的状态字,其中包括:
数据缓冲器的状态( -OBFx 或 IBFx ) 中断允许的状态( INTEx ) 中断请求的状态( INTRx )
![Page 33: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/33.jpg)
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 组控制
![Page 34: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/34.jpg)
10.2 8255A 的应用
作为通用的并行接口电路芯片, 825A 具有广泛的应用,如 : 应用在 IBM PC/XT 微机上 应用于打印机接口电路 用于连接简易键盘 用于驱动 LED 数码管 等等
![Page 35: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/35.jpg)
第二节 8255A 在 IBM PC/XT 上的应用
工作在基本输入 / 输出方式 0 端口 A 为方式 0 输入,用来读取键盘扫描码 端口 B 工作于方式 0 输出,例如控制扬声器等 端口 C 为方式 0 输入,读取系统状态和配置
系统的初始化编程:mov al,1 0011 001 b ;方式控制字 99Hout 63h,al
![Page 36: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/36.jpg)
打印机接口的信号与时序
主机把数据送给引脚 DATA0 ~ DATA7 同时送出数据选通信号 STROBE 打印期间,打印机在 BUSY信号线上发出忙信号 打印机处理好输入的数据时
撤消忙信号 同时又送出一个响应信号 ACK
主机把数据送给引脚 DATA0 ~ DATA7 同时送出数据选通信号 STROBE 打印期间,打印机在 BUSY信号线上发出忙信号 打印机处理好输入的数据时
撤消忙信号 同时又送出一个响应信号 ACK
![Page 37: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/37.jpg)
以打印机为例说明 8255 应用 打印机接口的信号与时序
BUSY (出)
DATA0 ~ 7 (入)
ACK (出)
STROBE (入)
打印机忙
打印机响应
一般用于查询
一般用于选通
![Page 38: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/38.jpg)
用 8255A 方式 0 与打印机接口
BUSY
DATA0 ~ 7
8255A
PC7
PC2
PA0 ~ PA7
打印机
STROBE
![Page 39: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/39.jpg)
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
![Page 40: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/40.jpg)
打印子程序:查询
printc proc
push ax
push dx
prn: mov dx,0fffch ; 读取端口 C
in al,dx ; 查询打印机状态and al,04h ;测试 PC2 ( BUSY )jnz prn ; 为 1 ,打印机忙,则循环等
待
例 10.1
![Page 41: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/41.jpg)
打印子程序:输出
mov dx,0fff8h ; 为 0 ,打印机不忙,则输出数据mov al,ah
out dx,al ; 将打印数据从端口 A 输出
例 10.1
![Page 42: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/42.jpg)
打印子程序:打印
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
![Page 43: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/43.jpg)
打印子程序:返回
pop dx
pop ax
ret
printc endp
例 10.1
![Page 44: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/44.jpg)
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负脉冲的宽度
![Page 45: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/45.jpg)
8255A 方式 1 与打印机接口时序配合
PA0 ~ PA7( DATA0 ~ 7 )
ACK
OBF
STROBE
打印机在方式 1 工作时的时序
![Page 46: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/46.jpg)
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
![Page 47: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/47.jpg)
打印子程序:输出
prints proc
push ax ;保护寄存器push dx
print1: mov al,[bx] ; 取一个数据mov dx,0fff8h
out dx,al ;从端口 A 输出
例 10.2
![Page 48: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/48.jpg)
打印子程序:查询
mov dx,0fffch
print2: in al,dx
test al,80h ;检测 PC7 ,即 -OBFA 状态jz print2 ; 为 0 ,说明打印机方面未响应, ; 继续检测
例 10.2
![Page 49: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/49.jpg)
打印子程序:返回
inc bx ; 为 1 时打印机已接收数据loop print1 ; 准备输出下一个数据pop dx ; 打印结束,恢复寄存器pop ax
ret ;返回prints endp
例 10.2
![Page 50: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/50.jpg)
10.2.4 双机并行通信接口
PA0 ~ PA7
PC4
PC0
8255A
甲方(发送)方式 1 输出
PA0 ~ PA7
PC7
PC6
8255A
乙方(接收)方式 0 输入
OBF
ACK
CPU查询引脚输入
有效时,读数据并输出应答信号
两机均采用查询方式工作
CPU 查询中断请求标志 ,亦可查询
输出缓冲器状态
![Page 51: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/51.jpg)
甲机的初始化
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
![Page 52: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/52.jpg)
甲机发送程序
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
![Page 53: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/53.jpg)
乙机的初始化
mov dx,0fffeh
mov al,98h ; 方式字 1 0011 000 : A 口方式 0 输入out dx,al
mov al,01h ; 令应答信号( PC0 )= 1 (初始无效)out dx,al
例 10.3
![Page 54: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/54.jpg)
乙机 :查询接收
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
![Page 55: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/55.jpg)
乙机:接收响应
mov dx,0fffeh
mov al,00h ; 应答信号( PC0 )= 0 (有效)out dx,al
nop ; 适当延时,产生一定宽度的有效负脉冲nop
mov al,01h ; 应答信号( PC0 )= 1 (无效)out dx,al
例 10.3
![Page 56: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/56.jpg)
并行打印机接口
一般采用 Centronics 标准接口或者其简化接口 Centronics接口是的一个并行接口协议,该协议规定了 36脚簧式插头座和信号含义,其中前11 条线是关键信号,他们是 8 条数据线 3 条联络线(选通、响应和打印机忙)
Centronics接口信号中还有一些特殊的控制线、和状态线
PC 系列机的并行打印机接口是一个 25针插口
![Page 57: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/57.jpg)
1. 控制打印机的信号——打印机输入
SLCTIN (选择输入)——相当于打印机选中信号
INIT (初始化)——使打印机被复位成初始状态
AUTOFEEDXT (自动走纸)——使打印机打印后自动走纸一行
STROBE (选通)——用于使打印机接收数据的选通信号。负脉冲的宽度在接收端应大于 0.5s,数据才可靠地存入打印机数据缓冲区
![Page 58: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/58.jpg)
2. 反映打印机状态的信号——打印机输出
BUSY(忙)——表示打印机不能接收数据 ACK (响应)——打印机处理完一个数据字节后
就回送一个响应信号(负脉冲,脉宽约为 5s),表示打印机已就绪,准备接收新的数据
PE (纸尽)——说明打印机已无纸 SLCT (选中)——表示打印机处于联机选中状态 ERROR (出错)——当打印机处于无纸、脱机
或错误状态之一时,该信号变为低电平
![Page 59: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/59.jpg)
3. 数据线
DATA0 ~ DATA7——8 位并行数据信号线,打印数据通过它送至打印机
8 位数据的可靠输出通过 3 个联络信号进行控制: 选通: STROBE (输入打印机) 响应: ACK (打印机输出) 打印机忙: BUSY (打印机输出)
打印时序
![Page 60: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/60.jpg)
打印机时序
BUSY
DATA0 ~ 7
ACK
STROBE
![Page 61: 第八章 并行接口芯片](https://reader035.vdocuments.net/reader035/viewer/2022081415/5681459d550346895db291f8/html5/thumbnails/61.jpg)
本章教学要求1. 掌握 8255A 的结构特点和引脚功能2.掌握 8255A 的各种工作方式、编程及方
式 0/1 的应用3. 了解并行打印机接口的引脚定义和接口
时序