串行口原理及应用
外设:定时器,串口
串行传输方式
- 单工方式:只能沿一个方向进行传输
- 半双工方式:在特定时刻内只能沿一个方向
-
全双工方式:任何一方在同一时刻既能发送又能接收
-
异步传输: 传递以字符位单位:由起始位、停止位包装起来
- 同步传输:对数据块进行传输
波特率
串行通信的传送速率,每秒钟信号电平的变化次数
单位:BAUD
比特率:每秒传送二进制数据的位数,单位bit/s
串行口结构
SBUF 99H 发送/接受数据寄存器
99H,但是发送和接收时两个独立的缓冲器,全双工
MOV SBUF,A 开始引发串口的发送,发送完毕,SCON.TI=1
MOV A,SBUF 接收到一帧数据时,接收完毕,SCON.RI=1
SCON,98H
98H | 9FH | 9EH | 9DH | 9CH | 9BH | 9AH | 99H | 98H |
---|---|---|---|---|---|---|---|---|
SCON | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
SM0,SM1工作方式选择器
运行模式 | 功能 | 波特率 |
---|---|---|
0 | 8位寄存器 | $ f_{osc}/12$ |
1 | 10位异步 | \(\frac{2^{smod}}{32}\times\frac{f_{osc}}{12\times(256-X)}\) |
2 | 11位异步 | $ f_{osc}/64\cdot 2^{smod}$ |
3 | 11位异步 | \(\frac{2^{smod}}{32}\times\frac{f_{osc}}{12\times(256-X)}\) |
T1 控制M1,M3的波特率。
SM2
多机通信控制位
若SM2=1 ,当接收到第 9 数据位 RB8 为 1 ,则数据有效并使 RI=1 ,产生串行口接收中断。当接收到第 9 数据位RB8 为 0 ,则数据无效,不产生中断。
若SM2=0 ,则无论接收到的第 9 数据位 RB8 为 1 或为 0,数据均有效,并使 RI=1 ,产生串行口接收中断。
串行口工作方式为0 时, SM2 必须设置为 0
串行口工作方式为1 时,若 SM2=1 ,停止位必须为 1
REN
允许接收位,REN=1 允许接收;软件置位
TB8 发送第8位数据
方式2、3,TB8要发送的第9位数据
TB8=0,发送数据
TB8=1,发送地址
RB8 接收数据位8
方式1中停止位数据
TI
发送中断标志,硬件置位、软件清除
RI
接收中断标志
IE,A8H
A8 | AF | AE | AD | AC | AB | AA | A9 | A8 |
---|---|---|---|---|---|---|---|---|
IE中断允许控制寄存器 | EA中断允许总控制 | ES串行终端允许控制 | ET1定时器中断允许控制 | EX1外部中断允许控制 | ET0 | EX0 |
ES 串行口中断
PCON
87H | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
PCON | SMOD | WLE | GF1 | GF0 | PD掉电方式 | IDL |
SMOD = 1 波特率倍增
工作方式
模式0
8位数据
TXD P3.1 输出时钟
RXD P3.0 输入输出数据
发送: MOV SBUF,A;TI置位,CPU中断则从0023H开始执行中断。
接收:REN=1,RI清零,启动接收;REN=0,set RI=1。
模式1
RXD P3.0:接收数据
TXD P3.1:发送数据
1位起始位,1位停止位,8位数据
采样速率:16倍波特率
发送:MOV SBUF,A;TI置位
接收:REN=1,且RI=0,P3.1(RXD)由1变0;复位16分频计数器,使之边沿对齐;
停止:RI置位条件:RI=0,接收到停止位为1;满足则,RI=1,RB8=1;
模式2、3
1位起始位,1位停止位,9位数据,第9位由TB8决定
模式2: 波特率固定
模式3:由T1/T2溢出率决定
发送:MOV SBUF,A;TI置位
接收: REN=1,且RI=0,P3.1(RXD)由1变0
例程
Text Only | |
---|---|