单片机 的 串口基础

在51单片机中有一个串口其结构图如下所示:

上图为该单片机的结构图。

单片机的工作方式由SCON进行控制:

SM0SM1这两位总共有4中组合:

SM0SM1 = 00,此时单片机工作在方式00,即同步移位寄存器方式。传送的一帧为8位,无起始位和停止位。波特率 = fosc/12

(波特率百度百科上的解释:单片机或计算机在串口通信时的速率。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。又比如每秒钟传送240个二进制位,这时的波特率为240Bd,比特率也是240bps。(但是一般调制速率大于波特率,比如曼彻斯特编码)。波特率,可以通俗的理解为一个设备在一秒钟内发送(或接收)了多少码元的数据。它是对符号传输速率的一种度量,1波特即指每秒传输1个码元符号(通过不同的调制方式,可以在一个码元符号上负载多个bit位信息),1比特每秒是指每秒传输1比特(bit)。 单位“波特”本身就已经是代表每秒的调制数,以“波特每秒”(Baud per second)为单位是一种常见的错误。)。同步通信的使用次数较少,所以就介绍一下。

SM0SM1 = 01,此时单片机工作在方式01,即8位数据异步通讯方式。

一帧10位:8位数据位,1个起始位(0),1个停止位(1),波特率是变化的。写入SBUF,同时启动发送,一帧发送结束,TI = 1。接收:REN = 1,允许接收。接收完一帧,若RI = 0 且停止位为1(或SM2 = 0),将接收数据装入SBUF,停止位装入RB8,并使RI = 1;否则丢弃接收数据,不置位RI。

SM0SM1 = 10或11它们工作传送的位数为9位数据异步通讯方式。

1)一帧为11位:9位数据位,一个起始 位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。
波特率:方式2: B =(2^SMOD/64)fosc    方式3: B = (2^SMOD/32)T1溢出率

波特率的计算总结:

SM2用于多机通讯。

TB8TB8:多机方式发送的第9位

多机方式的地址/数据帧标志。也可作为奇偶校验位。

TB8:多机方式接收的第9位

多机方式的地址/数据帧标志。也可作为奇偶校验位。

TI:发送中断标志位,要由软件清0。

RI:接收中断标志位,要由软件清0。

上图中的SMOD用于控制波特率的是否翻倍的。当SMOD = 0时,标识波特率不翻倍,当SMOD = 1时,表示波特率翻倍。

原文地址:https://www.cnblogs.com/gxcstyle/p/6884049.html