51单片机-波特率的计算&定时器初始值的计算


前言

本文承接上篇,留下的悬念,我们来对串口通信中的波特率进行详细讲解
上篇链接: 串口通信

比如我要配置相应的串口波特率,那么定时器的初值该如何计算。知道了定时器的初始值,该如何通过定时器的初始值来计算波特率

这里注意,其实波特率的计算完全可以通过stc-isp软件直接生成,如下图所示,选择波特率为4800,因为我们是通过定时器1的模式二来产生波特率的,在波特率发生器这一部分选择模式二八位重装模块。选择波特率倍速,即SMOD=1。定时器时钟为12T。这样就生成了串口波特率的初始状态。
这里解释一下配置的各个寄存器

  • PCON | =0x80,SMOD最高位为1,波特率加倍。
  • SCON=0x50,配置串口模式1,对应的SM0 SM1位位 0 1,也即是SCON寄存器的高四位,被置成了 0 1 0 1,软件把REN位默认置1了,可以允许接收数据。
  • 定时器的相关配置位,定时器1,模式二,八位自动重装模式,不开启定时器1的中断,启动定时功能。

在这里插入图片描述
但是光知道了怎么使用软件自动生成,而不知道其底层的原理,那也不行,所以下文会详细介绍该如何计算波特率以及定时器的初值。


一、根据要配置的波特率来计算定时器T1的初始值

通常情况下,我们在进行串口通信的时候,要保持双机通信时的波特率相同,不然就会出现收发数据不对的情况。下面就直接上图,告诉该如何配置定时器T1的初始值。

首先要明确四点,以此来举例

    1. 假定开发板的晶振为12MHZ。
    1. 定时器T1选择模式二,八位自动重装模式。
    1. 串口选择方式1,10位异步收发模式,且波特率加倍。
    1. 配置的波特率为4800
      好了,来吧!直接上图,简洁易懂

在这里插入图片描述
串口计算波特率的公式
根据下图来直接计算
明确两点:

  • 1. 串口模式的选择
  • 2. 波特率是否加倍,即SMOD是为0 OR 1

在这里插入图片描述

二、根据定时器的初始值来计算波特率

经过了上面的阅读,相信你对串口通信的波特率有了一个深刻的印象。
那么我们根据定时器的初始值该如何计算波特率呢?
串口结构图
在这里插入图片描述
来吧,直接上图
在这里插入图片描述


总结

以上就是对串口波特率的计算和定时器初始值的计算总结。

掌握串口波特率的计算,将会使你对串口通信的理解更深一步

加油加油!

希望本文对你有帮助。

最后行文仓促,还请谅解,欢迎指错。

猜你喜欢

转载自blog.csdn.net/cyaya6/article/details/127490178
今日推荐