51单片机的串行接口介绍
- 串行口结构
- 设置工作方式(串行口控制寄存器SCON)
- 设置波特率
51单片机内部集成1~2个可编程通用异步串行通信接口(即UART),采用全双工制式。该通信接口有四种工作方式,并且
能设置各种波特率
串行口结构
1、串行口数据缓存器SBUF用于存放发送/接收的数据,它在物理上是同一个寄存器,逻辑上是两个
2、串行口寄存器SCON用于控制串行口的工作方式
3、波特率发生器由定时器T1构成
4、波特率于单片机的晶振频率、定时器T1初值、串行口的工作方式以及波特率选择位SMOD有关
设置工作方式(串行口控制寄存器SCON)
可位寻址
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|
SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
SM0 | SM1 | 工作方式 | 功能 | 波特率 |
---|
0 | 0 | 方式0 | 8位同步移位寄存器 | Fosc/12 |
0 | 1 | 方式1 | 10位UART | 可变 |
1 | 0 | 方式2 | 11位UART | Fosc/64 或 Fosc/32 |
1 | 1 | 方式3 | 11位UART | 可变 |
控制位 | 功能 | 说明 |
---|
SM2 | 多机通信控制位 | (空) |
REN | 允许串行接收位 | REN=1时,允许接收;REN=0时,禁止接收 |
TB8 | 发送数据第九位 | (空) |
RB8 | 接收数据第九位 | (空) |
TI | 发送中断标志位 | 发送完一帧数据的标志,由硬件置位,软件清零 |
RI | 接收中断标志位 | 接收完一帧数据的标志,由硬件置位,软件清零 |
进行单机通信了解上面的就够使用了,(空)的以后再补充
设置波特率
本人只用过工作方式1,所以这里只介绍工作方式1
波
特
率
=
2
S
M
O
D
∗
(
T
1
溢
出
率
)
/
32
波特率 = 2^{SMOD}*(T1溢出率)/ 32
波特率=2SMOD∗(T1溢出率)/32
T
1
溢
出
率
=
F
o
s
c
/
(
12
∗
(
256
−
初
值
)
)
T1溢出率 = Fosc/(12*(256-初值))
T1溢出率=Fosc/(12∗(256−初值))
T
1
初
值
=
256
−
F
o
s
c
∗
2
S
M
O
D
/
(
12
∗
波
特
率
∗
32
)
T1初值 = 256 - Fosc*2^{SMOD}/(12*波特率*32)
T1初值=256−Fosc∗2SMOD/(12∗波特率∗32)
公式中256哪里来:上面说到方式一的10位UART 是:1位起始位,8位数据位(二进制),1位停止位,所以计数最大值为
M
=
2
8
=
256
M = 2^8 = 256
M=28=256
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)