单片机uart通讯中的UART通讯的波特率设置问题

单片机在UART通讯时,如果方式设为零,在书上可以查到是单片机的晶振频率/12,单片机一般是12个晶振周期为一个时钟周期,照这样推算,就应该是一个周期内发送或者接受一个数... 单片机在UART通讯时,如果方式设为零,在书上可以查到是单片机的晶振频率/12,单片机一般是12个晶振周期为一个时钟周期,照这样推算,就应该是一个周期内发送或者接受一个数据位,12mhz的晶振每秒12*10^6个周期,也就是说,每秒可以发送10^6个数据位,这时候的波特率是1mbit/s,那么在数据传输时波特率岂不是要设为1000,但是常用的为什么没有1000? 展开
 我来答
做而论道
高能答主

2014-05-04 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
方式零,不属于 UART,是 SPI 。
-----------
楼主弄混了概念。

51 单片机在串口方式0时,称为《同步传送方式》,并不是 UART (异步)方式。
两者并不兼容。

在同步传送方式,以 P3.0 输入、输出数据,以 P3.1 输出同步脉冲。
注意,数据的输入、输出,都是从 P3.0 走的。

在同步传送方式,数据的传输速度是 1M bit/s。比 UART,要快得很多。
而且,在同步传送方式,没有起始位、校验位和结束位,每一位,都是数据。

因此,在《同步传送方式》,并没有常说的 9600、4800...,等波特率。
同样,在 UART 中,也就没有 1M bit/s 这样的说法。

--每秒可以发送10^6个数据位,这时候的波特率是1mbit/s,
--那么在数据传输时波特率岂不是要设为1000,但是常用的为什么没有1000?

把它们混在一起讨论,是楼主的基本概念不清的表现。
楼主所选的答案,也没有搞清串口方式0的特点,只是用 UART 的理论来解释《同步传送》。
葫芦搅茄子而已,呵呵
牛XX的小99
2014-05-04 · TA获得超过6375个赞
知道小有建树答主
回答量:3661
采纳率:37%
帮助的人:1143万
展开全部
一般设置为2400的整数倍速,如2400, 4800,9600 19200。。。115200. 当然你设置为1000也可以的。
//*******************************************************************
//函数名称:void SetBps(u16 uiBps)
//函数功能:设置串口接收数据的BPS
//入口参数:uiBps:接收数据的波特率
//*******************************************************************
void SetBps(u32 ulBps)
{
u16 uiDat;
uiDat = 65536 - CRYSTAL/ulBps/32;
TH2 = uiDat/256;
RCAP2H = uiDat/256;
TL2 = uiDat%256;
RCAP2L = uiDat%256;
TR2 = 1;
REN = 1;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伊川侠
2014-05-04
知道答主
回答量:18
采纳率:0%
帮助的人:7.2万
展开全部
建议你看看波特率与晶振的计算与关系,http://blog.csdn.net/zzwdkxx/article/details/8873061
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式