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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助51單片機串口接收字符串程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:876099 發表于 2022-1-13 16:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在做一個和模塊相互工作的一個程序,具體實現的功能就是串口發送什么數據過去,然后單片機就會向串口發送,實現串口回顯的功能,還需要將串口接收到的數據存放在數組,在網上搜索一下午沒有解決問題所以想求助一下論壇里面的各位,希望有大佬幫助解決一下問題

單片機源程序如下:
  1. #include <REGX51.H>
  2. #include "stdio.h"
  3. int i=123;
  4. unsigned char table[20]={"AT"};
  5. void main()
  6. {
  7.    P1=0x00;
  8.    TMOD=0x21;                   //設T0為方式1,GATE=1;
  9.         SCON=0x50;
  10.         TH1=0xFD;
  11.         TL1=0xFD;
  12.         TR1=1;                           //開啟定時器
  13.         TI=1;
  14.         EA=1;
  15.         ES=1;
  16.         printf("123\r\n");
  17.         while(1)
  18.         {
  19. }
  20. }

  21. void zd() interrupt  4
  22. {
  23.     static unsigned char num=0,q;
  24.          if(RI==1)
  25.          {
  26.              q=SBUF;
  27.                   while(q!='\n')
  28.                   {
  29.                           table[num]=SBUF;
  30.                           num++;
  31.                   }
  32.                   RI=0;
  33.           }
  34.         
  35. }
復制代碼



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

使用道具 舉報

沙發
ID:876099 發表于 2022-1-13 21:29 | 只看該作者
這一段代碼它的問題就是我在開頭發送一串字符不能完成串口發送出去,還有就是我電腦第一次發送回顯沒有問題,后來就不能回顯,按一下復位鍵發送正常接收,第二次就不行了
  1. #include <REGX51.H>
  2. #include "stdio.h"
  3. #define u8 unsigned char
  4. int i=123;
  5. unsigned char table[10];
  6. bit flag=0;

  7. void send_byte(u8  str)
  8. {
  9.    SBUF=str;
  10.    while(!TI);
  11.    TI=0;
  12. }
  13. void  send_string(u8 *str)
  14. {
  15.    while(*str!='\0')
  16.    {
  17.       send_byte(*str);
  18.                 str++;          
  19.    }
  20. }
  21. void main()
  22. {
  23.    P1=0x00;
  24.    TMOD=0x21;                   //設T0為方式1,GATE=1;
  25.         SCON=0x50;
  26.         TH1=0xFD;
  27.         TL1=0xFD;
  28.         TR1=1;                           //開啟定時器
  29.         TI=1;
  30.         EA=1;
  31.         ES=1;
  32.         send_string("asdfg");
  33.         while(1)
  34.         {

  35.            static unsigned char j;
  36.                 if(flag==1)
  37.                 {
  38. //                  printf("%s\r\n",&table);
  39.                   send_string(&table);
  40.                   flag=0;
  41.                  for(j=0;j<10;j++)
  42.                  {
  43.                    table[j]='\0';
  44.                  }
  45.                 }
  46.    }
  47. }

  48. void zd() interrupt  4
  49. {
  50.     static unsigned char num=0,temp;
  51.          num=0;
  52.          if(RI==1)
  53.          {             
  54.              temp=SBUF;
  55.                   if(temp!='\n')
  56.                   {
  57.                     table[num++]=temp;                          
  58.                   }
  59.                   else
  60.                   flag=1;
  61.                   RI=0;
  62.           }       
  63. }
復制代碼
回復

使用道具 舉報

板凳
ID:625730 發表于 2022-1-13 23:26 | 只看該作者
把你的中斷函數修改一下,num定義到外部去,以'\n'作為結束字符,試了一下,是可以回傳的。

  1. void zd() interrupt  4
  2. {
  3.     static unsigned char temp;
  4.          
  5.          if(RI==1)
  6.          {            
  7.            RI=0;  
  8.                                          temp=SBUF;
  9.                   if(temp!='\n')
  10.                   {
  11.                     table[num++]=temp;                          
  12.                   }
  13.                   else if(temp=='\n')
  14.                                                                         {
  15.                                                                                 flag=1;
  16.                                                                         num=0;
  17.                   
  18.                                                                         }
  19.           }      
  20. }
復制代碼
回復

使用道具 舉報

地板
ID:876099 發表于 2022-1-18 22:58 | 只看該作者
TEC 發表于 2022-1-13 23:26
把你的中斷函數修改一下,num定義到外部去,以'\n'作為結束字符,試了一下,是可以回傳的。

好的謝謝你我去試試
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 涩爱av一区二区三区 | 美女二区| 国产成人高清视频 | 嫩草一区二区三区 | 亚洲成人免费在线观看 | 黄色免费在线观看 | 少妇黄色 | 亚洲欧美一区在线 | 欧洲一级毛片 | 亚洲视频在线观看 | 久久综合一区二区三区 | 在线国产一区二区 | 日韩在线视频一区 | 日本免费在线 | 国产视频久久 | 日本a网站 | 午夜电影在线播放 | www国产精 | 97色在线观看免费视频 | 亚洲一区高清 | 国产一区二区三区精品久久久 | 丁香婷婷综合激情五月色 | 国产精品国产三级国产aⅴ无密码 | 91一区二区三区 | 97免费在线观看视频 | 91极品视频 | 超碰高清 | 成人精品一区亚洲午夜久久久 | www.日韩系列 | av性色全交蜜桃成熟时 | 人人看人人草 | 国产成人在线一区二区 | 91久久伊人 | 午夜小视频在线播放 | 成人免费观看视频 | 色男人的天堂 | 亚洲国产成人精品女人 | 亚洲精品在线看 | 欧美精品一区二区免费 | 欧美日韩亚洲一区 | 成人免费在线网 |