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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ESP8266如何檢測透傳模式下單片機讀取接收到的數據 求幫助

[復制鏈接]
跳轉到指定樓層
樓主
ID:76201 發表于 2018-7-31 17:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
ESP8266:如何檢測透傳模式下單片機讀取接收到的數據
用51做的用手機控制單片機驅動步進電機,想問問怎么檢測ESP8266收到了信息,我設置了一個LED亮滅來檢測,發現只在發送AT指令時有效果,而在透傳模式傳送數據沒作用,求教。
程序如下,暫時將輸出PWM注釋了
單片機源程序如下:
  1. #include <reg52.H>
  2. #include <stdio.h>
  3. #define MAIN_Fosc  11059200UL //宏定義主時鐘HZ
  4. unsigned int a;
  5. typedef unsigned char INT8U;
  6. typedef unsigned char uchar;
  7. typedef unsigned int INT16U;
  8. int b=1;
  9. int c =1;
  10. int d =1;
  11. int e=1;
  12. int f=0;
  13. int i;
  14. INT8U t=0;
  15. INT8U Freq=22;
  16. INT8U PWM_T = 9;
  17. sbit LED1 = P1^0;
  18. sbit down = P3^0;
  19. sbit up = P3^1;
  20. void Delay_Ms(INT16U ms)
  21. {
  22.      INT16U i;
  23.   do
  24.   {
  25.        i = MAIN_Fosc / 96000;
  26.     while(--i);   //96T per loop
  27.      }while(--ms);
  28. }

  29. //PWM初始化
  30. void pwm_Init()
  31. {
  32. TMOD = 0x02;   //定時器0,工作模式2,8位定時模式
  33. TH0=210;     //寫入預置初值(取值1-255,數越大PWM頻率越高)
  34. TL0=210;     //寫入預置值 (取值1-255,數越大PWM頻率越高)
  35. TR0=1;       //啟動定時器
  36. ET0=1;       //允許定時器0中斷
  37. EA=1;        //允許總中斷
  38. P1=0xFF;   //初始化P1,輸出端口
  39. PWM_T=Freq/2;
  40. }
  41. //串口初始化
  42. void Uart_Init()
  43. {
  44.      PCON |=0X80;  //是否波特率倍增
  45.   SCON=0x50;
  46.   TMOD=0X20;    //設置定時器1為模式2,做為波特率發生器
  47.   TL1=0xFF;    //57600波特率的初值,板子使用11.592M晶振,初值=256-12000000/32/12/2400
  48.   TH1=0xFF;    //
  49.   TI = 1;
  50.   TR1=1;     //啟動波特率發生

  51. }

  52. void main(void)  
  53. {
  54. unsigned char ldat;
  55. // pwm_Init();
  56. Uart_Init();
  57.    //設置串口方式2
  58.      do
  59.    {
  60.   for (a=0; a<50000; a++);
  61.   printf ("AT+CIPMUX=1\n");
  62.   do
  63.   {
  64.       if(RI)
  65.     {    //查詢是否有數據接收
  66.        LED1=~LED1;//用LED來檢測是否收到數據
  67.     ldat=SBUF;  //數據暫存于變量中
  68.        RI=0;
  69.              if (ldat=='K')
  70.            {   b=0 ;
  71.          d=0;
  72.      }
  73.            c++;
  74.        if (c==1000)
  75.        { c=1;
  76.           d=0;
  77.     }
  78.        }
  79.     }while (d);  
  80. }while(b) ;
  81.     b=1;
  82.   c =1;
  83.   d =1;
  84.       do
  85. {
  86.    for (a=0; a<50000; a++);
  87.    printf ("AT+CIPSERVER=1,7671\n");
  88.       do
  89.     {
  90.      if(RI)
  91.     {

  92.        ldat=SBUF;  //數據暫存于變量中
  93.        RI=0;
  94.        if (ldat=='K')
  95.         {
  96.        b=0 ;
  97.           d=0;
  98.       }
  99.           c++;
  100.          if (c==1000)
  101.       { c=1;
  102.       d=0;
  103.     }
  104.     }
  105.      }while (d);  
  106. }while(b) ;  

  107. b=1;
  108. c =1;
  109. d =1;
  110.    while(1)
  111. {   
  112.     if(RI){     //查詢是否有數據接收
  113.     ldat=SBUF;  //數據暫存于變量中
  114.     RI=0;   //重新清0等待接收
  115.    //命令接收開始
  116.     if (ldat=='}')
  117.    {  
  118.       char k[50] ;
  119.    
  120.          do
  121.    {
  122.        if(RI)
  123.   {
  124.    //查詢是否有數據接收
  125.       ldat=SBUF;  //數據暫存于變量中
  126.       RI=0;   //重新清0等待接收
  127.          k[f]=ldat;
  128.    f++;
  129.   if(ldat==0x0A)
  130.    { e=0; }
  131.     }
  132.       }while (e);
  133.       printf("%s\n", k);
  134.      
  135.    f=0;
  136.       e=1;
  137.      
  138.    for(a=0; a<50; a++)
  139.     {
  140.       k[a]=0;
  141.    }
  142.    }
  143.     //命令結束
  144.   }
  145.     //電機驅動
  146. //            if(!up)
  147. //  {
  148. //    if(Freq<60)
  149. //     {
  150. //       Freq+=1;
  151. //       PWM_T=Freq/2;
  152. //     }
  153. //   
  154. //    Delay_Ms(10);
  155. //  }
  156. //      
  157. //   if(!down)
  158. //  {
  159. //    if(Freq>1)
  160. //     {
  161. //       Freq-=1;
  162. //       PWM_T=Freq/2;
  163. //     }
  164. //   
  165. //    Delay_Ms(10);
  166. //  }
  167. }
  168. }

  169. /****************************************************
  170.                /定時器0中斷模擬PWM
  171. ****************************************************/
  172. timer0() interrupt 1  
  173. {
  174.   t++;    //每次定時器溢出加1
  175.   
  176.   if(t==Freq)   //PWM周期 100個單位
  177.    {
  178.      t=0;  //使t=0,開始新的PWM周期
  179.      P1=0x00;  //輸出端口
  180.    }
  181.   
  182.   if(PWM_T==t)  //按照當前占空比切換輸出為高電平
  183.    {  
  184.       P1=0xff;        //  
  185.    }
  186. }
復制代碼

所有資料51hei提供下載:
ESP8266:如何檢測透傳模式下單片機讀取接收到的數據.docx (13.14 KB, 下載次數: 16)



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

使用道具 舉報

沙發
ID:310519 發表于 2018-8-1 09:24 | 只看該作者
esp8266用做收發模塊?

只要設置正確并連接后,收到數據就會通過串口發送出來的吧?
回復

使用道具 舉報

板凳
ID:410513 發表于 2019-1-27 15:11 | 只看該作者
我也是這種情況  AT的OK  透傳的讀不到數據,,樓主解決了嗎
回復

使用道具 舉報

地板
ID:480450 發表于 2019-9-30 21:50 | 只看該作者
AT模式下不能透傳
回復

使用道具 舉報

5#
ID:68356 發表于 2019-10-3 01:45 | 只看該作者
可能就是沒收到數據,收到一個字節的數據RI也會置位
回復

使用道具 舉報

6#
ID:338127 發表于 2020-3-7 21:15 | 只看該作者
1876476642 發表于 2019-9-30 21:50
AT模式下不能透傳

可以的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美一区二区三区久久久 | 亚洲精品视频在线看 | 久久久www成人免费无遮挡大片 | 亚洲香蕉在线视频 | 日韩精品一区二区三区在线播放 | 日韩一区二区在线观看 | 精品一区视频 | 精品网站999www | 成人乱人乱一区二区三区软件 | 91 中文字幕 | 亚洲一区二区三区在线免费观看 | 亚洲精品成人 | 91精品国产手机 | 国产一区二区不卡 | 婷婷久久五月天 | 黄色大片在线视频 | 久久久看 | 中文无吗| 中文字幕免费在线 | 欧美精品久久久久久久久久 | 国产一区二区三区视频 | 欧美视频成人 | 国产视频欧美 | 国产精品视频免费观看 | 国产精品欧美精品 | 精品国产伦一区二区三区观看体验 | 国产欧美日韩综合精品一区二区 | 亚洲三级免费看 | 成人欧美一区二区 | 色黄网站 | 欧美激情亚洲天堂 | 天天干夜夜操 | av中文字幕在线 | 久久大陆 | 精品国产免费一区二区三区五区 | 亚洲一区二区三区在线播放 | 亚洲网站在线观看 | 91精品久久久 | 免费一区二区 | 99久久夜色精品国产亚洲96 | 99精品一区二区三区 |