首页 > 编程知识 正文

单片机波特率计算题目(51单片机波特率计算的公式和方法)

时间:2023-05-05 14:57:50 阅读:121807 作者:4686

不是原创,而是摘自51黑的51黑fan博主,留给日后自己看

51芯片的串行端口可以在几个不同的操作模式下操作。操作模式的设置是使用SCON寄存器。 其各位的具体定义如下。

SM0SM1SM2RENTB8RB8TIRI

SM0、SM1是串行端口的动作模式设定位,由此,2人能够对应地设定4个模式。 串行端口的动作模式的设定。

波特率在使用串行端口进行通信时,一个重要参数是波特率,只有在上下机器的波特率相同的情况下才能进行正常通信。 波特率是指串行端口每秒可以传输的波特率。 这里,波特率是指,标准的9600种不是能够每秒传输9600字节,而是能够每秒传输9600比特,而1字节是8比特,当添加开始位和停止位以串行模式1进行传输时,则各数据

51芯片串行端口工作模式0的波特率是固定的,fosc/12,用12M的晶振计算,其波特率可以达到1M。 模式2的波特率固定于fosc/64或fosc/32,具体而言,依赖于PCON寄存器的SMOD位,例如SMOD为0、波特率为focs/64、SMOD为1、波特率为focs/32

模式1和模式3的波特率是可变的,取决于计时器1或2(52码片)的溢出速率。 也就是说,每当计时器1溢出时,串行端口都会发送数据。 那么,这两种模式的波特率设置时如何计算相关寄存器的值? 可以用以下公式计算。

在上式中,将PCON寄存器的SMOD位设定为1,可以将波特率提高两倍。 通常,使用计时器1在计时器动作模式2下动作。 此时,将计时器值中的TL1作为计数,将TH1作为自动重装值。 在此计时器模式下,计时器溢出后,TH1的值将自动加载到TL1中,并再次开始计数。 这样,可以在不使用软件的情况下准确时机。 该计时器模式2下计时器1的溢出速度的计算式如下:

溢出率=(计数率(/)/(256-TH1初始值) ) )。

溢出率=fosc/[12*(256-th1初始值) ]

上式的"计数速率"与所使用的晶体振荡器的频率有关,当计时器在51个芯片上启动时,每1个机器周期计时器寄存器TH的值增加1,1个机器周期等于12个振荡周期,因此51个芯片的计数速率通常使用11.0592M晶体是为了得到没有标准误差的波特率,为什么呢? 一计算就知道了。 要获得9600的波特率,请查看晶体频率设置为11.0592M和12M、计时器1设置为模式2、SMOD设置为1以及每个所需的TH1值。 赋值表达式:

11.0592M米

9600=(232 ) ) ).0592m/12 )/)/(256-TH1 ) )

TH1=250

12M

9600=(232 ) ) ) 12m/12 )/)/(256-TH1 ) )

TH1249.49

上面的计算显示,使用12M晶体时计算的TH1不是整数,TH1的值只能是整数。 这样会有一定的误差,无法生成正确的9600波特率。 当然,一定的误差在使用中可以接受,即使使用11.0592M的晶体振荡器,晶体本身存在的误差也会导致波特率产生误差,但晶体本身的误差对波特率的影响小得可以忽略。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。