久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1115|回復: 3
打印 上一主題 下一主題
收起左側

51單片機串口通訊問題,大家看一下,是軟件問題,還是晶振問題,小白搞不定了

[復制鏈接]
跳轉到指定樓層
樓主
ID:999123 發表于 2022-1-9 16:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機12MHZ晶振。軟件下載到單片機后問題表現為;
         軟件設想的表現是;

                         單片機收到上位機發送的任何數據后,先回復:“收到”,再在“收到”后面貼上上位機發送的數據。

      實際表現為,發送:1              回復;收到1             正常

                        發送;11             回復;收到1              不正常,      應該為“收到11”,

                        發送;111           回復:收到1              不正常,     應該為“收到111”,

                       發送;1111          回復;收到1               不正常,     應該“收到1111”,

                       發送;11111          回復;收到1收到               不正常,              應該為,“收到11111”,

把for循環注釋掉,也就是讓單片機收到什么回復什么,一切表現正常

[16:21:01.014]發→◇1

[16:21:01.045]收←◆收到1
[16:21:05.575]發→◇11

[16:21:05.606]收←◆收到1
[16:21:10.095]發→◇111

[16:21:10.126]收←◆收到1
[16:21:13.415]發→◇1111

[16:21:13.446]收←◆收到1
[16:21:16.631]發→◇11111

[16:21:16.682]收←◆收到1收到
[16:21:19.614]發→◇111111

[16:21:19.666]收←◆收到1收到1
[16:21:27.823]發→◇1111111

[16:21:27.874]收←◆收到1收到1
[16:21:30.942]發→◇11111111

[16:21:30.994]收←◆收到1收到1
[16:21:34.047]發→◇111111111

[16:21:34.118]收←◆收到1收到1收到

[16:21:37.287]發→◇1111111111

[16:21:37.359]收←◆收到1收到1收到
[16:21:41.686]發→◇11111111111

[16:21:41.717]收←◆收到1
[16:21:41.762]收←◆收到1收到
[16:21:44.391]發→◇111111111111

[16:21:44.463]收←◆收到1收到1收到1
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:999123 發表于 2022-1-9 16:29 | 只看該作者
  1.         #include<reg52.h>        
  2.         #define uchar unsigned char
  3.         #define uint unsigned int
  4.         unsigned char flag, a, i;
  5.         uchar code table[]="收到";
  6.           void delayms(char i)
  7.           {
  8.                         while(i--);
  9.           }
  10.         void init()
  11.         {
  12.           TMOD=0x20;
  13.           SCON=0x50;
  14.          PCON=0x80;
  15.          
  16.           TH1=0xe6;
  17.           TL1=0xe6;
  18.           TR1=1;
  19.            EA=1;
  20.            ES=1;
  21.          }

  22.          void main()
  23.          {         
  24.                    init();
  25.                   while(1)
  26.            {

  27.          
  28.               if(flag==1)
  29.            {

  30.                      ES=0;
  31.                   for(i=0;i<4;i++)

  32.                  {
  33.                   SBUF=table[i];
  34.                   while(!TI);
  35.                   TI=0;        
  36.                  
  37.                   }



  38.                   SBUF=a;
  39.                   while(!TI);
  40.                   TI=0;
  41.                   ES=1;
  42.                   flag=0;
  43.                  }         
  44.                    }
  45.          
  46.                    }
  47.          
  48.           void ser() interrupt 4

  49.           {
  50.                  RI=0;
  51.                    a=SBUF;
  52.                         

  53.                    flag=1;




  54.           }
復制代碼
回復

使用道具 舉報

板凳
ID:276663 發表于 2022-1-10 09:43 | 只看該作者
a只能存一個字節,所以回復a是1,沒錯啊。
你應該定義
unsigned char rx1buff[32];
unsigned char rx1cnt;
在接收中斷里
if(rx1cnt<32)
  rx1buff[rx1cnt++]=SBUFF;
還一個就是,你收到一個字符a,就置位了標志位并關閉了串口接收,所以后面的也不能收到。
目前你的問題是屬于沒有理解串口數據的存儲。
如果改成我這樣,你可能發現結果還是一樣,因為你收到一個就結束了,發送收到的數據也只是SBUF=a;也只發送了一個數據,而應該像你上面發送收到一樣是個循環把收到的數據全發出去。
那就是第二個問題,什么時候知道收完了呢?
1.加個末尾的識別字符
2.用定時器每次收到一個數據重新倒計時,如果倒計時結束了就認為一次數據接收完成,這個時候置位flag.
回復

使用道具 舉報

地板
ID:999123 發表于 2022-1-11 11:06 | 只看該作者
總之太多奇奇怪怪的問題了,本人先把這個掛起來以后用到的時候再來研究!!!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美女优在线观看 | 日韩精品1区2区3区 成人黄页在线观看 | 最新中文字幕第一页视频 | 精品国产乱码久久久久久蜜柚 | 欧美亚洲高清 | 亚洲国产高清免费 | 伦理午夜电影免费观看 | 久久亚洲国产 | 日本一区二区高清不卡 | 91视频进入 | 黄色一级视频免费 | 国产高清在线 | 国产视频中文字幕 | 性一交一乱一伦视频免费观看 | 91精品国产色综合久久不卡98 | 日韩欧美专区 | 日日夜夜精品视频 | 亚洲国产精品成人无久久精品 | 精品国产一区二区三区日日嗨 | 99精品视频在线观看 | 福利视频网址 | 九九免费视频 | 伊人国产精品 | 亚洲一区二区视频 | 国产欧美性成人精品午夜 | 蜜桃精品视频在线 | 国产高清一区二区三区 | 日韩欧美中文字幕在线观看 | 久久国产精品一区 | 亚洲国产精品久久久久婷婷老年 | 日韩av在线免费 | 拍真实国产伦偷精品 | 国产精品99久久久久久www | 人人性人人性碰国产 | 成人夜晚看av | 一区二区视屏 | 波多野结衣一区二区三区 | 国产不卡视频在线 | www国产成人免费观看视频 | 成人免费淫片aa视频免费 | 欧美国产精品 |