找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1143|回复: 3
收起左侧

请教关于STC89C52RC的串口高速发送数据问题

[复制链接]
ID:625730 发表于 2022-1-28 01:41 | 显示全部楼层 |阅读模式
本帖最后由 TEC 于 2022-1-28 02:00 编辑

在测试上位机接收STC89C52RC单片机高速发送字节数据准确率的时候,发现一个现象,描述如下:
1、结尾没有延时(0xff自减到0),结束字节不是'\n',上位机显示的是乱码,16位显示有规律,波特率降到1200也不行。
2、结尾有延时(短了不行,0xff自减到0可以),结尾发送的不管是不是'\n',上位机都能正常显示字符。
3、结尾发送的是'\n',有没有延时,上位机都可以正常显示字符。
这是怎么回事呢?我在aduc7061板子上也会遇到同样的问题,aduc7061需要0x5ff自减到0的延时。
  1. #include<reg52.h>
  2. void usart_init()
  3. {
  4.         TMOD=0x20;
  5.         TH1=0xfd;
  6.         TL1=0xfd;
  7.         SM0=0;
  8.         SM1=1;
  9.         REN=1;
  10.         ES=1;
  11.         EA=1;
  12.         TR1=1;
  13. }
  14. void main()
  15. {
  16.         unsigned int z;
  17.         usart_init();
  18.         while(1)
  19.         {
  20.                 //z=0xff;//延时初值
  21.                 ES=0;
  22.                 TI=0;
  23.                 SBUF='a';
  24.                 while(!TI);
  25.                 TI=0;
  26.                 SBUF='b';
  27.                 while(!TI);
  28.                         TI=0;
  29.                 SBUF='c';
  30.                 while(!TI);
  31.                         TI=0;
  32.                 SBUF='d';
  33.                 while(!TI);
  34.                         TI=0;
  35.                 SBUF='e';
  36.                 while(!TI);
  37.                         TI=0;
  38.                 SBUF='g';
  39.                 while(!TI);
  40.                         TI=0;
  41.                 SBUF='h';
  42.                 while(!TI);
  43.                 TI=0;
  44.         //        SBUF='\n'; //加结束符,正常显示
  45.         //        while(!TI);
  46.         //        TI=0;
  47.                 ES=1;
  48. //        while(z--);//加延时,显示正常。
  49.         }
  50. }
复制代码


乱码.PNG 加延时2.PNG 正常.PNG


回复

使用道具 举报

ID:161164 发表于 2022-1-28 10:44 | 显示全部楼层
代码1没问题啊~
2022-01-28_104324.png


回复

使用道具 举报

ID:625730 发表于 2022-1-28 13:42 | 显示全部楼层

哦,谢谢。我又试了一下,在其中一块单片机上有问题,这块单片机烧完程序后提示芯片可能是翻新的。在另外89C52RC、89C52上测试是好的。
回复

使用道具 举报

ID:624769 发表于 2022-1-28 19:38 | 显示全部楼层
STC89C52RC, 用40MHz 晶振,单片机设置为6T模式,串口设置 SCON = 0x90; (模式2)  加上 PCON里面设置串口速率倍频,最终串口速率达到 2.5MHz  连续发送信息到电脑,无任何乱码。(用的还是杜邦线)

所以,你这问题,最大的可能,要么波特率计算错误,要么电脑端串口助手有问题,要么就是硬件问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表