大家看这个波特率怎么算,帮忙!

loverss 2003-07-27 08:43:51
我现在要用PC机跟单片机通过串口通信,单片机用的是AT89C2051,它只用了XTAL1从外部接了一个8M的时钟输入,XTAL2没接。 我将AT89C2051的串口设置为工作方式3,定时/计数器1用的是工作方式2,TH1和TL1的值为0eeH,但按公式算出来波特率不对,总是和PC机不能通信,请教各位高手,是否单端输入的晶振,工作频率的计算不同于双端输入的?应该怎么算?
...全文
170 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanfang 2003-07-30
  • 打赏
  • 举报
回复
用示波器看看你发出来的数据的波特率究竟是多少先
loverss 2003-07-27
  • 打赏
  • 举报
回复
这个公式我知道,我按这样算的波特率不对,我想知道是否单端输入的晶振,工作频率的计算不同于双端输入的?
ckc 2003-07-27
  • 打赏
  • 举报
回复
单端双端应该没什么区别。
不过你可以计算一下,一般误差超过7%通讯就有问题了
可以象楼上建议的那样,用11.059M的晶振
ckc 2003-07-27
  • 打赏
  • 举报
回复
工作方式3的波特率在T1是自动重装入方式下
=2的smod次方*振荡频率/32*12*(256-th1)
zys0001 2003-07-27
  • 打赏
  • 举报
回复
8M的频率很难产生所需的波特率,建议使用11.0592M。这个频率做出来专门用来串口传输的。
savage2k 2003-07-27
  • 打赏
  • 举报
回复
2051为什么要用8M的时钟,这个频率很难产生所需的波特率,一般用11.0592M的比较好,可以产生各种波特率,12M的也可以,但是好像只能是4800
loverss 2003-07-27
  • 打赏
  • 举报
回复
ramonlei,你是说TH1在仿真板用0xe7,用单片机是0xec,那这样算出来的波特率相差很大啊!
ramonlei 2003-07-27
  • 打赏
  • 举报
回复
算出来的对于不同的小小误差,我用仿真板用0xe7,用单片机是0xec,你可以在附进值试试

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧