I/O接口概述
定时 /计数器 —— 8253
并行接口 —— 8255A
串行接口 —— 8251A
本章内容
掌握微机接口的作用和功能
掌握可编程并行接口芯片 8255A的连接与编程
掌握串行通信接口适配器 8251A的连接与编程
掌握可编程定时计数芯片 8253的连接与编程学习目的
9.1 I/O接口的典型结构与接口芯片的分类
1,内部结构下图为 I/O接口面向用户的典型结构。
I/O接口的典型结构
CPU I/O设备I/O接口
1
2
3
AB
DB
CB
DATA
STATUS
CONTROL
I/O接口内部一般由 数据,状态,控制 三类寄存器组成 。
数据寄存器在输入时,保存外设发往 CPU
的数据 (输入寄存器 )
在输出时,保存 CPU发往外设的数据 (输出寄存器 )
状态寄存器 ——保存状态信息,CPU可从状态口读取当前状态;
控制寄存器 ——用来保存 CPU写入的控制字 。
2,外部特性接口电路的外部特性由其对外的引出信号体现 。
对于面向 CPU一侧的信号,
需要弄清面向的是什么样的 CPU
数据宽度 (8/16/32位 )
地址总线宽度 (16/20/24/32位 )
控制线是电平有效还是边沿有效对于面向外设一侧的信号,
要弄清外设工作原理与工作特点
正确理解信号的意义
外设种类繁多,信号差异较大
3,接口电路芯片分类支持通用的输入 /输出及控制的接口芯片 。
例如,并行接口芯片 8212,8255A,Z80PIO等,以及串行接口芯片 8250,8251,Z80SIO等 。
按功能分类:
(1)通用接口芯片,
(2) 面向微机系统的专用接口芯片,
例如,中断控制器 8259A,DMA控制器 8237/8257,
Z80DMA,定时 /计数器 8253/8254。
(3) 面向外设的专用接口芯片,
例如,CRT控制器 MC6845,8257;软盘控制器
PD765,FD8271/FD8272;键盘 /显示器接口芯片 8279。
(4) 接口电路的可编程性可编程 ----接口芯片的功能和工作方式可通过程序设定 。
初始化程序 ----为设定芯片工作方式而编写的程序段称为该接口芯片的初始化程序 。
9.2 8253定时计数控制器微机对外部事件进行定时控制或对外部事件发生的次数进行记录有两种方法,
软件编程控制的方 式
采用软件硬件相结合的方式可编程定时 /计数电路 8253具有多种工作方式,定时值和定时范围可用程序确定 。 PC
机中的定时器主要用于系统日时钟计时,
一,8253的内部结构及引脚
8253具有 3个独立的 16位计数通道,用
24脚 DIP封装,其主要功能如下:
* 1片上有 3个独立的 16位计数器通道,最大计数范围为 0~65535;
* 每个计数器都可以按照二进制或二十进制计数;
* 每个计数器的计数速度可高达 2MHZ;
* 每个通道有 6种工作方式,可通过程序设置来改变;
* 所有的输入和输出都与 TTL兼容 。
8253内部可分为 6个模块,如图所示 。
8253的内部结构数据总线缓冲器计数器
0#
计数器
1#
计数器
2#
读 / 写逻辑控 制字 寄存 器内部总线
D0~D7 CLK0
GATE0
OUT0
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
WR
RD
A0
A1
CS
GND
VCC
从系统总线接收输入信号,经过译码产生对 8253各部分的控制 。
* 计数通道
8253有 3个相互独立的同样的计数电路 。
计数器的结构如图所示 。
* 数据总线缓冲器数据总线缓冲器通过 8条数据线 D7~D0接收 CPU向控制寄存器写入的控制字和向计数器写入的计数初值 。
* 读 /写控制逻辑计数器内部结构控制单元初值寄存器减 1计数器输出锁存器内 部 总 线
CLK
GATE
OUT
控制单元初值寄存器减 计数器输出锁存器内 部 总 线
* 8253的方式控制字方式控制字的格式如下:
D7 D6 D5 D4 D3 D2 D1
D0计数器 读 /写格式 工作方式 数制
0 —二进制
1 —二 ― 十进制( BCD)
000 方式 0
001 方式 1
10 方式 2
11 方式 3
100 方式 4
101 方式 5
00 计数器锁存命令
10 只读 /写高 8位
01 只读 /写低 8位
11 首先写低 8位然后写高 8位
00 选择计数器 0
01 选择计数器 1
10 选择计数器 2
11 非法选择
* 8253的引脚
8253的引脚图
8
7
6
5
4
3
2
1
22
23
20
19
21
9
11
10
15
14
13
18
16
17
CL K
0
G A T E
0
OUT
0
CL K
1
G A T E
1
OUT
1
CL K
2
G A T E
2
OUT
2
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
A
1
A
0
V
CC
GND
WR
RD
CS
图 8 - 3   8253 的引脚信号
24
12
图   的引脚信号二,8253的工作方式
8253有 6种工作方式,通过对 8253写入方式控制字来编程 。
1,方式 0—— 计数结束中断该方式下,门控信号决定计数的停止或继续,装入初值决定计数过程重新开始 。 下图给出 a) 方式 0正常计数 b) 方式 0门控信号的影响 c) 方式 0写入新的初值对计数过程的影响三种情况的波形 。
C W = 1 0 LSB = 4
WR
C L K
G A T E
OUT
4 3 2 1 0 FF
a,方式 0 正常计数
a,方式 0 正常计数
CW = 10 LSB = 3
WR
CLK
GATE
OUT
3 2 2 2 1 0 FF
b,方式 0时 GATE 信号的作用
C W = 1 0 L S B = 3
WR
C L K
G A TE
OUT
3 2 1 2 1 FF0
C,方式 0 计数过程中改变计数值
L S B = 2
方式 计数过程中改变计数值c,方式 0时计数过程中改变计数值
2,方式 1—— 可重触发的单稳态触发器该方式是在门控的作用下开始计数,
计数过程波形图如图所示 。
L S B = 3
WR
C L K
G A TE
OUT
3 2 1 0 FF 3 2
a,方式 1 正常计数
C W = 1 2 3
方式 正常计数
a,方式 1 正常计数
b,方式 1时 GATE 信号的作用
LSB = 3
WR
CLK
3 2 1 3 2 1
CW = 12
0
GATE
OUT
c,方式 1时计数过程中改变计数值
LSB = 2
WR
CLK
GATE
OUT
42 1 0 FF 3FE
CW = 12 LSB=4
3,方式 2—— 分频器方式 2用门控信号达到同步计数的目的,
波形图如图所示 。
a,方式 2 正常计数
C W = 1 4 L S B = 3
WR
C L K
G A T E
OUT
3 2 1 3 2 1 3
a,方式 2 正常计数方式 正常计数
1
C W = 1 4 L S B = 3
WR
C L K
G A T E
OUT
3 2 2 3 2 3
b,方式 2 GATE 信号的作用方式 信号的作用b,方式 2时 GATE信号的作用
4
C W = 1 4 L S B = 3 L S B = 5
WR
C L K
G A T E
OUT
3 2 14 5 3
c,方式 2 计数过程中改变计数值方式 计数过程中改变计数值c,方式 2时计数过程中改变计数值
4,方式 3—— 方波发生器方式 3的工作过程同方式 2,只是输出的脉宽不同,波形如图所示 。
a,方式 3 计数值为 偶数 时的波形
32 1 4 3
C W = 1 6 LS B = 4
WR
C L K
G A T E
OUT
42 14 3
a,方式 3 计数值为偶数时的波形
b,方式 3 计数值 为奇数时的波形
3 2 1 5
C W = 1 6 L S B = 5
WR
C L K
G A T E
OUT
2 14 35 4
b,方式 3 计数值为奇数时的波形
6 5
方式 计数值为奇数时的波形
c,方式 3 GATE信号的作用
2 1 4 4
C W = 1 6 L S B = 4
WR
C L K
G A T E
OUT
2 14 34 3
c,  方式 3 G A T E 信号的作用
6 4
  方式 信号的作用
5 4 3 2 1 4 3
C W = 1 6 L S B = 5
WR
C L K
G A TE
OUT
L S B = 4
d,方式 3 计数过程中改变计数值方式 计数过程中改变计数值
d,方式 3 计数过程中改变计数值
5,方式 4—— 软件触发选通方式用方式 4工作时,GATE门控信号只是用来允许或不允许定时操作的,定时的执行过程由装入的初值决定,
波形图如图所示 。
a,方式 4 正常计数
C W = 1 8 L S B = 3
WR
C L K
GA T E
OUT
3 2 1 0 FF
a,方式 4 正常计数方式 正常计数
b,方式 4 GATE 信号的作用
C W = 1 8 L SB = 3
WR
CL K
G A T E
OUT
3 3 3 2 1 0 FF
b,方式 4 GTAE 信号的作用
c,方式 4 计数过程中改变计数值
C W = 1 8 L S B = 3
WR
C L K
G A TE
OUT
3 2 1 2 1 0 FF
c,方式 4 计数过程中改变计数值
L S B = 2
方式 计数过程中改变计数值
6,方式 5—— 硬件触发选通方式方式 5为硬件触发选通方式,完全由 GATE
端引入的触发信号控制定时和计数,波形图如图所示 。
a,方式 5 正常计数
OUT
LSB = 3
WR
CLK
GATE
CW = 1A
3 2 1 0 FF 3
b,方式 5时 GATE 信号的作用
OUT
b,方式 5 时 GATE 信号的作用
L SB = 3
WR
CLK
G A T E
C W = 1 A
3 2 3 2 1 0 FF

c,方式 5时计数过程中改变计数值
c,方式 5 时计数过程中改变计数值
3 2 1 0 F F F F 4 3
C W = 1 A L S B = 3
WR
C L K
G A T E
OUT
L S B = 4
方式 时计数过程中改变计数值三,定时器 /计数器的应用举例例:设 8253端口地址为:通道 0为 340H,通道 1为 341H,通道 2为 342H,控制字寄存器为 343H。
电路图如图所示,要求 8253的通道 2和通道 1组成级联的计数器,CLK2接分频器 CD4040的输出 (将输入 8MHZ标准时钟分频,分频系数由跳线决定 ),
CLK1由跳线接 8253的 OUT2,通过设置通道 1,通道 2的初值,由 CPU读取 OUT1的输出,产生秒定时,并由显示子程序完成时钟显示 。 试编写汇编程序,
8255A连接电路 (Y0=340H~343H,Y4=350H~353H)
……
8255PA5
8255PA4
8255PA6
GATE2
GATE0
GATE1
D0~ D7D0~ D7
CS
RD
WR
A0
A1
Y0
IOR
IOW
A0
A1
>>
OUT0 OUT1
OUT2
CLK1
CLK0
CLK2
2Y1
2Y2
2A1
2A2
1G
2GY4 IOR
D0
D2
8253
74LS244
O11 O9 O7 O5 O3
4040
CLK
8MHZ
KP
+5V
按程序要求编写流程如下,开始在 CRT上显示提示信息写 8255A控制字 (81H)
写 8253通道 2方式字 (B6H)
即方式 4,写该通道计数初值写 8253通道 1方式字 (70H)
即方式 0,写该通道计数初值调用显示子程序
S1~S4按下?
8253通道 1计数减为 0?
二位 60进制计数单元加 1
退出
N
Y
N
流程图程序设计如下:
DLYC2 EQU 2000
TCL1 EQU 04H ;通道 1计数初值
TCL1 EQU 00H ;
TCL2 EQU 80H ;通道 2计数初值
TCH2 EQU 00H
DATA SEGMENT
DISC DB 0BBH,0A0H,97H,0B5H,0ACH,3DH,
3FH,0A1H,0BFH,0BDH; 显示段码表
DISO DB ‘Press any of the keys to quit!’ 24H
DDBB DB 4 DUP (0)
COUNT DB 00H
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS,CODE,DS,DATA
START,MOV AL,3 ; 清屏幕
MOV AH,0
INT 10H
MOV AX,DATA
MOV DS,AX
MOV AH,2 ; 设光标位置
MOV BH,0
MOV DX,0614H
INT 10H
MOV DX,OFFSET DISO ; 显示,Press……”
MOV AH,9
INT 21H
MOV DX,347H ; 8255初始化
MOV AL,81H ; A口为输出,B口为输出,
DUT DX,AL ; PC4~7为输出,PC0~3为输入
MOV DX,346H ; 关四个 7段码显示器
MOV AL,OFFH
OUT DX,AL
MOV DX,343H ; 8253初始化
MOV AL,0B6H ; 通道 2
OUT DX,AL
MOV DX,342H
MOV AL,TCL2 ; 计数器 2初值为 0080H
OUT DX,AL
MOV AL,TCH2
OUT DX,AL
AAAA,MOV DX,343H ; 通道 1
MOV AL,70H
OUT DX,AL
MOV DX,341H ; 计数器 1初值为 0004H
MOV AL,TCL1
OUT DX,AL
MOV AL,TCH1
OUT DX,AL
MOV DX,344H
MOV AL,OFFH
OUT DX,AL
AAA,CALL DISP ; 调显示子程序
MOV DX,350 ; 是否退出
IN AL,DX
AN AL,0F0H
CMP AL,0F0H
JNE KPR
IN AL,DX ; 通道 1到 0?
AND AL,04H ; 即 OUT=1?
JZ AAA
MOV CX,0004H ; 两位 60进制计数
MOV SI,offset DDBB
MOV AL,[SI]
INC AL ; 秒加 1
CMP AL,0AH ; 计到十?
JNE TMO
MOV BYTE PTR [SI],0
INC SI
MOV AL,[SI]
INC AL ; 十秒加 1
CMP AL,06H ; 计到 6?
JNE TMO
MOV Byte PTR [SI],0
INC SI
MOV AL,[SI]
INC AL ; 分加 1
CMP AL,0AH ; 计到 10?
JNE TMO
MOV BYTE PTR [SI],0
INC SI
MOV AL,[SI]
INC AL ; 十分加 1
CMP AL,06H ; 计到 6?
JNE TMO
MOV AL,0
TMO,MOV [SI],AL
JMP AAAA
KPR,MOV AL,0 ; 退出
MOV DX,350H
OUT DX,AL
MOV DX,346H
MOV AL,OFFH
OUT DX,AL
MOV AX,4C00H
INT 21 H
Main ENDP
DISP PROC NEAR ; 显示子程序
………… (略 )
DISP ENDP
CODE ENDS
END START
9.3 并行接口和可编程并行接口芯片 8255A
并行接口传输数据通常以 8位,16位或 32
位为传输单位,一次传送一个字长的数据 。
并行接口电路,
*不可编程的并行接口电路 (如 74LS244/254
三态缓冲器,74LS273/373锁存器 )
*可编程接口电路 (如 Intel8255A)
可编程接口电路通常应具有以下功能:
1,两个或两个以上的具有锁存器或缓冲器的数据端口;
2,每个数据端口都具有与 CPU用应答方式交换信号所必须的控制和状态信息,也有与外设交换信息所必须的控制和状态信息;
3,通常每个数据端口有能用中断方式与
CPU交换信息所必须的电路;
4,片选和控制电路;
5,可用程序选择数据端口,选择端口的数据传送方向,选择与 CPU交换信息的方法 。
一,8255A的内部结构和引脚信号
1,8255A内部结构
8255A可编程外围设备接口 (programmable
peripheral interface,简写为 PPI),其内部结构如图所示 。
8255A内部结构框图
A组控制数据总线缓冲器读 /写控制逻辑
B组控制
RESET
RD
A0A1
A组
A口
8位组口
A组
C口高位
(4位 )
B组
C口低位
(4位 )
8位
B组
B口
PA7~PA0
PC7~PC4
PC3~PC0
PB7~PB0
D7~D0
WR
CS
8255A包括四大部分,数据总线缓冲器,读写控制逻辑,A组和 B组控制电路,端口 A,B,C。
(1) 数据端口 A,B,C
端口 A包含一个 8位数据输 出 锁存器 /缓冲器和一个 8位数据输入锁存器,输入输出数据均受到锁存 。
端口 B和 C,都包含一个 8位数据输入缓冲器和一个 8位的数据输出锁存器 /缓冲器,输出数据能锁存,输入数据不锁存 。
端口 C:可分成两个 4位端口,分别定义为输入或输出端口,还可定义为控制,状态端口,配合端口 A和端口 B工作 。
(2) A组和 B组
A组包括
A口,PA0~PA7
C口的高 4位,PC4~PC7
B组包括
B口,PB0~PB7
C口的低 4位,PC0~PC3
A组,B组的控制寄存器,接收来自数据总线的控制字,并根据控制字确定各端口的工作状态和工作方式 。
(3) 数据总线缓冲器三态双向 8位缓冲器,是 8255A与 CPU
之间的数据接口 。 传送输入数据,输出数据,
控制命令字 。
(4) 读 /写控制逻辑接收来自 CPU地址总线信号和控制信号,
并发出命令到两个控制组 (A组和 B组 )。
CS,片选信号,接 CPU高位地址的译码输出;
RD,读信号,RD有效,CPU读 8255A的数据或状态;
WR,写信号,WR有效,CPU向 8255A写入的控制或数据信息 。
2,8255A的引脚
8255
A采用 40线双列直插封装,引脚图如图所示 。
8255A引脚定义
4
3
2
1
40
37
18
34.
.
.
.
.
.
27D7
D0
A0
A1
CS
RD
RESET
VCC
GND
9
8
6
5
35
36
8255A
PPI
数据总线控制线电源线通道 A
通道 B
通道 C
CPU接口 外设接口
.
.
.
PA7
PA0
.
.
.
PB7
PB0
.
.
.
PC7
PC0
WR
25
14
15
16
17
13
12
11
10
* PA7~PA0,A端口数据信号引脚
* PB7~PB0,B端口数据信号引脚
* PC7~PC0,C端口数据信号引脚
* D7~D0,8255A的 8位数据线
* A1~A0,端口选择信号当 A1A0=00时 选择端口 A
当 A1A0=01时 选择端口 B
当 A1A0=10时 选择端口 C
当 A1A0=11时 选择控制端口二,8255A的控制字
8255A共有 两个 控制字,即 工作方式控制字和对 C口置位 /复位控制字 。
1,工作方式控制字控制字和各位的含义如图所示 。
D7 D6 D5 D4 D3 D2 D1 D0 B组端口 C(下半部 )
1=输入,0=输出端口 B
1=输入,0=输出方式选择
0=方式 0,1=方式 1
A组端口 C(上半部 )
1=输入,0=输出端口 A
1=输入,0=输出方式选择
00=方式 0,01=方式 1,
1?=方式 2
方式设置标志
1=有效工作方式控制字
2,端口 C的置位 /复位控制字控制字的格式如图所示。
置位 /复位控制字
D7 D6 D5 D4 D3 D2 D1 D0
位的置位 /复位
1=置位,0=复位位 选 择
D3 D2 D1 通道 C位按位置位 /复位控制标志 0=有效
0 0 0 位 0
0 0 1 位 1
0 1 0 位 2
0 1 1 位 3
1 0 0 位 41 0 1 位 5
1 1 0 位 6
1 1 1 位 7
不使用设置为 000
关于控制字要说明几点:
(1) 设置方式控制字时,A口,B口作为 整体设置,而 C口要分成上,下两部分 分别设置 。
三个端口的工作方式由 一个控制字规定 。
(2) C口按位置位 /复位控制字不是送到 C口地址,而是送到 控制寄存器 地址;且一个控制字只能使 C口 一位置位或复位 。
(3) 方式控制字和按位置位 /复位控制字均写入同一个 控制寄存器 地址,二者通过最高位 D7来区别 。 D7=1为方式控制字,D7=0
为按位置位 /复位控制字 。
例,设 8255A的地址为 04A0H~04A3H,按下述要求对 8255A进行初始化 。 要求 A口,B口均设置成方式 1,均为输入,PC6和 PC1为输出 。
MOV DX,04A3H ; 控制口地址
MOV AL,B6H ;工作方式控制字
OUT DX,AL ; 控制字送到控制口例,设 8255A的地址为 04A0H~04A3H,要求通过 8255A芯片 C口的 PC2位产生一个方波脉冲 。
MOV DX,04A3H ;控制口地址
AA,MOV AL,05H ;对 PC2置位的控制字
OUT DX,AL
CALL DELAY ;延时程序
MOV AL,04H ;对 PC2复位的控制字
OUT DX,AL
JMP AA
三,8255A的工作方式
1,方式 0 —— 基本输入 /输出方式方式 0是一种基本输入输出工作方式,它的 24条 I/O线全部都用作传送数据,不设置应答信号线,常用于无条件传送,输出有锁存,
输入只有缓冲能力而无锁存功能 。
方式 0的方式控制字:
1 0 0 D4 D3 0 D1 D0
* 任何一个端口都可由 CPU用简单的 输入 或输出指令 来进行 读写
* 8255A可作为 查询方式 的接口电路,这时
A口和 B口分别作为 数据端口
* C口的高 4位和低 4位能分别作为 输入 或 输出 用来传送控制外设的 控制信息 和采集外设的状态信息 。
2,方式 1—— 选通式输入 /输出方式
(1) 方式 1选通输入方式 1操作使端口 A或端口 B作为锁存输入设备工作 。 端口 C也可按方式 1操作使用 ——但不是对数据,而是对控制信号,或当端口 A或端口 B为选通输入端口时的握手信号 。
下图示出 8255A方式 1选通输入时的内部结构和时序图 。
方式 1(端口 B)
IBFB
INTRBPC0
PC1
PB7~0
INTEB
RD
端口 B输入端口 B方式 1
B组方式控制字
1 1 1?
PC2 BSTB
方式 1选通操作内部结构和时序图
tST
tSTB
tSIT tRIB
tRIT
tPS
tPH
STB
IBF
RD
来自外设的输入数据
INTR
来自外设的输入数据
IBF:输入缓冲器满是一个输出信号,表明输入缓冲器已装入信息 。
STB:选通输入将数据装入端口锁存器,该信息保持到由 IN指令输入给微处理器 。
INTR:中断请求是一个输出信号,它请求一次中断 。 INTR引脚在 STB输入回到逻辑
1时变为逻辑 1,在微处理器从端口输入数据时被清 0。
INTE:中断允许信号既不是输入也不是输出,
它是通过端口 PC4(端口 A)或 PC2(端口 B)
的位来编程的内部位 。
PC7和 PC6:端口 C的引脚 7和 6是通用 I/O引脚 。
(2) 方式 1选通输出当端口 A或端口 B为方式 1输出时,各指定 PC的 3条线作为 8255A与外设及 CPU之间应答信号 。 下图为方式 1选通输出操作的内部结构和时序图 。
tAOB
tWOB
tWIT
tAK tAIT
tWB
输出
WR
OBF
ACK
INTR
输出
8255A方式 1选通输出内部结构和时序图
INTRAPC3
PC6
PC7
PA7~0
方式 1输出端口 A
AOBF
PC4,5 I/O
INTEA
2
AACK
WR
方式 1输出端口 B
INTRBPC0
PC2
PC1
INTEB
BOBF
BACK
PB7~0
WR
OBF:输出缓冲器满是一个输出信号,一旦数据输出给端口 A或 B的锁存器,它就变为低电平,一旦外部设备返回 ACK脉冲,
被置为逻辑 1。
ACK,ACK是来自外部设备的一个响应信号,
表明它已接收到来自 8255A端口数据,
并使 OBF引脚回到逻辑 1电平 。
INTE:它是允许或禁止 INTR引脚的一个内部位 。
INTEA位被编程为 PC6,INTEB位被编程为 PC2。
PC5和 PC4:通用 I/O引脚,它们具有置位 /复位功能 。
INTR,8255A送 CPU的中断请求信号 。 INTR=1的条件是,OBF,ACK和 INTE都为高电平 。
3) 方式 2—— 双向选通输入 /输出方式方式 2只允许 A组采用,此时端口 A变为双向,允许数据在同一组 8条线上发送和接收 。
下图示出方式 2操作内部结构和时序图 。
tOB
tWOB
外设数据线
WR
OBF
ACK
INTR
数据从 CPU到 8255A
tPS
tKDtAD
tPH
tST
tSTB
tRIB
STB
IBF
RD
外设数据线数据从 到数据从外设到 8255A
数据从 8255A
到外设 数据从 8255A
到 CPU
8255A方式 2操作内部结构和时序图
PA 0~ PA 7
方式 2组态
INTE1
( PC6)
PC3
PC6
PC7
INTRA
PC0~ PC2
PC4
PC5
INTE2
( PC4)
IBFA
I/OWR
RD
ACKA
OBFA
STBA

方式
( )

( )
INTR:中断请求是一个输出信号,用于在输入和输出情况下中断微处理器 。
OBF:输出缓冲器满是一个输出信号,表明输出缓冲器包含给双向总线的数据 。
ACK:响应输入信号允许三态缓冲器,使数据可以出现在端口 A。 如果 ACK为逻辑
1,则端口 A的输出缓冲器处于高阻抗状态 。
IBF:输入缓冲器满是一个输出信号,表明输入缓冲器已包含外部双向总线的数据 。
STB:选通输入将来自双向端口 A总线上的外部数据装入端口 A的输入锁存器 。
INTE:中断允许是允许 INTR引脚的内部位
(INTE1和 INTE2)。
PC2,PC1和 PC0:通用 I/O引脚,可由置位 /复位命令控制 。
例,通过双向端口 A发送 AH寄存器中的内容 。;通过 A口双向总线传送 AH的过程
BITT EQU 80H
PortC EQU 62H
PortA EQU 60H
Trans proc near
IN AL,PortC ;获得 OBF
TEST AL,BITT ;测试 OBF
JZ TAB ;如果 OBF=1
MOV AL,AH ;取得数据
OUT Port A,AL;发送数据
TAB,RET
ENDP
4) 端口 C的状态字
(1) 未被 A口和 B口征用的引脚:将从定义为输入的端口读到引脚的输入信息;将从定义为输出的端口读到输出锁存器的信息 。
(2) 被 A口和 B口征用做为联络线的引脚:将从 C口读到反映 8255A状态的状态字 。
在读 C口时,读到的数据有两种情况:
方式 1输入:
I/O I/O IBFA INTEA INTRA INTEB INTRBIBFB
D7 D6 D5 D4 D3 D2 D1 D0
A组 B组方式 2输出:
OBFA INTEA I/O I/O INTRA INTEB INTRBOBFB
D7 D6 D5 D4 D3 D2 D1 D0
A组 B组方式 2:
OBFA INTE1 IBFA INTRA
D7 D6 D5 D4 D3 D2 D1 D0
A组 B组
INTE2
端口 C读出内容例,设 8255A的端口地址为 344H~347H。 由 16个按键组成 4?4矩阵式键盘,编写程序读取按键 (定义键值为 0~F)将键值写入输出口,在数码管上显示,以观察输入的键位 。
电路图如图所示。
8255A与键盘和 LED连接电路
8255A
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
LED3 LED2 LED1 LED0
+5V
D0~ D7D0~ D7
RD
WR
A0
A1
RST
CS
IOR
IOW
A0
A1
Reset
Y1
程序流程如下:
开始在 CRT上显示提示信息写 8255A控制字 80H
字型码送 B口延时且关指示灯写 8255A控制字 88H
有键按下行扫描键盘列扫描键盘延时消抖等待释放
S1~S4按下否退 出
Y N
NY
流程图相应程序如下:
DATA SEGMENT
disc DB 0BBH,0A0H,097H,0B5H,0ACH,3DH
DB 3FH,0A1H,0BFH,0BDH,0AFH,3EH,0B6H
DB 1FH,0FH ; 0~f 显示段码表
DISO DB? Press any of the keys to quit !?,24H; 提示信息
DQQ DB 0
DATA Ends
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE DS:DATA
START,MOV AL,3 ; 清屏幕
MOV AH,0
INT 10H
MOV AX,DATA ;显示提示信息
MOV DS,AX
MOV AH,2 ;光标定位
MOV BH,0
MOV DX,0614H
INT 10H
MOV DX,OFFSET DISO;显示:,Press……”
QWE,MOV DX,347H ; 8255A控制寄存器初始化
MOV AL,80H ; B口,C口设为输出
OUT DX,AL
MOV DX,345H ; 345H为 8255A的 B口地址
MOV BL,DQQ
MOV BH,0
MOV DI,BX
MOV AL,[DI] ;取‘ 0~F’显示字形码
OUT DX,AL ;将显示字形码送 B口
MOV DX,346H ; 8255A C口地址
MOV AL,0E0H
OUT DX,AL ;
MOV BX,DLYC1
LPO,MOV CX,DLYC2 ;延时
LP1,LOOP LP1
DEC BX
JNZ LPO
KS,MOV DX,350H ;指示灯显示
MOV AL,DQQ ;按下键的二进制值
OUT DX,AL
MOV DX,347H ; 8255A初始化,写控制字 88H
MOV AL,88H ; PC0~PC3为输出,PC4~PC7为输入
OUT DX,AL ; B口输出,方式 0,A口输出。
KSLP,MOV DX,346H ; 读键盘
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JNE KP ;有键按下,转处理判别
MOV DX,350H ;若键未按,查 S1~S4键是否退出
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JNE KPR ; S1~S4任一健按下,则转 KPR退出
JMP KSLP
KP,MOV CX,0F000H ;扫描键盘
KP0,LOOP KP0 ;消抖延时
MOV DX,346H
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JE KSLP ;消抖后无键按下,则转回,视作干扰
MOV CX,0004H ;扫描 4行
MOV DX,346H
MOV BX,0F700H ; BH扫描输出行码,先扫第 0行 (PC3=0); BL键值
KP1,MOV AL,BH ; 行扫描
OUT DX,AL
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JNE KP2 ; 是这一行的键按下,转出判断列
ADD BL,04H ; 键值加 4
ROR BH,1 ; 准备扫描下一行
LOOP KP1
JMP QWE ; 4行扫 完 未找到,转显示
KP2,MOV CX,0004H ;扫描 4列
KP3,ROL AL,1 ;列扫描
TEST AL,01
JZ KP4 ; AL=0,即是此列,转出
INC BL ;键值加 1
LOOP KP3
KP4,MOV DQQ,BL ; 键盘送显示缓存
KS5,MOV DX,346H ; 等待键释放
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JNE KS5 ; 仍按下,继续等待
MOV CX,0F000H
KP6,LOOP KP6 ;消抖延时
MOV DX,346H
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JNE KS5
JMP QWE ;键处理结束
KPR,MOV AL,0 ;退出
MOV DX,0350H ;关所有的 LED灯
OUT DX,AL
MOV AX,4C00H
INT 21H
Main ENDP
CODE ENDS
END START
9.4 串行接口和可编程串行接口芯片 8251A
一、通信计算机与外部设备之间,计算机之间的信息交换 。
通信的基本方式并行通信串行通信异步传送同步传送在串行通信时,数据和联络信号使用同一条信号线来传送,收发双方应注意以下几点:
* 双方约定以何种速率进行数据的发送和接收 (波特率 )
* 约定采用何种数据格式 (帧格式 ),如果包含控制信息,其定义是什么二、串行通信基本概念
* 接收方如何得知一批数据的开始和结束
(帧同步 )
* 接收方如何从位流中正确地采集到位数据
(位同步 )
* 接收方如何判断收到数据的正确性 (数据校验 )
* 收发出错时如何处理 (出错处理 )
1,异步通信异步传送方式中,数据 以字符为单位进行传送,每个字符传送时均需起始位和停止位 。 其通信协议是起止式异步通信协议 。
异步通信采用的信息格式
1 0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 1 00/10/1 0/1 0/1 0/1
奇偶校验停止位起始位 7位数据低位 高位数据流向奇偶校验停止位起始位 7位数据下降边指出下一个字符的开始第 n个字符第 (n?1)个字符 第 (n+1)个字符数据传输的字符格式如下:
字符发送之前,先发送一个起始位,低电平,
宽度为 1位,
字符发送结束时,发一个停止位,高电平,宽度为 1位,1.5位或 2位,
数据位,占 5~8位,可在数据位内设 1位奇偶校验位,
字符之间,可有空闲位,它们都是高电平,
传送时,数据的低位在前,高位在后 。
例,若采用连续发送方式,数据位长度为 7位,
选择奇校验,停止位为 1位,传送一个字符 E的 ASCII码 。
字符 E的 ASCII码为 45H,波形如下:
字符 E传送波形
b6 b5 b4 b3 b2 b1 b0
― E‖的 ASCII码,1 0 0 0 1 0 1
0 1 0 1 0 0 0 1 0 1
起始位奇校检停止位
2,同步通信同步通信,即位同步方式,利用编码机制把时钟信息和数据放在一起发送给接收端 。
数据以数据块方式传送,仅在数据块开始处用同步字符来指示 。
其同步传送的数据格式如下:
同步传送的数据格式同步字符 数据 1 数据 2 …… 数据 N
检验字符
CRC1
检验字符
CRC2 同步字符 …
1帧下 1帧数据场同步字符同步字符 数据 1 …… 数据 N
检验字符
CRC1
检验字符
CRC2 同步字符
1帧数据 1 …… 数据 N 检验字符 CRC
1
检验字符
CRC2
(c) 外同步
(a) 单同步
(b) 双同步
3,传输制式在串行通信中,根据数据传送的方向分为,单工传送,半双工传送和全双工传送 。
单工传送,数据只在一个方向上传送 。
半双工传送,在同一时刻只能在一个方向上传送 。
全双工传送,在两个方向可同时传送 。
串行通信电路示意图发送 接收
A站 B站发送器
A站 B站接收器发送器接收器发送器
A站 B站接收器接收器发送器
4,波特率每秒钟传送的二进制位数称为波特率 。
例,在某个异步串行通信系统中,数据传送率为 960字符 /秒,每个字符包括一个起始位,8个数据位和一个停止位,则波特率为 10?960=9600(波特 )
三、串行通信总线标准一是计算机与外设之间要共同遵守的某种约定,这种约定称为物理接口标准 。 (包括电缆的机械特性,电气特性,信号功能及传送过程的定义 )
二是按接口标准设置计算机与外设之间进行串行通信的接口电路 。
在进行串行通信的线路连接时,通常要解决两个问题:
RS—232C 标准是美国电子工业协会 EIA
(Electronic Industries Association)与 Bell等公司一起开发的 1969年公布的通信协议 。
1,RS— 232C 接口标准字母 RS表示 Recommanded Standard (推荐标准 ),232是识别代号,C是标准的版本号 。
下图显示出 RS-232C的标准管脚图 。
RS-232C引脚分配图
14 1
15 2
16 3
17 4
18 5
19 6
20 7
21 8
22 9
23 10
24 11
25 12
13
次信道发送数据发送时钟次信道接收数据接收时钟未用次信道请求发送数据终端就绪信号质量检测振铃指示数据信号速率选择发送时钟未用保护地发送数据接收数据请求发送清除发送数据装置就绪逻辑地载波检测留作测试用未用次信道载波检测次信道消除发送各信号线说明如下:
TXD:发送数据线,输出 。
RXD:接收数据线,输入 。
RTS:请求发送信号,输出,RTS=1,表示终端要发送数据 。
CTS:清除发送信号,输入 。 当外设已准备好接收数据时,使 CTS=1,通知终端可以开始发送数据 。
DTR:数据终端准备就绪信号,输出,高电平有效 。 DTR=1,表示终端准备好接收外设的数据 。
DSR:数据装置准备就绪信号,输入,高电平有效,它表示外设准备好发送数据 。
DCD:接收信号检出,输出,高电平有效 。
RI:振铃指示,输入,高电平有效 。 RI=1,表明 Modem收到交换台送来的振铃信号,用它来通知终端 。
RS—422A 标准是一种以平衡方式传输的标准 。 所谓平衡,是指双端发送和双端接收 。 发送端和接收端分别采用平衡发送器和差动接收器 。
2,RS— 422A 标准如图所示:
MC3487 MC3486
平衡发送器 差动接收器
A
B
A?
B?
RS-422A标准传输线连接当 AA?线电平比 BB?线电平低 –2V时,表示逻辑,1‖;
当 AA?线电平比 BB?线电平高 +2V时,表示逻辑,0‖。
由于 RS-422A标准采用了双线传输,大大增强了抗共模干扰的能力,因此最大数据传输率可达 10MB/秒 (传送距离为 15m)。 若传输速率降到 90KB/秒,则最大距离可达 1200m。 此标准只允许有一个发送器,但可有多个接收器 。
3,RS— 485标准
* RS-485的共线电路结构在一对平衡传输的两端都配置终端电阻
* 发送器,接收器,组合收发器可以挂在平衡传输线的任何位置,实现在数据传输中多个驱动器和接收器共用同一传输线的多点应用 。
* 在 100kb/秒的传输速率时,可传送 1.2km,最大传输速率为 10MB/秒 。
RS—485是一种平衡传输方式的串行接口标准 。
* RS—485允许有多个发送器和多个接收器。
三、串行接口芯片 8251A
Intel 8251A是一种通用的同步 /异步接收 /
发送器芯片 。 其功能为:
* 进行串一并,并一串转换
* 设置通讯的协议,包括字符格式及波特率
* 检测通讯错误,设置出错标志
1,8251A内部结构
8251A内部结构图读 /写控制逻辑发送器
( P?S)
发送
(控制)
调制解调控制接收器
( S?P)
接收
(控制)
RESET
CLK
C / D
RD
WR
CS
DTR
DSR
RTS
CTS
状态缓冲器发送数据 /命令缓冲器接收数据缓冲器外部数据总线
TXD
TXRDY
TXE
TXC
RXRDY
SYNDET
RXC
RXD
读 写控制逻辑发送器
( )
(控制)
调制解调控制接收器
( )
接收
(控制)
状态缓冲器发送数据 命令缓冲器接收数据缓冲器外部数据总线
* I/O缓冲器,暂存接收,发送数据,CPU发来的命令及 8251A的工作状态 。
*读 /写控制逻辑,接收 CPU控制总线的控制信号,
控制数据的传送方向 。
*接收器,从接收数据线引脚 RXD接收串行数据,
按指定方式把它变为并行数据 。
* 发送器,接收 CPU的并行数据,加上成帧信号,变换成串行数据,从发送数据端引脚 TXD发送出去 。
* 调制解调控制器,提供控制信号,实现与
Modem 的连接,8251A
的工作有异步方式和同步方式 。
8251A
D1
D0
VCC
RXC
DTR
RTS
DSR
RESET
CLK
TXD
TXEMPTY
CTS
SYNDET/BD
TXRDY
D2
D3
RXD
GND
D4
D5
D6
D7
TXD
WR
CS
C / D
RD
RXRDY
2,8251A的引脚
8251A
共有 28个引脚,采用双列直插式封装,如图所示 。
8251A的引脚图各引脚的功能如下:
D0~D7,8条数据线
Reset:芯片复位信号
TxD:数据发送端,输出串行数据并送往外部设备
TXRDY:发送器准备好信号
TXEmpty:发送器空闲信号
RD,WR:读,写控制信号
CS:片选信号
TXC:发送时钟信号,外部输入 。
RXD,数据接收端,接收由外设输入的串行数据 。
RXRDY:接收器准备好信号 。
SYNDET/BRKDET:双功能检测信号,
对于同步方式,SYNDET是同步检测信号对于异步方式,BRKDET为间断检出信号 。
RXC:接收时钟信号,输入 。
DTR:数据终端准备好信号,输出,表示接收方准备好接收数据,通知发送方 。
C/D:控制 /数据信号,C/D=1,传送的是命令,
控制,状态等控制字; C/D=0,传送的是数据 。
DSR:数据装置准备好信号,输入,它是对 DTR的回答信号,表示发送方准备好发送 。
RTS:发送方请求发送信号,输出 。
CTS:清除发送信号,输入,它是对 RTS的回答信号,表示接收方作好接收数据的准备 。
3,8251A的控制字
8251A有三种控制字,工作方式控制字,操作命令控制字,状态控制字 。
(1) 工作方式控制字
D7 D6 D5 D4 D3 D2 D1 D0
停止位 奇偶校验 字符长度 波特率系数
(同步 )
*0=内同步
*1=外同步
0*=双同步
1*=单同步
(异步 )
00=不用
01=1位
10=1.5位
11=2位
*0=无校验
01=奇校验
11=偶校验
00=5位
01=6位
10=7倍
11=8位
(异步 )
00=不用
01=?1
10=?16
11=?64
(同步 )
00=同步
-
-
-
(2) 操作命令控制字
RXESBRKERRTS TXENDTRIREH
允许发送 ―1‖ 允许
―0‖ 不允许数据终端就绪,―1‖ 使 DTR输出为低允许接收 ―1‖ 允许
―0‖ 不允许送 间隔字符 ―1‖ 使 TXD为低
―0‖ 正常工作出错标志复位,―1‖使 PE,OE,TE标志复位请求发送,―1‖ 使 RTS 输出变低内部复位,―1‖ 使芯片回到方式指令状态进入搜索态,―1‖ 使开始搜索同步字符
D7 D6 D5 D4 D3 D2 D1 D0
(3) 状态控制字
D7 D6 D5 D4 D3 D2 D1 D0
DSR
数据装置准备好
SYNDET
同步检出
FE
格式错
PE
溢出错奇偶错
OE TXE
发送器空
RXRDY
接收准备好
TXRDY
发送准备好
(4) 8251A的初始化在传送数据前要对 8251A进行初始化,
以确定发送方与接收方的通信格式以及通信的时序 。
由于三个控制字没有特征位,且工作方式控制字和操作命令控制字放入同一个端口,
因而要求 按一定顺序写入控制字 。
正确 写 控制字的顺序如图所示。
N
Y
复位输出通信方式异步输出第一个单同步输出第二个输出操作命令有复位?
串行传送输出操作命令字数据传送
Y
Y
N
N
N
8251A初始化流程例,8251A采用同步传送方式,有 2个同步字符,内同步,偶校验,有 7位数据位且同步字符为 16H,试编写初始化程序 。
假设 8251A数据口地址为 04A0H,控制口地址为 04A2H。
MOV DX,04A2H ;控制口地址
MOV AL,38H ;工作方式控制字
OUT DX,AL
MOV AL,16H ;同步字符
OUT DX,AL
OUT DX,AL ;输出两个 同 步字符
MOV AL,97H ;操作命令控制字
OUT DX,AL
……
(5) 串行接口 8251A编程实例例,用两片 8251A接口芯片实现两个 8086CPU
之间的串行通信 。
假定 1#8251A 地址为 04A0H,04A2H ;
2#8251A地址为 04A4H,04A6H。 1#CPU
发送 256个数据给 2#CPU,通信协议采用异步传送方式,8位数据无校验,2位停止位,波特率为 64。; 1#CPU发送程序
DATA SEGMENT
FA DB,,……
DATA ENDS
STACK SEGMENT PARA STACK’ STACK’
BUFF DB 50 DUPC (?)
STACK ENDS
CODE SEGMENT
ASSUME CS,Code,DS,DATA,SS,STACK
START,MOV AX,DATA ; 取数据段寄存器地址
MOV DS,AX
MOV AX,STACK ;取堆栈段寄存器地址
MOV SS,AX
MOV DX,04A2H
MOV BL,03H ;复位 8251A,输入 3个 0
ST1,MOV AL,00H
OUT DX,AL
NOP
DEC BL
JNZ ST1
MOV AL,40H ;发复位命令
OUT DX,AL
MOV AL,0CFH ;工作方式控制字
OUT DX,AL
MOV AL,31H ;操作命令字
OUT DX,AL
LEA SI,FA ;装入有效地址
MOV CX,00FFH ;传送 256个数据寄存器
MOV DX,04A2H
WAIT1,IN AL,DX ;读取状态字
AND AL,05H ;检测 TXEMPTY和 TXRDY位
JZ WAIT1 ;发送器空,等待
MOV DX,04A0H ;发送 256个数据
MOV AL,[SI]
OUT DX,AL
INC SI
DEC CX
JNZ WAIT1
CODE ENDS
END START; 2#CPU接收程序
DATA SEGMENT
SHOU DB 64H DUPC (?)
DATA ENDS
STACK SEGMENT PARA STACK’ STACK’
BUFF DB 50 DUPC (?)
STACK ENDS
CODE SEGMENT
ASSUME CS,CODE,DS,DATA,SS,STACK
START,MOV AX,DATA ; 取数据段寄存器地址
MOV DS,AX
MOV AX,STACK ;取堆栈段寄存器地址
MOV SS,AX
MOV DX,04A6H
MOV BL,03H
AA3,MOV AL,00H ;复位 8251A,先输入 3个 0
OUT DX,AL
NOP
DEC BL
JNZ AA3
MOV AL,40H ;发复位命令
OUT DX,AL
MOV AL,0CFH ;工作方式命令字
OUT DX,AL
MOV AL,16H ; ER,RXE,DTR
OUT DX,AL
LEA DI,SHOU ;接收数据缓冲首址
MOV CX,00FFH ;传送 256个数据
MOV DX,04A6H
WAIT2,IN AL,DX
MOVBL,AL
AND AL,02H ; RXRDY=1?
JZ WAIT2
MOV AL,BL
AND AL,38H
JNZ ERR ;转出错处理程序
MOV DX,04A4H
IN AL,DX
MOV [DI],AL
INC DI
DEC CX
JNZ WAIT2
CODE ENDS
END START