51单片机的串口波特率问题

作者&投稿:歧洁 (若有异议请与网页底部的电邮联系)
51单片机串口问题,波特率设置问题~

计算时溢出了, 计算时先整合公式,简化一下, 用一个long变量存储, 计算原则是先乘后除
看你后面所问的, 问题是出在优先级上了,
单目运行符的优先级最高,比如+、-、!、~、*(指针)……,
如果要让最终计算结果取反,就应该全部计算完成后再取反,也相当于用0减去那个数,跟用256减是一样的
TH1是8位寄存器
单片机C语言中计算时尤其要注意数据溢出和运算优先级的问题
最好的方法就是加括号,万能的

单片机的串口通信,不论是发送数据还是接收数据,对用时没有什么要求,更没有什么波特率倒数的说法,都是什么人在瞎编?收/发每一个字节的时间,在波特率确定的情况下,用时也是确定的,也不可改变,就无所谓什么必须。至于每一个字节之间,是否连续,还是间断,也没有什么固定要求,尽可能连续就行了。

51串口有几种工作方式,每种波特率都不尽相同,最常用的是方式一,其波特率由定时器T1的溢出率决定,T1溢出率=Fosc/{12*【256-TH1】}

baudrate=(2^SMOD/32)*T1溢出率

一般默认SMOD=0;无需设置,需要波特率翻倍时SMOD=1

Fosc=22.1184M,你可以计算一下最高波特率,整数的....

何以到到11.0592。你看下公式。定时器1的溢出率

目前的电脑主板上的COM口的最大波特率可设置为115200.
你的晶振22.1184M,理论上应该是230400,(=22118400/96),目前无法验证.

什么是波特率?在51单片机中如何使用?
答:定时器选用timer1的自动重装模式 即1/9600=定时时间 就是1/9600=(12*32/11059200)*(256-定时初值)。那么 定时初值=256-(11059200/(12*32*9600));这里的32是51单片机的硬件典型结构,串口通信使用的频率是晶振频率的1/32或者1/16,但是这种模式下,限制了波特率的提高,因此,现在一些改进的51...

C8051F310单片机进行串口通信,我在波特率9600下正常,但是在115200下传输...
答:1、物理层的电平转换方面出了问题。所以第一步可以用示波器来查查。2、如果是单片机和单片机通信,相同配置,则可能串口服务程序全双工处理不当造成。3、如果是单片机和PC通信,串口中断服务程序全双工处理不当造成。还有可能115200配置不正确或速率差较大,可考虑用1+8+1+1,多一个停止位或者增加空闲位...

51单片机 设置串口波特率115200初值怎么弄 呢 单片机是11.0592的...
答:void UartInit(void) //115200bps@11.0592MHz { PCON &= 0x7f; //波特率不倍速 SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x40; //定时器1时钟为Fosc,即1T AUXR &= 0xfe; //串口1选择定时器1为波特率发生器 TMOD &= 0x0f; //清除定时器1模式位 TMOD |= 0x20; ...

51单片机串行口工作在方式0,如何求波特率,及定时器初值!
答:方式0的波特率是系统时钟的十二分之一,为固定波特率,与定时器无关 定时器计算: 溢出中断的定时器 指令周期是 系统时钟的十二分之一 ,16方式 fosc=11.0592M fcyc=11059200/12 , 定时时间 tmer ms TH=(65535-timer*1000/fcyc)/256 TL=(65535-timer*1000/fcyc)%256 ...

51单片机编程问题(串口很难将数据发送至上位机)
答:首先,串口波特率2400,作为串口波特率来源的定时器1计数方式2初值应为0XF4;而你的初装值 为0Xfd,且PCON中最高位又设置为1,那么波特率实为19200,其次,PCON=0X80为波特率倍增设置,故而19200又倍增为38400。这已远远超出了51单片机的频 率范围,第三,虽然设置了串口方式1(T1控波),但未设置...

51单片机 串口通信 发送数据不稳定
答:我估计是你的波特率有问题,12MHz和11.0592MHz的晶振看起来没多少差别,实际上使用11.0592MHz的晶振是因为,以它为基准能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。

51单片机串口问题,波特率设置问题
答:看你后面所问的, 问题是出在优先级上了,单目运行符的优先级最高,比如+、-、!、~、*(指针)……,如果要让最终计算结果取反,就应该全部计算完成后再取反,也相当于用0减去那个数,跟用256减是一样的 TH1是8位寄存器 单片机C语言中计算时尤其要注意数据溢出和运算优先级的问题 最好的方法就...

51单片机定时计数器溢出率计算和串口的波特率之间的关系
答:串口工作在方式1和3,则波特率由定时器T1的溢出率来决定,关系如下:波特率 = ((2^SMOD)/32)*T1溢出率,这里T1溢出率 = fosc/[12×(28-X)],则:波特率=((2^SMOD)/32)×fosc/[12×(28-X)]2^SMOD是2的SMOD次方,SMOD是波特率是否要加倍的控制位,默认是0,fosc就是晶振的值,X就...

有关单片机的一道题目
答:MCS-51单片机PCON是电源控制寄存器,其第7位为SMOD为波特率增倍,默认SMOD=0,你题目没有写清楚串行口的工作方式,我给你介绍一下,有以下几种:方式0:波特率固定不变,其值为f/12,这里就是12MHZ/12,即100000 方式2:波特率有两种固定值 因为SMOD给的为0,就不说SMOD为1的情况了,SMOD=0时...

单片机波特率与其它设备波特率不一致,导致传输数据不对
答:一般来说51的UART串口19200就足够快了,因为51的串口本来就是异步的,波特率高了就很容易出错,一般工业上9600是最常用的,在高就很有可能出这样或者那样的问题了。不需要这么高的速率,就别用这么高的波特率,如果确实数据量很大,就试试SPI或者CAN等数据总线吧,同步的总归比异步的稳定。