您的位置 首页 IOT

51单片机中关于波特率的介绍

在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特

在串行通讯中,收发两边的数据传送率(波特率)要有必定的约好。在8051串行口的四种作业方法中,方法0和2的波特率是固定的,而方法1和3的波特率是可变的,由定时器T1的溢出率操控。

方法0
方法0的波特率固定为主振频率的1/12。

方法2
方法2的波特率由PCON中的挑选位SMOD来决议,可由下式表明:

波特率=2的SMOD次方除以64再乘一个fosc,也便是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc

方法1和方法3
定时器T1作为波特率发生器,其公式如下:
波特率=定时器T1溢出率

T1溢出率= T1计数率/发生溢出所需的周期数

式中T1计数率取决于它作业在定时器状况仍是计数器状况。当作业于定时器状况时,T1计数率为fosc/12;当作业于计数器状况时,T1计数率为外部输入频率,此频率应小于fosc/24。发生溢出所需周期与定时器T1的作业方法、T1的预置值有关。

定时器T1作业于方法0:溢出所需周期数=8192-x
定时器T1作业于方法1:溢出所需周期数=65536-x

定时器T1作业于方法2:溢出所需周期数=256-x

因为方法2为主动重装入初值的8位定时器/计数器形式,所以用它来做波特率发生器最恰当。

当时钟频率选用11.0592MHZ时,取易取得规范的波特率,所以许多单片机体系选用这个看起来“怪”的晶振便是这个道理。

下表列出了定时器T1作业于方法2常用波特率及初值。

常用波特率 Fosc(MHZ) SMOD TH1初值
19200 11.05921 FDH
960011.0592 0 FDH
4800 11.0592 0 FAH
2400 11.0592 0 F4H
1200 11.0592 0 E8H

例如9600 11.0592 0 FDH
波特率=定时器T1溢出率

T1溢出率= T1计数率/发生溢出所需的周期数

发生溢出所需的周期数=256-FD(253)=3
SMOD=0 11059200/12*3 *1/32=9600

波特率核算

在串行通讯中,收发两边对发送或接纳的数据速率要有必定的约好,咱们经过软件对MCS—51串行口编程可约好四种作业方法。其间,方法0和方法2的波特率是固定的,而方法1和方法3的波特率是可变的,由定时器T1的溢出率决议。
串行口的四种作业方法对应着三种波特率。因为输人的移位时钟的来历不同,所以,各种方法的波特率核算公式也不同。


一、方法0的波特率
方法0时,移位时钟脉冲由56(即第6个状况周期,第12个节拍)给出,即每个机器周期发生一个移位时钟,发送或接纳一位数据。所以,波特率为振动频率的十二分之一,并不受 PCON寄存器中SMOD的影响,即:
方法0的波特率=fosc/12

三、方法l和方法3的波特率
方法1和方法3的移位时钟脉冲由定时器T1的溢出率决议,故波特宰由定时器T1的
溢出率与SMOD值一起决议,即:
方法1和方法3的波特率=2SMOD/32·T1溢出率
其间,溢出率取决于计数速率和定时器的预置值。计数速率与TMOD寄存器中C/T的状况有关。当C/T=0时,计数速率=fosc/2;当C/T=1时,计数速率取决于外部输入时钟频率。
当定时器Tl作波特率发生器使用时,一般选用可主动装入初值形式(作业方法2),在
作业方法2中,TLl作为计数用,而主动装入的初值放在THl中,设计数初值为x,则每过“256一x”个机器周期,定时器T1就会发生一次溢出。为了防止因溢出而引起中止,此刻应制止T1中止。这时,溢出周期为:

体系晶振频率选为11.0592MHZ便是为了使初值为整数,然后发生准确的波特率。
假如串行通讯选用很低的波特率,可将定时器Tl置于作业方法0或作业方法1,但在
这种情况下,T1溢出时,需用中止服务程序重装初值。中止呼应时刻和履行指令时刻会使波特率发生必定的差错,可用改动初值的方法加以调整。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/261492.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部