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

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

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)與esp8266聯(lián)手控制電機(jī)和led程序 調(diào)試出現(xiàn)問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:219317 發(fā)表于 2017-9-15 00:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我用stc89單片機(jī)與esp8266聯(lián)手控制led和電機(jī),發(fā)現(xiàn)必須直接在串口或者對(duì)esp8266發(fā)送兩次同樣信息才能讓panduan()選擇另一分支,如果只發(fā)一次信息,無(wú)變化;但是當(dāng)我把panduan()中每個(gè)分支下的data_cls();刪除了,就只發(fā)一次信息就可以改變分支了。試了好久始終不得要領(lǐng),不知到是什么原因。懇請(qǐng)大神解惑。程序如下:
  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>                     
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. #define RELOAD_COUNT 0xFA
  7. uchar Receive;                             
  8. uchar Recive_table[15];
  9. static uchar i=0;
  10. sbit LED0=P2^1;
  11. sbit LED1=P2^2;
  12. sbit ji0=P0^0;
  13. sbit ji1=P0^1;
  14. sbit ji2=P0^2;
  15. sbit ji3=P0^3;
  16. void ms_delay(uint z)
  17. {
  18.       uint x,j;
  19.       for(x=z;x>0;x--)
  20.        for(j=110;j>0;j--);
  21. }

  22. void Uart_Init()//使用定時(shí)器1作為波特率發(fā)生器(STC89C52、STC89C51、AT89C51或者STC12C560S2等均可)
  23. {
  24.       SCON=0x50;     //設(shè)置為串行口以方式1工作,8位異步通訊,允許接收中斷。//一幀信息為10位,1位起始位,8位數(shù)據(jù)位(低位在先),1位停止位。
  25.       PCON=0x80;     //SMOD波特率選擇位為1,SMOD=1.
  26.       TMOD=0x21;     //設(shè)置定時(shí)器1為波特率發(fā)生器,工作在模式2,8位自動(dòng)裝載
  27.       TH1=RELOAD_COUNT;//波特率9600 ,TH1=256-FOSC/16/12/波特率
  28.       TL1=TH1;
  29.       EA=1;                            //總中斷打開(kāi)
  30.       ES=0;                             //關(guān)閉串口中斷
  31.       TR1=1;                     //啟動(dòng)定時(shí)器1
  32. }
  33. void led(void)
  34. {
  35. LED0=0;
  36. LED1=0;
  37. ms_delay(100);
  38. LED0=1;
  39. LED1=1;
  40. }

  41. void SendString(char *s)                //串口發(fā)送程序
  42. {
  43.         while(*s != '\0')
  44.         {
  45.                 SBUF = *(s++);
  46.                 while(!TI);
  47.                 TI = 0;
  48.         }
  49. }
  50. void zhengzhuan()          //用的是電機(jī)驅(qū)動(dòng)模塊
  51. {
  52. ji0=0;
  53. ji1=0; //先停電機(jī)
  54. ji0=1; //
  55. ji1=0;
  56. ji2=0; //第二個(gè)控制沒(méi)用
  57. ji3=0;
  58. }

  59. void fanzhuan()
  60. {
  61. ji0=0;
  62. ji1=0; //先停電機(jī)
  63. ji0=0;
  64. ji1=1;
  65. ji2=0; //第二個(gè)控制沒(méi)用
  66. ji3=0;
  67. }

  68. void stop()           //停電機(jī)
  69. {
  70. ji0=0;
  71. ji1=0;
  72. ji2=0;
  73. ji3=0;
  74. LED0=1;
  75. LED1=1;
  76. }

  77. void data_cls()           //數(shù)組清零
  78. {
  79. uint  l;
  80. for(l = 0; l < 15; l ++)
  81. Recive_table[l]=0;
  82. }
  83. void panduan()                //根據(jù)信息判斷采用哪個(gè)分支
  84. {            
  85. if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的數(shù)據(jù)為+IPD時(shí)進(jìn)入判斷控制0\1來(lái)使小燈亮與滅
  86.              {   
  87.                    //if((Recive_table[3]=='1')&&(Recive_table[4]=='2'))
  88.                                           
  89.                                           uint s;
  90.                                           s=Recive_table[10];
  91.                                           switch(s)
  92.                       {
  93.                                             case '1':   
  94.                                                         {
  95.                                   data_cls();
  96.                                                                   LED0=0;
  97.                                                                   LED1=1;//1 燈滅
  98.                                                                   zhengzhuan();
  99.                                                                   break;            
  100.                                                         }
  101.                          case '2':
  102.                             {                                
  103.                                 data_cls();
  104.                                                                 LED0=1;
  105.                                                                 LED1=0;  //1 燈亮
  106.                                                                 fanzhuan();
  107.                                                                 break;                     
  108.                                          }
  109.                                               case '3':
  110.                             {                                
  111.                                 data_cls();
  112.                                                                 stop();
  113.                                                                 break;                  
  114.                                          }
  115.                                                    
  116.                                                   default:
  117.                                                     {
  118.                                                            data_cls();
  119.                                                         stop();
  120.                                                         LED0=0;
  121.                                                         LED1=0;
  122.                                                         break;
  123.                                                     }
  124.                                           
  125.                                             }  
  126.                         }
  127.                          else
  128.                          {}

  129. }
  130. void main()
  131. {   
  132.       Uart_Init();//使用獨(dú)立的波特率發(fā)生器
  133.           led();
  134.           ms_delay(1000);
  135.           SendString("AT+CIPMUX=1");
  136.           SendString("\r\n");
  137.           led();
  138.           ms_delay(1000);
  139.           SendString("AT+CIPSERVER=1,8080");
  140.           SendString("\r\n");
  141.           EA=1;
  142.           ES=1;                                //允許串口中斷
  143.           while(1)
  144.       {         
  145.            
  146.            EA=1;
  147.            ES=1;
  148.            panduan();
  149.           }         
  150. }

  151. void Uart_Interrupt() interrupt 4
  152. {
  153.                    if(RI==1)
  154.     {   
  155.            RI=0;
  156.            Receive=SBUF;        //MCU接收wifi模塊反饋回來(lái)的數(shù)據(jù)
  157.            Recive_table[i]=Receive;      
  158.            i++;         
  159.                  if(Recive_table[i-1]=='\n')
  160.                    {
  161.                    i=0;  //遇到換行 重新裝值
  162.                       }
  163.                    else
  164.                         {}
  165.                   
  166.      }
  167.          else
  168.           {}   
  169. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2017-9-15 23:57 | 只看該作者
畫(huà)個(gè)流程圖或許能看出問(wèn)題
回復(fù)

使用道具 舉報(bào)

板凳
ID:219317 發(fā)表于 2017-9-16 10:32 | 只看該作者
yzwzfyz 發(fā)表于 2017-9-15 23:57
畫(huà)個(gè)流程圖或許能看出問(wèn)題

謝謝。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一级片免费网站 | 2020亚洲天堂 | 亚洲精品久久久久久国产精华液 | 欧美一区二区三区高清视频 | 欧美小视频在线观看 | 日韩三片 | 在线日韩av电影 | 欧美在线一区二区三区 | 成人午夜电影在线观看 | www久久 | 成人午夜精品 | 日韩视频在线一区二区 | 色久电影 | 亚洲欧美中文日韩在线v日本 | 日韩毛片免费看 | 日本成人午夜影院 | 国产一区二区三区在线 | 一级片网站视频 | 午夜免费影视 | 久在线视频 | 日韩福利 | 国产在线观看一区二区三区 | 免费观看成人鲁鲁鲁鲁鲁视频 | 中文字幕在线国产 | 精品九九九| 中文字幕一二三 | 91xxx在线观看| 中文字幕av第一页 | 羞羞视频网站 | av黄色在线 | 国产久 | 久草网站| 欧美一级免费看 | 天堂综合网 | 亚洲精品白浆高清久久久久久 | 午夜精品一区二区三区在线观看 | 美女黄视频网站 | 国产精品日韩在线 | 国产日韩欧美精品 | 久久久成人免费视频 | 日韩av在线一区 |