微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 串口通信方式0 的波特率计算

串口通信方式0 的波特率计算

时间:10-02 整理:3721RD 点击:

     下面有一段代码是郭天祥51单片机上面的,我调试了很久在上位机上也没有收到数据,不知道是不是
波特率设置的问题,系统晶振是f=11.0592MHZ,方式0的波特率=f/12,但是这样算出的太大了吧。不知道是什么原因,
希望各位帮忙解答一下!

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. void delayms(uint ms)
  5. {
  6.         uint i,j;
  7.         for(i=ms;i>0;i--)
  8.                 for(j=110;j>0;j--);
  9. }

  10. void main()
  11. {
  12.         SCON = 0x00;
  13.         EA = 1;
  14.         ES = 1;
  15.         TI = 0;
  16.         while(1)
  17.         {
  18.                 SBUF = 0xaa;
  19.                 delayms(1);
  20.         }
  21. }

  22. void ser0()interrupt 4
  23. {
  24.         TI = 0;
  25. }

复制代码


这程序能运行才会有问题,波特率设置在哪边呢

程序没看到设置波特率?

是串口通信方式0,不用设置呀,系统默认就是系统频率f/12.

是串口通信方式0,不用设置呀,系统默认就是系统频率f/12.

你什么单片机啊这么高级

因为我们平时设置的是串口通信方式1所以要设置,现在是方式0.。算了不说这个问题了。
为甚么在上位机发送给单片机数据后,单片机把原数据有发送出来,但是上位机上面接收到的数据有时候会丢失掉,
比如:我发送1234567     上位机上面接收到的可能是123457  或者  124567等等。

发的太快啊,最简单的就是发完一个字节加一个小的延时啊

额,谢谢!

谢谢分享啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top