找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1794|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教關(guān)于STC89C52RC的串口高速發(fā)送數(shù)據(jù)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 TEC 于 2022-1-28 02:00 編輯

在測(cè)試上位機(jī)接收STC89C52RC單片機(jī)高速發(fā)送字節(jié)數(shù)據(jù)準(zhǔn)確率的時(shí)候,發(fā)現(xiàn)一個(gè)現(xiàn)象,描述如下:
1、結(jié)尾沒有延時(shí)(0xff自減到0),結(jié)束字節(jié)不是'\n',上位機(jī)顯示的是亂碼,16位顯示有規(guī)律,波特率降到1200也不行。
2、結(jié)尾有延時(shí)(短了不行,0xff自減到0可以),結(jié)尾發(fā)送的不管是不是'\n',上位機(jī)都能正常顯示字符。
3、結(jié)尾發(fā)送的是'\n',有沒有延時(shí),上位機(jī)都可以正常顯示字符。
這是怎么回事呢?我在aduc7061板子上也會(huì)遇到同樣的問題,aduc7061需要0x5ff自減到0的延時(shí)。
  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;//延時(shí)初值
  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'; //加結(jié)束符,正常顯示
  45.         //        while(!TI);
  46.         //        TI=0;
  47.                 ES=1;
  48. //        while(z--);//加延時(shí),顯示正常。
  49.         }
  50. }
復(fù)制代碼





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161164 發(fā)表于 2022-1-28 10:44 | 只看該作者
代碼1沒問題啊~



回復(fù)

使用道具 舉報(bào)

板凳
ID:625730 發(fā)表于 2022-1-28 13:42 | 只看該作者

哦,謝謝。我又試了一下,在其中一塊單片機(jī)上有問題,這塊單片機(jī)燒完程序后提示芯片可能是翻新的。在另外89C52RC、89C52上測(cè)試是好的。
回復(fù)

使用道具 舉報(bào)

地板
ID:624769 發(fā)表于 2022-1-28 19:38 | 只看該作者
STC89C52RC, 用40MHz 晶振,單片機(jī)設(shè)置為6T模式,串口設(shè)置 SCON = 0x90; (模式2)  加上 PCON里面設(shè)置串口速率倍頻,最終串口速率達(dá)到 2.5MHz  連續(xù)發(fā)送信息到電腦,無任何亂碼。(用的還是杜邦線)

所以,你這問題,最大的可能,要么波特率計(jì)算錯(cuò)誤,要么電腦端串口助手有問題,要么就是硬件問題。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表