C51 单片机开发串口初始化分析
共 1174字,需浏览 3分钟
·
2024-07-03 07:30
公众号文章同步阅读网址:www.netor0x86.com
闲话:有些程序看似简单,而且人人都会写,甚至就十多行代码,但是想要写好,却很难。大家有遇到过这样的程序么?
本篇文章整理了串口的初始化的一些文档性的内容,如果看完和我一样比较晕,那么下篇文章配合代码看也行。
0x01:串口初始化相关寄存器
串口初始化相关的寄存器有两个,分别时 PCON 和 SCON。
SCON 被称作串行控制寄存器,它也是一个特殊功能寄存器。
PCON 是电源控制寄存器,也有称它为波特率选择特殊功能寄存器。
0x02:PCON 寄存器简介
PCON 寄存器是电源控制寄存器,文档 P234 对它的描述如下:
在上图中,写到 SMOD 是波特率选择位,当设置 SMOD = 1 时,则使串行通信方式 1、2、3 的波特率加倍;SMOD = 0,则各工作方式的波特率加倍。这句话的后半句是错误的。应该是 SMOD = 0 时是不加倍的。
PCON 的 SMOD0 用来控制 SCON 的最高位或者最高位和次高位的作用。
0x03:SCON 寄存器简介
SCON 寄存器是串行控制寄存器,用于选择串行通信的工作方式和某些控制功能,文档的 P233 描述如下:
PCON 的 SMOD0 寄存器为 1 时,SCON 的 SM0/FE 被用作帧错误检测。当 PCON 的 SMOD0 寄存器为 0 时,SM0/FE 和 SM1 用来指定串行通信的工作方式。
0x04:定时器
除了 TCON 和 SCON 两个寄存器外,初始化串口时需要指定定时器。因为波特率是表示速度的,单片机的速度是又晶振决定的,而晶振跟时钟周期、机器周期又是相关的,那么就离不开定时器了。看一下文档的 P232 ,如下图:
0x05:小结
从上面的整理我们可以得知,初始化串口会用到 TCON、SCON 和 定时器相关的寄存器。本文是一个比较文档性的内容,下篇文章会基于这些文档性的内容写代码。不过代码要比文档内容少很多。
我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!
我的网站:https://www.netor0x86.com
我录制的视频课程:
1. 入门级栈溢出分析
2. WEB端获取MAC地址真实项目案例
3. PHP扩展模块开发之DLL编写与调用
4. C语言零基础入门教程
5. PE 文件结构初识与二进制手写可执行程序