第7章 常用接口芯片
TRANSCRIPT
第 7章常用接口芯片
7.3 可编程串行接口 8251
7.4 模拟 I/O 接口
7.5 例题解析
7.2 可编程定时 / 计数器8253/8254
7.1 可编程并行接口 8255
- 2- 目录 上页 下页 结束
第 7 章 常用接口芯片
教学重点 可编程并行接口 8255A 的工作方式和编程 8255A 的应用 可编程定时 / 计数器 8253/8254 工作方式和编程 可编程串行接口 8251 工作方式和编程 模拟 I/O 接口
- 3- 目录 上页 下页 结束
7.1 可编程并行接口 82557.1.1 并行通信的概念
1. 并行通信与串行通信 随着多微机系统的应用和微机网络的发展,计算机与
外部设备之间、计算机和计算机之间常常要进行数据交换,这些数据交换可称为数据通信。数据通信方式有两种:并行通信与串行通信。 并行通信是指数据的各位同时进行传送的通信方式,
可以字或字节为单位并行进行。并行通信速度快,但用的通信线多、成本高,故不宜进行远距离通信。计算机内部各种总线就是以并行方式传送数据的。 串行通信是指数据逐位顺序传送的通信方式。串行传
送的速度低,但只需要很少几根通信线,适用于长距离而速度要求不高的场合。在网络中传送数据绝大多数采用串行方式。
- 4- 目录 上页 下页 结束
2. 并行接口 无论是并行通信还是串行通信,就其 I/O 接口与 CPU 之间的通信而言,
均是以并行通信方式传送数据的。 并行通信由并行接口完成,它以字节(或字)为单位与 I/O 设备或被控
对象进行数据交换,以同步方式传输。如打印机接口, A/D 、 D/A 转换器接口, IEEE488 接口,开关量接口,控制设备接口等。
从并行接口的电路结构来看,并行口有硬连线接口和可编程接口之分。 一个并行接口中包括状态信息、控制信息和数据信息,这些信息并行接
口中分别存放在状态寄存器、控制寄存器和数据缓冲寄存器中。 ⑴ 状态寄存器 状态寄存器用来存放外设的信息, CPU 通过访问这个寄存器
来了解某个外设的状态,进而控制外设的工作,以便与外设进行数据交换。
⑵ 控制寄存器 并行接口中有一个控制寄存器, CPU 对外设的操作命令都
寄存在控制寄存器中。一个状态寄存器,主要是用来提供外设的各种状态位,以供 CPU 来查询。
⑶ 数据缓冲寄存器 在并行接口中还设置了输入缓冲寄存器和输出缓冲寄存器,
缓冲器是用来暂存数据。因为外设与 CPU 交换数据, CPU 的速度远远高于外设的速度。
- 5- 目录 上页 下页 结束
控制寄存器
状态寄存器
输入缓冲寄存器
输出缓冲寄存器
输入设
备
输出设
备
输入数据
输出数据
输入数据准备好
输出应答
输入应答
输出数据准备好 地 址
译码器 CS A0 A1
CPU
总线系统
数据总线
输出数据准备好
输入数据准备好
中断请求
复位
IOW
AEN
地址总线
IOR
复位
一个典型的并行接口与 CPU 、外设的连接
图
- 6- 目录 上页 下页 结束
3. 数据输入过程
数据输入过程,指的是外设向 CPU 输入数据。 ① 当外设将数据通过数据输入线送给接口时,先使状态线“
输入数据准备好”为高电平。然后通过接口把数据接收到输入缓冲寄存器中,同时把“输入回答”信号置成高电平“ 1” ,并发给外设。
② 外设接到回答信号后,将撤消“输入数据准备好”的信号。当接口收到数据后,会在状态寄存器中设置“准备好输入”状态位,以便 CPU 对其进行查询。
③ 接口向 CPU 发出一个中断请求信号,这样 CPU 可以用软件查询方式,也可以用中断的方式将接口中的数据输入到CPU 中。
④ CPU 在接收到数据后,将“准备好输入”的状态位自动清除,并使数据总线处于高阻状态。准备外设向 CPU 输入下一个数据。
- 7- 目录 上页 下页 结束
4. 数据输出过程数据输出过程,指的是 CPU 向外设输出数据。 ① 当外设从接口接收到一个数据后,接口的输出缓冲寄存
器“空”,使状态寄存的“输出数据准备好”状态位置成高电平“ 1” ,这表示 CPU 可以向外设接口输出数据,这个状态位可供 CPU 查询。
② 此时接口也可向 CPU 发出一个中断请求信号,同上面的输入过程相同, CPU 可以用软件查询方式,也可以用中断的方式将 CPU 中的数据通过接口输出到外设中。当输出数据送到接口的输出缓冲寄存器后,再输出到外设。
③ 与此同时,接口向外设发送一个启动信号,启动外设接收数据。外设接收到数据后,向接口回送一个“输出回答”信号。
④ 接口电路收到该信号后,自动将接口状态寄存器中的“准备好输出”状态位重新置为高电平“ 1” ,通知 CPU 可以向外设输出下一个数据。
- 8- 目录 上页 下页 结束
7.1.2 8255 外部引脚及内部结构
数据
总线缓冲器
内部控制线
内部数据线D0~ D7
A组控制
A组端口 A
A组端口 C上部
B组控制
B组端口 B
B组端口 C下部
读写控制逻辑 PC0~ PC3
PB0~ PB7
PC4~ PC7
PA0~ PA7
RDWR
A0
A1
CSRESET
1. 8255 内部结构
- 9- 目录 上页 下页 结束
⑴ 面向 CPU 的接口电路
① 数据总线缓冲器 数据总线缓冲器是一个三态双向的 8 位缓冲器
,是 8255 与系统数据总线的接口。与此关联的接口信号线是数据线 D7~ D0, 它直接与 CPU 数据总线相连,以实现 CPU 与 8255 接口之间的信息传递。 CPU 向8255写入控制字、或从 8255 中读状态信息以及所有数据的输入和输出,都需要通过数据缓冲器进行传递。
② 读 /写控制逻辑。 读 /写控制逻辑是 8255 内部完成读 /写控制功能的部件
,它接收来自 CPU 的地址和控制信号,并依据这些信号,通过内部控制逻辑向 8255 的各功能部件发出读 /写控制命令,用于管理数据、控制字或状态字的传送。与此部分有关的有 6 根信号线:片选信号、读信号、写信号、端口选择信号 A1 、 A0 以及 RESET 复位信号。
- 10- 目录 上页 下页 结束
⑵ 面向外设的接口电路
端口 A : PA0~ PA7
A组,支持工作方式 0 、 1 、 2
端口 B : PB0~ PB7
B组,支持工作方式 0 、 1
端口 C : PC0~ PC7
仅支持工作方式 0A组控制高 4 位 PC4~ PC7
B组控制低 4 位 PC0~ PC3
端口 A: PA0~ PA7 常作数据端口,功能最强大
端口 B: PB0~ PB7 常作数据端口
端口 C: PC0~ PC7 可作数据、状态和控制端口
分两个 4位,每位可独立操作
控制最灵活,最难掌握
- 11- 目录 上页 下页 结束
⑶ 内部控制逻辑
包括 A组控制部件、 B组控制部件两部分。A组控制部件控制端口 A 和端口 C 的高 4位( PC7~ PC4 ); B组控制部件控制端口 B 和端口 C 的低 4 位( PC3~PC0 )。
控制逻辑内部设置了一个控制寄存器,接收来自 CPU 的控制字,根据控制字的内容决定各数据端口的工作方式。也可以根据控制字对端口 C 的每一位进行置位和复位。控制寄存器的内容只能写入而不能读出。
- 12- 目录 上页 下页 结束
与处理器接口
写端口 A
写端口 B
写端口 C
写控制字
写操作 WR*
读端口 A
读端口 B
读端口 C
非法
读操作 RD*
60H
61H
62H
63H
I/O 地址
0 0 0
0 0 1
0 1 0
0 1 1
CS* A1 A0
- 13- 目录 上页 下页 结束
2. 8255 的引脚功能
8255 芯片有 40根引脚,各引脚信号如图所示 .
- 14- 目录 上页 下页 结束
7.1.3 8255 的工作方式
方式 0 :基本输入输出方式适用于无条件传送和查询方式的接口电路
方式 1 :选通输入输出方式适用于查询和中断方式的接口电路
方式 2 :双向选通传送方式适用于与双向传送数据的外设
适用于查询和中断方式的接口电路
- 15- 目录 上页 下页 结束
方式 0 输入时序
data
data输入端口
D0~ D7
RD
CS,A1,A0
请体会这里 8255A 的数据缓冲作用
- 16- 目录 上页 下页 结束
方式 0 输出时序
WR
data
data输出端口
D0~ D7
CS,A1,A0
8255A 对 C PU 通过它输出给外设的数据进行锁存
- 17- 目录 上页 下页 结束
方式 1 输入引脚: A端口
数据选通信号表示外设已经准备好数据
输入缓冲器满信号表示 A 口已经接收数据
中断请求信号请求 CPU 接收数据
PC4
PC5
PC3
PA7~PA0
INTEA
IBFA
INTRA
STBA
中断允许触发器
- 18- 目录 上页 下页 结束
方式 1 输入引脚: B端口
PC2
PC1
PC0
PB7~PB0
INTEB
IBFB
INTRB
STBB
数据选通信号表示外设已经准备好数据
输入缓冲器满信号表示 A 口已经接收数据
中断请求信号请求 CPU 接收数据
中断允许触发器
方式 1 需借用端口 C 用做联络信号同时还具有中断请求和屏蔽功能
- 19- 目录 上页 下页 结束
方式 1 输入联络信号
STB*——选通信号,低电平有效由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至 8255A 的输入锁存器
IBF—— 输入缓冲器满信号,高电平有效8255A 输出的联络信号。当其有效时,表示数据已锁存在输入锁存器
INTR—— 中断请求信号,高电平有效8255A 输出的信号,可用于向 CPU 提出中断请求,要求 CPU读取外设数据
- 20- 目录 上页 下页 结束
方式 1 输入时序
data
INTR
IBF
data
输入端口
D0~ D7
STB
RD
S TB * 和 IBF 是外设和 8255A 间的一对应答联络信号,为的是可靠地输入数据
- 21- 目录 上页 下页 结束
方式 1 中断控制
8255A 的中断由中断允许触发器 INTE控制置位允许中断,复位禁止中断
对 INTE 的操作通过写入端口 C 的对应位实现, INTE触发器对应端口 C 的位是作应答联络信号的输入信号的哪一位,只要对那一位置位 / 复位就可以控制INTE触发器
选通输入方式下端口 A 的 INTEA 对应 PC4端口 B 的 INTEB 对应 PC2
- 22- 目录 上页 下页 结束
方式 1 输出引脚: A端口
外设响应信号表示外设已经接收到数据
输出缓冲器满信号表示 CPU已经输出了数据
中断请求信号请求 CPU再次输出数据
PC6
PC7
PC3
PA7~PA0
INTEA
OBFA
INTRA
ACKA
中断允许触发器 征用 C 口 3引脚和 1 个控制位
- 23- 目录 上页 下页 结束
方式 1 输出引脚: B端口
PC2
PC1
PC0
PB7~PB0
INTEB
OBFB
INTRB
ACKB
外设响应信号表示外设已经接收到数据
输出缓冲器满信号表示 CPU已经输出了数据
中断请求信号请求 CPU再次输出数据
中断允许触发器
征用 C 口 3引脚和 1 个控制位
- 24- 目录 上页 下页 结束
方式 1 输出联络信号
OBF*—— 输出缓冲器满信号,低有效8255A 输出给外设的一个控制信号,当其有效时,表示 CPU已把数据输出给指定的端口,外设可以取走
ACK*——响应信号,低有效外设的响应信号,指示 8255A 的端口数据已由外设接受
INTR—— 中断请求信号,高有效当输出设备已接受数据后, 8255A 输出此信号向
CPU 提出中断请求,要求 CPU继续提供数据
端口 A 的 INTEA 对应 PC 6端口 B 的 INTEB 对应 PC 2
8255 外设CPU内总线 外总线
- 25- 目录 上页 下页 结束
方式 1 输出时序
INTR
data
data输出端口
D0~ D7
WR
OBF
ACK
OBF * 和 AC K* 是外设和 8255A 间的一对应答联络信号,为的是可靠地输出数据
- 26- 目录 上页 下页 结束
方式 2双向方式
方式 2 将方式 1 的选通输入输出功能组合成一个双向数据端口,可以发送数据和接收数据
只有端口 A 可以工作于方式 2 ,需要利用端口 C 的 5 个信号线,其作用与方式 1相同
方式 2 的数据输入过程与方式 1 的输入方式一样
方式 2 的数据输出过程与方式 1 的输出方式有一点不同:数据输出时 8255A 不是在 OBF*有效时向外设输出数据,而是在外设提供响应信号 ACK* 时才送出数据
- 27- 目录 上页 下页 结束
方式 2 双向选通引脚
PC6
PC7
PC3
PA7~PA0
INTE1
-OBFA
INTRA
-ACKA
PC4
PC5 IBFA
-STBAINTE2
数据
输入中断和输出中断
通过或门输出 INTRA 信
号
征用 C 口 5引脚和 2 个控制位
中断允许触发器(控制中断输出)通过位控 PC6 设置
INTE1
中断允许触发器(控制中断输出)通过位控 PC4 设置
INTE2输入联络输入联络
输出联络输出联络
- 28- 目录 上页 下页 结束
方式 2双向时序
data-out
INTR
data-out
data-in
data-inPA0~ PA7
D0~ D7
IBF
WR
OBF
ACK
STB
RD
- 29- 目录 上页 下页 结束
7.1.4 方式控制字及状态字
1. 8255 的控制字
⑴ 方式控制字
方式控制字用来决定 8255 的工作方式。它将三个通道分为两组,即 A 口和 C 口的高 4 位作为一组( A组),端口 B 和 C组的低 4 位作为一组( B组)。
- 30- 目录 上页 下页 结束
方式控制字的格式如下
- 31- 目录 上页 下页 结束
⑵ 端口 C 置位 / 复位控制字 置位 / 复位控制可对 C 口中的任意一位进行置位或者复位操作。该控制字各位定义如下:
2. 8255 的状态字
8255 的状态字为查询式输入 / 输出数据提供了外设的工作状态,如IBF 、、 INTR 等。根据 8255 工作在不同的工作方式下,以及各端口作输入、输出的不同情况,状态字的格式有所不同。值得注意的是, C 口的状态字与 C 口各位对外的引脚状态不完全一致。
- 33- 目录 上页 下页 结束
方式 1 输入
×××INTRAINTE2IBFAINTE1OBFA
INTRBOBFBINTEBINTRAI/OI/OINTEAOBFA
方式 2双向
方式 1 输出
INTRBIBFBINTEBINTRAINTEAIBFAI/OI/O
D0D1D2D3D4D5D6D7
端口 C 的状态字
A组 B组
- 34- 目录 上页 下页 结束
7.1.5 8255 与 CPU 的连接
8255占用四个 I/O端口地址,即 A 口、 B 口、 C 口和控制寄存器。在 8255 的连接使用中,它的 8 根数据线 D7~ D0 与系统数据总线相连, A1 、 A0 接地址总线的 A1 和 A0 ,地址总线高位 A9~ A2经译码器译码后接片选信号,其控制信号线 RESET 、、分别与系统控制总线的RESET 、、信号相连 , 如图所示。
- 35- 目录 上页 下页 结束
PC 机中 8255 的连接
- 36- 目录 上页 下页 结束
7.1.6 8255 应用举例
8255A初始化时,先要写入控制字 ; 指定它的工作方式,然后才能通过编程
; 将总线上的数据从 8255A 输出给外设 ; 将外部设备的数据通过 8255A 送到
CPU 中。
- 37- 目录 上页 下页 结束
例 7.1 利用 8255 方式 0实现打印机的接口
BUSY
DATA0~ 7
8255A
PC1
PC6
PA0~ PA7
打印机
STROBE
- 38- 目录 上页 下页 结束
打印机接口的信号与时序
BUSY
DATA0~ 7
ACK
STROBE
主机把数据送给引脚 DATA0~DATA7
同时送出数据选通信号 STROBE*打印机在 BUSY 信号线上发出忙信号
打印机处理好输入的数据时撤消忙信号
同时又送出一个响应信号 ACK*
- 39- 目录 上页 下页 结束
8255A的初始化 MOV AL , 10000011B ;将控制字送 AL 中 MOV DX , 0383H ;将控制寄存器端口地址送 DX 中 OUT DX , AL MOV AL , 00001101B ;将 PC6 设置为 1 MOV DX , AL ;将控制寄存器端口地址送 DX 中
- 40- 目录 上页 下页 结束
将 AL中的字符送到打印机输出
MOV DX , 0382H ;将 C 口地址送 DX 中 XCHG AX , BX ;将打印字符暂存 BL 中 PWAIT: IN AL , DX ;输入 C 口数据 AND AL , 04H ;测试 PC2 JNZ PWAIT ;忙则等待 XCHG AX , BX ;将 BL 中的打印字符送回 AL 中
MOV DX , 0380H ;将 A 口地址送 DX 中 OUT DX , AL ;将 AL 字符送出打印
- 41- 目录 上页 下页 结束
例 7.2利用 8255 方式 1实现打印机的
接口
1000pf 2K
15
3
214
41 LS123单稳电路
+5V
DATA0~ 7
8255A
PC6
INTR
PC3
PC7
PA0~ PA7
打印机
ACKACK
OBFSTROBE
- 42- 目录 上页 下页 结束
8255A 方式 1 与打印机接口时序配合
PA0~ PA7
( DATA0~ 7 )
ACK
OBF
STROBE
方式 1 时序 打印机时序
- 43- 目录 上页 下页 结束
8255A的初始化 MOV AL , 10100000B ;将控制字送 AL 中 MOV DX , 0383H ;将控制寄存器端口地址送 DX 中 OUT DX , AL MOV AL , 00001101B ;将 PC6 设置为 1 MOV DX , AL
- 44- 目录 上页 下页 结束
将 AL中的字符送到打印机输出
MOV DX , 0382H ;将 C 口地址送 DX 中 XCHG AX , BX ;将打印字符暂存 BL 中 PWAIT: IN AL , DX ;输入 C 口数据 AND AL , 04H ;测试 PC2 JNZ PWAIT ;忙则等待 XCHG AX , BX ;将 BL 中的打印字符送回 AL 中
MOV DX , 0380H ;将 A 口地址送 DX 中 OUT DX , AL ;将 AL 字符送出打印
- 45- 目录 上页 下页 结束
7.2 可编程定时 / 计数器 8253/8254定时控制在微机系统中极为重要 定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔
计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器
定时 / 计数系统的核心器件是 8253/8254 可编程定时 /计数器,它是 Intel公司生产的一种通用的定时 / 计数器芯片( Counter/Timer Circuit ,简称 CTC ),或称为可编程间隔定时器( Programmable Interval Timer ,简称 PIT )。
8253/8254 可编程定时 / 计数器都是采用 NMOS 工艺制造的双列直插式封装芯片, 8254 是 8253 的改进型,它的引脚信号、硬件组成与 8253基本上是相同的,因此8254 在工作方式和编程方式上与 8253兼容,凡是使用8253 的地方均可用 8254 来代替。
- 46- 目录 上页 下页 结束
定时功能的实现方法
软件延时——利用微处理器执行一个延时程序段实现
不可编程的硬件定时——采用分频器、单稳电路或简易定时电路控制定时时间
可编程的硬件定时——软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路
- 47- 目录 上页 下页 结束
8253/8254 定时计数器
3 个独立的 16 位计数器通道
每个计数器有 6 种工作方式
按二进制或十进制( BCD 码)计数
8254是 8253的改进型
- 48- 目录 上页 下页 结束
7.2.1 8253 的外部引线及内部结构1. 8253 的内部结
构
- 49- 目录 上页 下页 结束
1. 8253 的内部结构 ⑴ 数据总线缓冲器 该缓冲器为双向、三态的 8 位缓冲器,可直接挂接
在数据总线上,它是 8253 与 CPU 之间的数据接口。 CPU 通过数据总线缓冲器将计数器初始化,把控制命令字写入 8253的控制寄存器,从 8253 计数器中读取当前计数值等。
⑵ 读 /写逻辑 读 /写逻辑的功能是接收来自 CPU 的控制信号,包
括读、写信号和地址信号 ,实现对 8253 各计数器和控制寄存器的读 /写控制。
⑶ 控制寄存器 每个计数器都有一个相应的控制寄存器,用于接收
CPU 送来的方式控制字。控制字将决定计数器的工作方式、计数形式及输出方式等。 8253 的 3 个控制寄存器只占用一个端口地址号,通过控制字高二位的特征标志区分当前控制字是发给哪个计数器的。控制寄存器只能写入,不能读出。
⑷ 计数器 8253 有三个计数器通道:计数器 0 、计数器 1 和计数器
2 。
- 50- 目录 上页 下页 结束
计数器结构示意图
预置寄存器
GATE
CLK OUT减 1 计数器
输出锁存器
计数初值存于预置寄存器;
在计数过程中,
减法计数器的值不断递减,
而预置寄存器中的预置不变。
输出锁存器用于写入锁存命令时,
锁定当前计数值
- 51- 目录 上页 下页 结束
2. 8253 的引脚功能
CLK 时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减 1
GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型
OUT 计数器输出信号——当一次计数过程结束(计数值减为 0 ), OUT引脚上将产生一个输出信号
- 52- 目录 上页 下页 结束
1 方式控制字
数制工作方式读写格式计数器
D0D1D2D3D4D5D6D7
00 计数器 001 计数器 110 计数器 211 非法
00 计数器锁存命令 01 只读写低字节10 只读写高字节11 先读写低字节 后读写高字节
000 方式 0001 方式 1010 方式 2011 方式 3100 方式 4101 方式 5
0 二进制1 十进制
控制字写入控制字 I/O地址( A1A0= 11)
7.2.2 8253 的方式控制字和读 /写操作
- 53- 目录 上页 下页 结束
2. 8253 的读写操作及编程
8253加电后的工作方式不确定
8253必须初始化编程,才能正常工作
写入控制字写入计数初值
读取计数值
8254新增读回命令
- 54- 目录 上页 下页 结束
选择二进制时计数值范围: 0000H~ FFFFH0000H 是最大值,代表 65536
选择十进制( BCD 码)
计数值范围: 0000~ 99990000代表最大值 10000
计数值写入计数器各自的 I/O地址
⑴ 写操作 : 写入计数值
- 55- 目录 上页 下页 结束
例 7.4 利用 8253 的计数器通道 2产生频率为1000Hz 的方波。设计数时钟脉冲的频率 f= Hz 。其
初始化程序如下 : MOV AL , 10110110B ;方式 3 ,通道 2 ,二进制,先低后高OUT COTR , AL
;写入控制寄存器MOV AX , 4A7H
;产生 10000Hz所需的计数初值 =f/1000OUT CTN2 , AL
; 先写计数初值低字节MOV AL , AHOUT CTN2 , AL
;再写计数初值高字节
- 56- 目录 上页 下页 结束
例 7.5 若选择通道 0 ,工作在方式 1 ,计数初值为 2350H ,按十进制计数,并设 8253 的端口地址为 40H~ 43H ,则初
始化程序段为 MOV AL , 33H
;计数器 0 ,方式 1 ,十进制,先低后高OUT 43H , AL
;写入控制寄存器MOV AL , 50H
;计数初值低字节OUT 40H , AL
;写入计数器 0MOV AL , 23H
;计数初值高字节OUT 40H , AL
;写入计数器 0
- 57- 目录 上页 下页 结束
对 8 位数据线,读取 16 位计数值需分两次 计数在 : 读取计数值 不断进行,应该将当前计数值先行锁存,然后读取
:向控制字 I/O 地址:给 8253写入锁存命令
从计数器 I/O 地址:读取锁存的计数值
CPU 可对 8253 的计数器进行读操作,以读出计数器的当前值。
读取计数器当前值有两种方法 :第一种方法是利用门控 GATE 信号为低电平或关闭 CLK脉冲
,使得计数操作暂停,以读出确定的计数值。
第二种方法是在计数过程中读出计数器值,而不影响计数器的工作。
读取计数值,要注意读写格式和计数数制
⑵ 读操作
- 58- 目录 上页 下页 结束
例如 采用锁存读的方法,读取通道 1 的 16 位计数值,其程序段如下:
MOV AL , 40H ;方式控制字:通道 1 ,锁存
OUT COTR , AL ;写入 8253 的控制寄存器 IN AL , CNT1 ;第一次读入低 8 位 MOV CL , AL IN AL , CNT1 ;第二次读入高 8 位 MOV CH , AL
- 59- 目录 上页 下页 结束
7.2.3 8253 的工作方式
8253 的每个计数通道都有 6 种不同的工作方式可供选择。这 6 种工作方式的区别在于:它们启动计数器进行计数的触发方式不同;计数过程中,门控信号 GATE 对计数操作的影响不同;计数结束后, OUT 输出线上的输出波形不同。
下面我们将分别讨论这 6 种工作方式的工作过程和特点。
- 60- 目录 上页 下页 结束
1. 方式 0 ( 计数结束产生中断 )
① ② ⑤④ ⑥
GATE
OUT
CLK
03 124
4方式 0WR
①
设定工作方式
②
设定计数初值
④
计数值送入计数器
⑤
计数过程
⑥
计数结束
- 61- 目录 上页 下页 结束
2. 方式 1( 可编程单稳脉冲 )
① ② ⑤④ ⑥①
设定工作方式
②
设定计数初值③
③
硬件启动
④
计数值送入计数器
⑤
计数过程
⑥
计数结束
GATE
OUT
CLK
03 124
4方式 1WR
- 62- 目录 上页 下页 结束
3. 方式 2( 分频器)
03 124
GATE
OUT
CLK
4方式 2
03 12403 124
03 124
WR
- 63- 目录 上页 下页 结束
4. 方式 3 (方波频率发生器)
03 124
GATE
OUT
CLK
4方式 3
03 12403 124
03 124
WR
- 64- 目录 上页 下页 结束
5. 方式 4 (软件触发选通)
GATE
OUT
CLK
03 124
4方式 4
22 33
3
1 0
WR
- 65- 目录 上页 下页 结束
6. 方式 5 (硬件触发选通)
GATE
OUT
CLK
03 124
4方式 5
22 33
3
1 1 0
WR
- 66- 目录 上页 下页 结束
各种工作方式的输出波形
方式 0
方式 1
方式 2
方式 3
方式 4
方式 5
0
N 0 N 0
N 0/N1 1 0
N N/2 N/2 0/N 0
N 0 1
N 0 1 N 0 1
- 67- 目录 上页 下页 结束
7.3 可编程串行接口 82517.3.1 串行通信概述
串行通信:将数据分解成二进制位用一条信号线,一位一位顺序传送的方式
串行通信的优势:用于通信的线路少,因而在远距离通信时可以极大地降低成本
串行通信适合于远距离数据传送,也常用于速度要求不高的近距离数据传送
PC 系列机上有两个串行异步通信接口、键盘、鼠标器与主机间采用串行数据传送
- 68- 目录 上页 下页 结束
1. 串行通信接口的基本任务⑴ 实现数据格式化
⑶ 控制数据传输速率
⑷ 进行错误检测
⑸ 进行 TTL 与 EIA 电平转换
⑵ 进行串-并转换
⑹ 提供 EIA-RS-232C 接口标准所要求的信号线
- 69- 目录 上页 下页 结束
2. 串行通信接口的组成
串行接口是通过系统总线和 CPU相连,串行接口部件的典型结构如图所示。主要由控制寄存器、状态寄存器、数据输入寄存器和数据输出寄存器 4 部分组成。
控制寄存器
状态寄存器
数据输入寄存器
数据输出寄存器
发送时
钟
串行数据输出
MODEM 控制
串行数据输入
地 址
译码器 CS
C/ D
CPU
总线系统
数据总线
RxRDY
TxRDY
复位
IOW
AEN
地址总线
IOR
复位
并入
串出
串
入并出
接收时
钟
- 70- 目录 上页 下页 结束
3. 串行通信的有关概念⑴ 发送时钟和接收时钟把二进制数据序列称为比特组,由发送器发送到传输线上,再由接收器从传
输线上接收。 ① 发送时钟:串行数据的发送由发送时钟控制,数据发送过程是:把并
行的数据序列送入移位寄存器,然后通过移位寄存器由发送时钟触发进行移位输出,数据位的时间间隔可由发送时钟周期来划分。
② 接收时钟:串行数据的接收是由接收时钟来检测,数据接收过程是:传输线上送来的串行数据序列由接收时钟作为移位寄存器的触发脉冲,逐位打入移位寄存器。接收过程就是将串行数据序列,逐位移入移位寄存器后组成并行数据序列的过程。
⑵ DTE 和 DCE ① 数据终端设备(简称 DTE) :是对属于用户所有联网设备和工作站的
统称,它们是数据的源或目的或者即是源又是目的。例如:数据输入 / 输出设备,通信处理机或各种大、中、小型计算机等。
② 数据电路终端设备或数据通信设备 (简称 DCE) : DCE 是对网络设备的统称,该设备为用户设备提供入网的连接点。自动呼叫 / 应答设备、调制解调器 Modem 和其他一些中间设备均属 DCE 。
⑶ 信道 信道是传输信息所经过的通道 , 是连接 2 个 DTE 的线路 , 它包
括传输介质和有关的中间设备。
- 71- 目录 上页 下页 结束
4. 串行通信中的工作方式
⑴ 单工工作方式
⑵ 半双工工作方式
⑶ 全双工工作方式
发送器
接收器
单工方式 发送器 发送器
接 收 器
器
接 收 器
器
发送器 发送器
接 收 器
器
接 收 器
器
A站点 B站点 B站点 B站点 A站点 A站点 B站点
- 72- 目录 上页 下页 结束
传输制式
全双工
站 A 站 B
站 A 站 B
站 A 站 B
半双工
单工
- 73- 目录 上页 下页 结束
5. 同步通信和异步通信方式 ⑴ 同步通信方式 同步通信方式的特点是:由一个统一的时钟控制发送方和接收方,若干字符组成一个信息组,字符要一个接着一个传送;没有字符时,也要发送专用的“空闲”字符或者是同步字符,因为同步传输时,要求必须连续传送字符,每个字符的位数要相同,中间不允许有间隔。
⑵ 异步通信方式 异步通信的特点是:字符是一帧一帧的传送
,每一帧字符的传送靠起始位来同步。在数据传输过程中,传输线上允许有空字符。
所谓异步通信,是指通信中两个字符的时间间隔是不固定的,而在同一字符中的两个相邻代码间的时间间隔是固定的通信。异步通信中发送方和接收方的时钟频率也不要求完全一样,但不能超过一定的允许范围。
- 74- 目录 上页 下页 结束
6. 通信中必须遵循的规定
⑴ 字符格式的规定 通信中,传输字符的格式要按规定写
,图 7.35 是异步通信的字符格式。在异步传输方式每个字符在传送时,前面必须加一个起始位,后面必须加停止位来结束,停止位可以为 1 位, 1.5 位, 2 位。奇、偶校验位可以加也可以不加。
⑵ 比特率、波特率 (baudrate) ① 比特率:比特率作为串行传输中数据传输
速度的测量单位,用每秒传输的二进制数的位数bit/s( 位 /秒 ) 来表示。
② 波特率:波特率是用来描述每秒钟内发生二进制信号的事件数,用来表示一个二进制数据位的持续时间。
- 75- 目录 上页 下页 结束
7. 调制解调器
调制( Modulating )把数字信号转换为电话线路传送的模拟信号
解调( Demodulating )
将电话线路的模拟信号转换为数字信号
调制解调器 MODEM具有调制和解调功能的器件合制在一个装置
- 76- 目录 上页 下页 结束
7.3.2 8251 的外部引线及内部结构
8251实现了起止式串行异步通信协议,支持全双工通信通信字符可选择数据位为 5~ 8 位
停止位 1 、 1.5 或 2 位
可进行奇偶校验
具有奇偶、帧和溢出错误检测电路
8251支持的数据传输速率为 0~19.2bps
- 77- 目录 上页 下页 结束
1. 8251 的内部结构及性能 ⑴ 数据总线缓冲器 数据总线缓冲器通过 8 位数据线 D7~ D0 和 CPU 的数据
总线相连,负责把接收口接收到的信息送给 CPU ,或把 CPU 发来的信息送给发送口。
⑵ 读 /写控制逻辑 读 /写控制逻辑接收与读 /写有关的控制信号, ⑶ 发送缓冲器与发送控制电路 发送缓冲器包括发送移位寄存器和数据输出寄存器,发送移位寄存器通过 8251 芯片的 TxD管脚将串行数据发送出去。
⑷ 接收缓冲器与接收控制电路 接收缓冲器包括接收移位寄存器和数据输入寄存器。串行
输入的数据通过 8251 芯片的 RxD管脚逐位进入接收移位寄存器,然后变成并行格式进入数据输入寄存器,等待 CPU取走。接收控制电路是用来控制数据接收工作。
⑸ 调制 / 解调器控制逻辑。 利用 8251 进行远距离通信时,发送方要通过调制解调器
将输出的串行数字信号变为模拟信号,再发送出去;接收方也必须将模拟信号经过调制解调器变为数字信号,才能由串行接口接收。
- 78- 目录 上页 下页 结束
2. 8251 的外部性能
8251 是双列直插式的 28条引脚封装的集成电路,引脚信号如图所示。
D1
D0
VCC
RxC
DTR
RTS
DSR
RESET
CLK
TXD
TXEMPTY
CTS
SYNDET/BRKDET
TXRDY
D2
D3
RXD
GND
D4
D5
D6
D7
TxC
WR
CS
C/D
RD
RXRDY
8251A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
- 79- 目录 上页 下页 结束
7.3.3 8251 的控制字及其工作方式
1. 方式寄存器
方式寄存器是 8251 在初始化时,用来写入方式选择字用的。方式选择有 2 种:同步方式和异步方式。方式寄存器有 8 位,最低 2 位为“ 00” 表示是同步方式,最低2 位不全是 0 时表示是异步方式
- 80- 目录 上页 下页 结束
1. 方式寄存器
⑴ 8251 工作在同步方式下 ( 方式寄存器的格式: )
同步字符数
0:2 个字符
1:1 个字符
同步方式
0:内同步,SDYNDET 为输出
1:外同步,SDYNDET 为输入
数据位 0 数
00: 5 位 ,01: 6 位
10: 7 位 ,11: 8 位
全 0 位同步模式
否则位异步模式
检验类型 检验设置
0:奇检验 0:无校验
1:偶检验 1:有校验
D7 D6 D5 D4 D3 D2 D1 D0
SCS ESC EP PEN L2 L1 0 0
例如:要求 8251 作为外同步通信接口,数据位 8 位, 2 个同步字符,偶校验,其方式选择字应为十六进制的 7CH(01111100B= 7CH) 。
- 81- 目录 上页 下页 结束
1. 方式寄存器 ⑵ 8251 工作在异步方式下 ( 方式寄存器的格式 ) D7 D6 D5 D4 D3 D2 D1 D0
S2 S1 EP PEN L2 L1 B2 B1
停止位个数 00:无定义 01:1 个 10:1 个半 11:2 个
检验类型 检验设置 0:奇检验 0:无校验 1:偶检验 1:有校验
数据位数 00:5 位:01:6 位 10:7 位:11:8 位
波特率因子 00:同步模式 01:波特率因子位 1 10:波特率因子位 16 11:波特率因子位 64
例如:要求 8251 芯片作为异步通信,波特率为 64 ,字符长度 8 位,奇校验,2 个停止位的方式选择字应为十六进制的 DFH(1101111lB= DFH) 。
- 82- 目录 上页 下页 结束
2. 控制寄存器 对 8251 进行初始化时,按上面的方法写入了方式选择字后,接着要写入的是命令字,由命令字来规定 8251 的工作状态,才能启动串行通信开始工作或置位。这样就要对控制寄存器输入控制字,控制寄存器的格式如图 7.42所示。
3. 状态寄存器 状态寄存器是反映 8251 内部工作状态的寄存器,只能读出,不能写入, CPU 可用 IN 指令来读取状态寄存器的内容。
- 83- 目录 上页 下页 结束
7.3.4 8251 串行接口应用举例( 1 )
1. 异步模式下的初始化程序举例 设 8251A 工作在异步模式,波特率系数为 16 , 7 个数据位
/ 字符,采用偶校验, 2 个停止位,发送、接收允许,设端口地址为 00E2H 和 00E4H 。完成初始化程序。
根据题目要求,可以确定方式字为 11111010B ,即 FAH 。控制字为 00110111B ,即 37H 。则初始化程序如下:
MOV AL , 0FAH ;送方式字 MOV DX , 00E2H OUT DX , AL ;异步方式, 7 位 / 字符,偶校验, 2 个停止位
MOV AL , 37H ;设置控制字 OUT DX , AL ;有效
- 84- 目录 上页 下页 结束
7.3.4 8251 串行接口应用举例( 2 )
2. 同步模式下初始化程序举例 设端口地址为 52H ,采用内同步方式, 2 个同步字符(设同步字符为
16H ),偶校验, 7 位数据位 / 字符。 根据题目要求,可以确定方式字为, 00111000B ,即 38H;控制字为
10010111B ,即 97H 。它使 8251A 对同步字符进行检索;同时使状态寄存器中的 3 个出错标志复位;此外,使 8251A 的发送器启动,接收器也启动;控制字还通知 8251A , CPU 当前已经准备好进行数据传输。
程序段如下: MOV AL , 38H ;设置模式字,同步模式,用 2 个同步字符, OUT 52H , AL ; 7 个数据位,偶校验 MOV AL , 16H OUT 52H , AL ;送同步字符 16H OUT 52H , AL MOV AL , 97H ;设置控制字,使发送器和接收器启动 OUT 52H , AL