51单片机的串行接口介绍

51单片机的串行接口介绍

  • 串行口结构
  • 设置工作方式(串行口控制寄存器SCON)
  • 设置波特率

 51单片机内部集成1~2个可编程通用异步串行通信接口(即UART),采用全双工制式。该通信接口有四种工作方式,并且
 能设置各种波特率

串行口结构

51单片机的串行接口介绍_第1张图片
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 =2SMODT1/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=256Fosc2SMOD/(1232)
公式中256哪里来:上面说到方式一的10位UART 是:1位起始位,8位数据位(二进制),1位停止位,所以计数最大值为
M = 2 8 = 256 M = 2^8 = 256 M=28=256

你可能感兴趣的:(51单片机)