本篇文章整理了串口的初始化的一些文档性的内容,如果看完和我一样比较晕,那么下篇文章配合代码看也行。
串口初始化相关的寄存器有两个,分别时 PCON 和 SCON。
SCON 被称作串行控制寄存器,它也是一个特殊功能寄存器。
PCON 是电源控制寄存器,也有称它为波特率选择特殊功能寄存器。
PCON 寄存器是电源控制寄存器,文档 P234 对它的描述如下:
在上图中,写到 SMOD 是波特率选择位,当设置 SMOD = 1 时,则使串行通信方式 1、2、3 的波特率加倍;SMOD = 0,则各工作方式的波特率加倍。这句话的后半句是错误的。应该是 SMOD = 0 时是不加倍的。
PCON 的 SMOD0 用来控制 SCON 的最高位或者最高位和次高位的作用。
SCON 寄存器是串行控制寄存器,用于选择串行通信的工作方式和某些控制功能,文档的 P233 描述如下:
PCON 的 SMOD0 寄存器为 1 时,SCON 的 SM0/FE 被用作帧错误检测。当 PCON 的 SMOD0 寄存器为 0 时,SM0/FE 和 SM1 用来指定串行通信的工作方式。
除了 TCON 和 SCON 两个寄存器外,初始化串口时需要指定定时器。因为波特率是表示速度的,单片机的速度是又晶振决定的,而晶振跟时钟周期、机器周期又是相关的,那么就离不开定时器了。看一下文档的 P232 ,如下图:
从上面的整理我们可以得知,初始化串口会用到 TCON、SCON 和 定时器相关的寄存器。本文是一个比较文档性的内容,下篇文章会基于这些文档性的内容写代码。不过代码要比文档内容少很多。
我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!