打印

串口调试助手波特率问题

[复制链接]
5027|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
51yao|  楼主 | 2009-1-16 14:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么我的调试助手的波特率非得调成19200,单片机才能正确的将接收的字节发出去?不过这种正确的现象仅当我是发一个字节,如果我发的是两个字节或者以上就会出错。如图。程序中我的波特率明明是设置为9600的,好奇怪。我另外试了单片机直接发数据,在调试助手上看是正确的。
两个问题:1。波特率不一样却能收数据?
          2.发送的数据一旦大于一个字节,单片机发回的数据显示就会出错?
(晶振7.3728MHZ)
#include<reg51.h>
void main()
{
   unsigned char a;
   TMOD=0x20;
   TL1=256-24;
   TH1=0xff;
   SCON=0x70;
   PCON=0x00;
   TR1=1;
   while(1)
   {
       while(RI==0);
       RI=0;
       a=SBUF;
       SBUF=a;
       while(TI==0);
       TI=0;
   }
}

相关帖子

沙发
51yao|  楼主 | 2009-1-16 17:15 | 只看该作者

自己顶一下!!!等待

使用特权

评论回复
板凳
grady1125| | 2009-1-16 17:27 | 只看该作者

使用特权

评论回复
地板
twz8858877| | 2009-1-16 17:45 | 只看该作者

定时器设错了

自动重装载方式,溢出速率由TH1决定,0XFF差不多是19200波特率,传输出错应该是在你的晶体下波特率跟19200有偏差。
grady1125说得不对,51的串口是全双工串口,是能同时收发的

使用特权

评论回复
5
hotpower| | 2009-1-16 19:30 | 只看该作者

TMOD = 0x21;SCON = 0x50;

使用特权

评论回复
6
ayb_ice| | 2009-1-16 20:05 | 只看该作者

晶振要11.0592才行

使用特权

评论回复
7
grady1125| | 2009-1-17 17:10 | 只看该作者

使用特权

评论回复
8
joyme| | 2016-8-16 11:29 | 只看该作者
用循环等待的方式收发,连续发送多个字节容易造成冲突,用中断做吧

使用特权

评论回复
9
yzjgod| | 2016-8-16 11:53 | 只看该作者
谁在挖坟

使用特权

评论回复
10
foliages| | 2016-8-16 14:52 | 只看该作者
是不是速度的问题?
中断好些。

使用特权

评论回复
11
heishe1989| | 2016-8-16 14:56 | 只看该作者
推荐中断方式

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

148

帖子

0

粉丝