串行接口(8251A)
8.串行接口(8251A)
基本概念
-
串行数据传送方式
- 单工通信方式
- 半双工通信方式
- 全双工通信方式:两根独立的传输线
-
穿行传送的两种基本工作方式
-
异步通信方式
- 以字符为单位,字符间无固定的时间间隔,字符中的各位以固定时间传送
- 需要起始位和停止位,起始位至停止位称为一帧
- 空闲位以1填充
-
同步通信方式
- 统一时钟控制发送方和接收方,若干字符组成一个信息组
- 同步传输要求连续,不允许有间隔。无字符时,发送空闲和同步字符
- 每组信息:1-2个同步字符+8位字符数据
-
串行传送速率
- 波特率:每秒传输数据的位数(位/秒)
- 例:一个异步串行发送器,发送具有8位数据位的字符,在系统中使用一个奇偶校验位和两个停止位。若每秒发送100个字符,则其波特率为多少
- 100*(1+8+1+2)=1200bps
-
发送时钟和接收时钟
- 每位持续的时间**固定b
- 发送方以发送时钟作为数据位的划分界限
- 接收方以接收时钟作为数据位的检测
- 波特率因子:每位占用的时钟周期数
-
可编程串行接口8251A
-
基本性能
- 同步方式:0~64000Bit/s;异步方式:19200Bit/s
- 字符可被定义为5、6、7或8位,同步方式下可由内部自动检测同步字符或由外部给出同步信号
- 出错检测
- 奇偶错误
- 帧错误
- 溢出(丢失)错误
-
编程
-
方式字
-
同步方式(D1D0=00)
- D7:0,2个同步字符;1,1个字符
- D6:0,内同步;1,外同步
- D5:0,奇校验;1,偶校验
- D4:0,无校验;1,有校验
- D3D2:数据位数,5~8位
-
异步方式
- D7D6:01,1个停止位;10,1.5个;11,2个
- D5:0,奇校验;1,偶校验
- D4:0,无校验;1,有校验
- D3D2:数据位数,5~8位
- D1D0:波特率因子,01~11:1、16、64
-
-
命令字
- D7:1,搜索同步字符
- D6:1,8251A内部复位
- D5:1,请求发送,/RTS输出0
- D4:1,清除错误标志,如PE、OE、FE
- D3:1,中止,TxD输出0
- D2:1,接收允许;0,屏蔽
- D1:1,数据终端就绪,/DTR输出0
- D0:1,发送允许;0,屏蔽
-
状态字
- D7:1,数据设备就绪
- D6:1,S/BDET
- D5:1,FE
- D4:1,OE
- D3:1,PE
- D2:1,发送器TxEMPTY=1
- D1:1,接收器就绪
- D0:1,发送器就绪
-
初始化程序
1
2
3
4
5
6
7
8
9
10XOR AX,AX
MOV CX,0003H
MOV DX,PORTC
NEXT:OUT DX,AL
LOOP:NEXT
MOV AL,40H
MOV DX,AL
OUT DX,AL
-
例题
-
8251A工作在异步方式下的初始化编程。要求字符用7位二进制表示,采用奇校验,1.5个停止位,波特率系数为16。清除出错标志,让各出错标志处于初始状态,使请求发送有效电平,命令控制字使数据终端就绪(DTR)处于有效电平,发送允许和接收允许均为有效电平。设端口地址为208H和20AH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15XOR AX,AX
MOV CX,0003H
MOV DX,20AH
NEXT:OUT DX,AL
LOOP: NEXT
MOV AL,40H
OUT DX,AL
MOV AL,10011010B
OUT DX,AL
MOV AL,37H
OUT DX,AL -
8251A工作在同步方式下的初始化编程。要求采用内同步方式,同步字符为两个相同的16H值,字符长度为8位二进制,采用偶校验,要求对同步字符进行检索,复位3个出错标志,允许发送和接收,命令控制字使数据终端就绪(DTR)处于有效电平。
1
2
3
4
5
6
7
8
9MOV AL,00111100B //方式字
OUT DX,AL
MOV AL,16H //写入同步字符
OUT DX,AL
OUT DX,AL
MOV AL,10010111B
OUT DX,AL3.设8251A数据口和控制口地址分别为1F0H和1F2H,异步方式,7位数据,1位停止位,偶校验,波特率系数16,
方式字:7AH
发送与接收程序如下:-
方式字:01111010B->7AH
-
命令字:00010001B->11H //清除错,发送
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21MOV AL,40H
MOV DX,1F2H
OUT DX,AL
MOV AL,7AH
OUT DX,AL
MOV AL,11H
OUT DX,AL
LEA DI,BUFF-T
MOV CX,COUNT-T
NEXT-T: MOV DX,1F2H
IN AL,DX
TEST AL,02H
JZ NEXT-T
MOV DX,1F0H
MOV AL,[DI]
OUT DX,AL
INC DI
LOOP NEXT-T
-
-
方式字:01111010B->7AH
-
命令字:00010001B->11H //清除错,发送
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23MOV AL,40H
MOV DX,1F2H
OUT DX,AL
MOV AL,7AH
OUT DX,AL
MOV AL,11H
OUT DX,AL
LEA DI,BUFF-G
MOV CX,COUNT-G
NEXT-G: MOV DX,1F2H
IN AL,DX
TEST AL,02H
JZ NEXT-G
TEST AL 38H
JNZ NEXT-G
MOV AL,[DI]
MOV DX,1F0H
IN AL,DX
INC DI
LOOP NEXT-G
-
-
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 喵喵虎冲呀!
评论