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

標題: C51單片機執行ESP8266遠程命令源碼詳解 [打印本頁]

作者: 我只是來看看    時間: 2018-4-3 11:22
標題: C51單片機執行ESP8266遠程命令源碼詳解
c51單片機執行ESP8266遠程命令詳解,希望大家互相學習下

單片機源程序如下:
  1. /***************************************************************************
  2. c51單片機,遠程命令詳解

  3. ******************************************************************************/
  4. #include <AT89X51.H>
  5. #include <stdio.h>
  6. unsigned int a;
  7. int b=1;
  8. int c =1;
  9. int d =1;
  10. int e=1;
  11. int f=0;

  12. void main(void)  
  13. {
  14.         unsigned char ldat;
  15.          //PCON |=0X80;                //是否波特率倍增
  16.         SCON=0x50;
  17.         TMOD=0X20;                                //設置定時器1為模式2,做為波特率發生器
  18.         TL1=0xFD;                                //9600波特率的初值,板子使用11.592M晶振,初值=256-12000000/32/12/2400
  19.         TH1=0xFD;                                //
  20.         TI = 1;
  21.         TR1=1;                                        //啟動波特率發生
  22.                         //設置串口方式2
  23.                  do{
  24. for (a=0; a<50000; a++);        //延時幾秒,讓模塊有時間啟動
  25. printf ("AT+CIPMUX=1\n"); //發送命令AT+CIPMUX=1,讓模塊進入多連接模式
  26.         if(RI){                                //查詢是否有數據接收
  27.                         ldat=SBUF;                //數據暫存于變量中
  28.                         RI=0;
  29.                                 if (ldat=='K')//命令執行成功,就會返回OK,這里就是查詢是否有K返回,若有K返回,就說明執行成功,可以執行下一條,否則繼續循環
  30.                                 {b=0 ;
  31.                                 d=0;}
  32.                            c++;
  33.                         if (c==1000)
  34.                         {c=1;
  35.                         d=0;}}

  36.   }while (d);   
  37.         }while(b) ;
  38. b=1;
  39. c =1;
  40. d =1;//b、c、d復位,便于執行下一條命令



  41.                    do{
  42. for (a=0; a<10000; a++);
  43. printf ("AT+CIPSERVER=1,7671\n");
  44.          do{
  45.         if(RI){                                //查詢是否有數據接收
  46.                         ldat=SBUF;                //數據暫存于變量中
  47.                         RI=0;
  48.                                 if (ldat=='K')//同上
  49.                                 {b=0 ;
  50.                                 d=0;}
  51.                            c++;
  52.                         if (c==1000)
  53.                         {c=1;
  54.                         d=0;}}

  55.   }while (d);   
  56.         }while(b) ;         
  57. b=1;
  58. c =1;
  59. d =1;
  60.                  do{
  61. for (a=0; a<10000; a++);
  62. printf ("AT+CIPSTO=50\n");
  63.          do{
  64.         if(RI){                                //查詢是否有數據接收
  65.                         ldat=SBUF;                //數據暫存于變量中
  66.                         RI=0;
  67.                                 if (ldat=='K')//同上
  68.                                 {b=0 ;
  69.                                 d=0;}
  70.                            c++;
  71.                         if (c==1000)
  72.                         {c=1;
  73.                         d=0;}}

  74.   }while (d);   
  75.         }while(b) ;
  76. b=1;
  77. c =1;
  78. d =1;

  79. //執行上述命令,模塊進入服務模式,下面單片機就可以接收遠程發來的數據

  80.          while(1)
  81.         {        
  82.                   if(RI){                                //查詢是否有數據接收
  83.                         ldat=SBUF;                //數據暫存于變量中
  84.                         RI=0;                        //重新清0等待接收
  85.                         
  86.                         
  87. //命令接收開始
  88.                         if (ldat=='}')        
  89.                         { char k[50] ;//設置接收數據緩沖
  90.    
  91.    
  92.             
  93.    
  94.               do{
  95.            
  96.            if(RI){                                //查詢是否有數據接收
  97.                         ldat=SBUF;                //數據暫存于變量中
  98.                         RI=0;                        //重新清0等待接收
  99.                      k[f]=ldat;//一個個字符接收
  100.         f++        ;
  101.         if(ldat==0x0A){e=0;}        //若有新行字符,則結束接收,則說明命令接收完畢
  102.                 }
  103.            } while        (e)        ;
  104.             printf("%s\n", k);//執行遠程發來的命令
  105.          f=0;
  106.          e=1;
  107.                         for (a=0; a<50; a++){
  108.                         k[a]=0;
  109.                         
  110.                         }
  111.            
  112.   
  113. }
  114. //命令結束

  115.                
  116.                         if (ldat==']')
  117. {P1_4=1;
  118.   printf ("AT+CIPSEND=0,1\n");
  119. for (a=0; a<10000; a++);
  120. printf ("A");
  121. }

  122.                          if (ldat=='-')
  123. {P1_4=!P1_4;

  124. }
  125.                                  if (ldat=='[')
  126. {P1_4=0;
  127.   printf ("AT+CIPSEND=0,1\n");
  128. for (a=0; a<10000; a++);
  129. printf ("B");
  130. }

  131.                          if (ldat=='{')
  132. {
  133. if(P1_4==0){
  134. printf ("AT+CIPSEND=0,1\n");
  135. for (a=0; a<10000; a++);
  136. printf ("B");
  137. }

  138. else{
  139.   printf ("AT+CIPSEND=0,1\n");
  140. for (a=0; a<10000; a++);
  141. printf ("A");
  142. }
  143. }

  144.         
  145.                 }
  146.         }

  147.         
  148. }
復制代碼

所有資料51hei提供下載:
c51單片機執行ESP8266遠程命令詳解.zip (1.29 KB, 下載次數: 29)







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人水多啪啪片 | 成人国产精品色哟哟 | 日本 欧美 国产 | 日韩视频福利 | 中文字幕视频在线 | 一级黄色片免费在线观看 | 亚洲精品视频在线 | 亚洲h色 | 欧美精品在线播放 | 亚洲精选久久 | 久久最新网址 | 亚洲国产精品久久久 | 亚洲精品日韩一区二区电影 | 国产一区久久久 | 久久免费精品视频 | 日韩中文字幕视频 | 国产精品久久久久久久久 | 日韩高清成人 | 色呦呦在线 | 国产一区二区久久 | 久久综合九九 | 一区二区三区四区av | 国产人久久人人人人爽 | 亚洲国产精品日本 | 国产免费一二三区 | 国产午夜精品久久久久 | 亚洲高清av在线 | 国产免费一二三区 | 欧美日韩亚洲系列 | 罗宾被扒开腿做同人网站 | 亚洲一区二区中文字幕在线观看 | 久久久久亚洲精品 | 欧美日韩一二区 | 国产精品久久久久久久久久久免费看 | 亚洲成人综合网站 | 精品一二三区 | 日韩亚洲一区二区 | 亚洲精品乱码久久久久久9色 | 欧美天堂在线 | 观看av| 成年人黄色一级片 |