C51 单片机开发串口初始化分析

码农UP2U

共 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 文件结构初识与二进制手写可执行程序

浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报