8051单片机串口波特率计算方式

  STC12C5A60S2单片机兼容80C51单片机,其串口波特率可以由定时器产生,也可以由独立波特率发生器产生。其波特率模式可以是固定的,也可以是可变的。

  固定波特率:当 模式0的通信速度设置 位UART_M0x6/AUXR.5 = 0时,其波特率 = SYSclk/12
        当 模式0的通信速度设置 位UART_M0x6/AUXR.5 = 1时,其波特率 = SYSclk/2

  可变波特率:使用串行通信模式2,即可自定义串口通信波特率,其计算公式为:波特率 = 2^SMODE /64×( SYSclk 系统工作时钟频率)

  当SMOD=1时,波特率=2/64( SYSclk) =1/32( SYSclk) ;
  当SMOD=0时,波特率=1/64( SYSclk)

  则波特率发生器装载值为 BRT = -(FOSC * 2^SMODE /64/BAUD)

原文地址:https://www.cnblogs.com/code-fisher/p/8467411.html

时间: 2024-10-12 04:40:00

8051单片机串口波特率计算方式的相关文章

8051单片机串口波特率和定时器1的初值计算

在模式0和模式2下,串口波特率固定,模式0为Fosc/12.模式2为Fosc/32或Fosc/64,具体由PCON寄存器的SMOD位决定. 在模式1和模式3下,波特率是一个可变值,波特率可以由定时器1产生(8052可以由定时2产生),那么波特率到底为多少呢?波特率由定时器1的溢出率来决定:Baud Rate = (2SMOD/32)*(Timer 1 Overflow Rate)注意:2SMOD这里的SMOD是指数,SMOD为波特率双倍波特率位,该位在PCON寄存器中.当使用timer 1作为波

单片机第11课:串口通信查询方式---从计算机接受数据

如何用计算机给单片机发送数据,单片机如何接收数据呢? JP3与P0口相连接.从计算机给单片机发送一个十六进制数据,然后看数码管的显示. #include<reg51.h> /* *给单片机发送一个十六进制的数据,用来显示数码管 */ void initSer(); void main() {<span> </span>initSer(); while(1) { //查询RI的值,如果是1,那么接收到了数据,此时应该软件清零,RI = 0 if(RI == 1) { RI

串口之波特率计算

1.1 波特率结构框图 1.2 波特率寄存器示意图 1.3 波特率计算公式示意图 两图看出,串口波特率寄存器是一个32位,只用低16位,低16位又划分,低4位用来装小数,其他用来装整数. 波特率计算公式:Tx/Rx 波特率  = fCK/(8*(2- OVER8 )* USARTDIV) USARTDIV =  fCK/8*(2- OVER8 )/TxRx 波特率 Tx/Rx 波特率已知值    //就是我们我们平常说设置的115200Hz. fCK是已知值     //串口时钟84MHz OV

51单片机串口通信

一.原理简介 51 单片机内部有一个全双工串行接口.什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行:既可接收又可发送,但不能同时进行的称为半双工:能同时接收和发送的串行口称为全双工串行口.串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信.其缺点是传输速度较低. 与之前一样,首先我们来了解单片机串口相关的寄存器. SBUF 寄存器:它是两个在物理上独立的接收.发送缓冲器,可同时发送.接收数据,可通过指令对SBUF 的读写

深入理解51单片机串口通信

串口通信的基本认识 通信分为并行通信和串行通信,并行通信时的数据各个位同时传送,可以实现字节为单位通信,但通信线多占用资源,成本高.以前用到的的P1=0x55,一次给P1口的8个管脚分别赋值,同时进行信号输出,类似于8个车道可以过去8辆车,这样的形式是并行的,一般称P0,P1,P2,P3为51单片机的4组并行总线. 串行通信,就是一个车道,一个只能通过一辆车,如果一个0x55这样一个字节的数据要传输过去的话,假如低位在前,高位在后的话,那发送方式是:0-1-0-1-0-1-0-1,一位一位的进行

STM32的串口采用DMA方式接收数据测试(转)

STM32的串口采用DMA方式接收数据测试 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.   参考链接:http://www.amobbs.com/forum.PHP?mod=viewthread&tid=5511863&highlight=dma%E6%8E%A5%E6%94%B6   环境: 主机:WINXP 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 串口可以配置成用DMA的方式接收数据,不过DMA需要定长才

STC15 串口(工作方式1)使用小结

这里暂且不说其他工作方式,以后有时间补上.仅总结下STC15串口工作方式1的一些注意点. 串口1: setp1 波特率发生器: T2定时器(默认).T1定时器: 设置位:S1ST2(AUXR.0),1--T2,0--T1,此位复位值为1. 12T模式(默认):通过T2x12(AUXR.2),T1x12(AUXR.6)位确定,0--12T模式,1--1T模式:这两位复位值位0. (这里可能有点模糊, 解释一下:所谓1T模式就是T1X12位置1,相当于T1速度提高12倍,原来计数加1需要12T,现在

DS3231高精度时钟模块,IIC,C51 8051单片机I2C 测试程序 【开源】

实物图 原理图 效果图 程序烧录: /*****************************************************************************  *文件名称:main.c *版    本:Keil uVision4 *控 制 器:STC89C52RC/12M 功能:显示时间到串口 *说    明: 1,DS3231实时时钟模块测试程序  2,1T的单片机用不了 3,晶振12M 4,串口波特率2400 编译结果: Rebuild target 'D

STM32下波特率计算详解

波特率的计算 STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1.在STM32中,有个波特率寄存器USART_BRR,如下: STM32串口波特率通过USART_BRR进行设置,STM32的波特率寄存器支持分数设置,以提高精确度.USART_BRR的前4位用于表示小数,后12位用于表示整数.但是它还不是我们想要设置的波特率,想要设置我们串口的波特率大小还需要进行计算.其实有关波特率的计算是下面这一条表达式: 从上面的表达式,我们