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

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

QQ登錄

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

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

我用51單片機(jī)連接esp8266,建立TCP連接,在發(fā)送數(shù)據(jù)時(shí),如果控制的外設(shè)超過(guò)一個(gè)就出錯(cuò)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:926694 發(fā)表于 2021-5-26 20:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我用51單片機(jī)連接8266,然后建立TCP連接,在發(fā)送數(shù)據(jù)時(shí),如果控制的外設(shè)只有一個(gè)的話工作正常,但加入兩個(gè)后,比如我這兒又加了一個(gè)蜂鳴器,當(dāng)控制燈的時(shí)候,蜂鳴器當(dāng)前的狀態(tài)會(huì)取反,同理,控制蜂鳴器的時(shí)候,燈的狀態(tài)也會(huì)取反。不是蜂鳴器接線的問(wèn)題,我把蜂鳴器換成LED也是出現(xiàn)這種問(wèn)題,我實(shí)在想不明白,我先謝謝大家了,跪求原因

單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit beep = P2^3;
  6. sbit LED1 = P2^4;
  7. sbit LED2 = P2^5;
  8. #define MAIN_Fosc                11059200UL        //宏定義主時(shí)鐘HZ

  9. uchar Recive_date[40]="";//接受數(shù)據(jù)
  10. uchar Recive_flag = 0;//接收完成標(biāo)志

  11. //1s延時(shí)
  12. void delay1s(void)
  13. {
  14.     unsigned char a,b,c;
  15.     for(c=13;c>0;c--)
  16.         for(b=247;b>0;b--)
  17.             for(a=142;a>0;a--);
  18.     _nop_();
  19. }

  20. //us級(jí)延時(shí)
  21. void us_delay(uchar t)
  22. {  
  23.         while(t--);
  24. }

  25. //串口中斷函數(shù)
  26. void Uart_Interrupt(void) interrupt 4
  27. {
  28.         static uchar i=0;  
  29.         if(RI==1)  
  30.         {   
  31.                 RI=0;   
  32.                 ES = 0;//關(guān)閉串口中斷
  33.                 Recive_date[i]=[/i]SBUF;
  34. [i]                if((Recive_date=='\n'))
  35.                 {                     
  36.                         i=0;                        //遇到換行 重新裝值
  37.                         Recive_flag = 1;//接收數(shù)據(jù)完畢
  38.                 }   
  39.                 else i++;
  40.                 ES = 1;//打開(kāi)串口中斷               
  41.         }   
  42.         else TI=0;  
  43. }

  44. //發(fā)送一個(gè)字節(jié)
  45. void sendByte(uchar b)
  46. {
  47.         ES=0;                                   //關(guān)閉串口中斷  
  48.         TI=0;                                   //清發(fā)送完畢中斷請(qǐng)求標(biāo)志位   
  49.         SBUF=b;                                 //發(fā)送  
  50.         while(TI==0);                           //等待發(fā)送完畢   
  51.         TI=0;                                   //清發(fā)送完畢中斷請(qǐng)求標(biāo)志位   
  52.         ES=1;
  53. }

  54. //發(fā)送字符串
  55. void sendString(uchar *s)
  56. {
  57.          while(*s!='\0')                    //遇到空格跳出循環(huán)  
  58.         {   
  59.                 sendByte(*s);                  //向WIFI模塊發(fā)送控制指令。   
  60.                 us_delay(5);
  61.                 s++;
  62.         }  
  63.         us_delay(5);  
  64.         sendByte('\r');                         //回車(chē)  
  65.         us_delay(5);  
  66.         sendByte('\n');
  67. }

  68. //串口初始化
  69. void Init_Uart(void)
  70. {
  71.         TMOD = 0x20;//8位自動(dòng)重裝
  72.     SCON = 0x50;//8位數(shù)據(jù),波特率可變,方式1
  73.     TH1 = 0xFD;
  74.     TL1 = TH1;  //9600波特率
  75.     PCON = 0x00;//波特率不加倍
  76.     TR1 = 1;    //打開(kāi)定時(shí)器1
  77.         EA = 1;                //打開(kāi)總中斷
  78.         ES = 1;                //打開(kāi)串口中斷
  79. }

  80. //8266初始化
  81. void esp_init(void)
  82. {
  83.         delay1s();
  84.         sendString("AT");
  85.         delay1s();
  86.         delay1s();
  87.         sendString("AT+CWMODE=3");
  88.         delay1s();
  89.         delay1s();
  90.         sendString("AT+RST");
  91.         delay1s();
  92.         delay1s();
  93.         sendString("AT+CWJAP=\"HONOR X10\",\"sxzwn.0717\"");
  94.         delay1s();
  95.         delay1s();
  96.         delay1s();
  97.         delay1s();
  98.         delay1s();
  99.         delay1s();
  100.         delay1s();
  101.         delay1s();
  102.         delay1s();
  103.         delay1s();
  104.         sendString("AT+CIPMUX=1");
  105.         delay1s();
  106.         delay1s();
  107.         sendString("AT+CIPSERVER=1,8080");
  108.         delay1s();
  109.         delay1s();
  110. }



  111. void main()
  112. {
  113.         uchar  LED_status=0;
  114.         uchar  beep_status=0;
  115.         LED1 = 0;
  116.         LED2 = 0;
  117.         Init_Uart();
  118.         delay1s();
  119.         delay1s();
  120.         esp_init();
  121.         LED1 = 1;
  122.         delay1s();
  123.         LED1 = 0;
  124.         while(1)
  125.         {
  126.                 if(Recive_flag==1&&Recive_date[0]=='+'&&Recive_date[1]=='I')
  127.                 {
  128.                         if(Recive_date[9]=='0')LED_status=1;
  129.                         if(Recive_date[9]=='1')LED_status=0;
  130.                         if(Recive_date[9]=='2')beep_status=0;
  131.                         if(Recive_date[9]=='3')beep_status=1;
  132.                         Recive_flag = 0;
  133.                 }
  134.                 if(LED_status==1)LED2 = 1;
  135.                 else LED2 = 0;
  136.                 if(beep_status==1)beep = 0;
  137.                 else beep = 1;
  138.         }
  139. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:926694 發(fā)表于 2021-5-26 22:22 | 只看該作者
我上面的格式不對(duì),重新發(fā)一下
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

//sbit beep = P2^3;
sbit LED1 = P2^4;
sbit LED2 = P2^5;
#define MAIN_Fosc                11059200UL        //宏定義主時(shí)鐘HZ

uchar Recive_date[40]="";//接受數(shù)據(jù)
uchar Recive_flag = 0;//接收完成標(biāo)志

//1s延時(shí)
void delay1s(void)
{
    unsigned char a,b,c;
    for(c=13;c>0;c--)
        for(b=247;b>0;b--)
            for(a=142;a>0;a--);
    _nop_();
}

//us級(jí)延時(shí)
void us_delay(uchar t)
{  
        while(t--);
}

//串口中斷函數(shù)
void Uart_Interrupt(void) interrupt 4
{
/*        static char i=0;  //因?yàn)槭且晃灰晃唤邮眨杂胹tatic
        if(RI)
        {
                ES = 0;//關(guān)閉串口中斷
                RI = 0;//接收標(biāo)志位置零
                Recive_date[i] = SBUF;
                i++;
                if(Recive_date[i-1] == '\n')
                {
                        Recive_date[i] = '\0';
                        i = 0;
                        Recive_flag = 1;
                }
                ES = 1;//打開(kāi)串口中斷
        }
        else
                TI = 0;//響應(yīng)中斷后必須由軟件置零    */
        static uchar i=0;  
        if(RI==1)  
        {   
                RI=0;   
                ES = 0;//關(guān)閉串口中斷
                Recive_date[i]=SBUF;
                if((Recive_date[i]=='\n'))
                {                     
                        i=0;                        //遇到換行 重新裝值
                        Recive_flag = 1;//接收數(shù)據(jù)完畢
                }   
                else i++;
                ES = 1;//打開(kāi)串口中斷               
        }   
        else TI=0;  
}

//發(fā)送一個(gè)字節(jié)
void sendByte(uchar b)
{
        ES=0;                                   //關(guān)閉串口中斷  
        TI=0;                                   //清發(fā)送完畢中斷請(qǐng)求標(biāo)志位   
        SBUF=b;                                 //發(fā)送  
        while(TI==0);                           //等待發(fā)送完畢   
        TI=0;                                   //清發(fā)送完畢中斷請(qǐng)求標(biāo)志位   
        ES=1;
}

//發(fā)送字符串
void sendString(uchar *s)
{
         while(*s!='\0')                    //遇到空格跳出循環(huán)  
        {   
                sendByte(*s);                  //向WIFI模塊發(fā)送控制指令。   
                us_delay(5);
                s++;
        }  
        us_delay(5);  
        sendByte('\r');                         //回車(chē)  
        us_delay(5);  
        sendByte('\n');
}

//串口初始化
void Init_Uart(void)
{
        TMOD = 0x20;//8位自動(dòng)重裝
    SCON = 0x50;//8位數(shù)據(jù),波特率可變,方式1
    TH1 = 0xFD;
    TL1 = TH1;  //9600波特率
    PCON = 0x00;//波特率不加倍
    TR1 = 1;    //打開(kāi)定時(shí)器1
        EA = 1;                //打開(kāi)總中斷
        ES = 1;                //打開(kāi)串口中斷
}

//8266初始化
void esp_init(void)
{
        delay1s();
        sendString("AT");
        delay1s();
        delay1s();
        sendString("AT+CWMODE=3");
        delay1s();
        delay1s();
        sendString("AT+RST");
        delay1s();
        delay1s();
        sendString("AT+CWJAP=\"HONOR X10\",\"sxzwn.0717\"");
        delay1s();
        delay1s();
        delay1s();
        delay1s();
        delay1s();
        delay1s();
        delay1s();
        delay1s();
        delay1s();
        delay1s();
        sendString("AT+CIPMUX=1");
        delay1s();
        delay1s();
        sendString("AT+CIPSERVER=1,8080");
        delay1s();
        delay1s();
}



void main()
{
        uchar  LED_status=0;
        uchar  beep_status=0;
        LED1 = 0;
        LED2 = 0;
        Init_Uart();
        delay1s();
        delay1s();
        esp_init();
        LED1 = 1;
        delay1s();
        LED1 = 0;
        while(1)
        {
                if(Recive_flag==1&&Recive_date[0]=='+'&&Recive_date[1]=='I')
                {
                        if(Recive_date[9]=='0')LED_status=1;
                        if(Recive_date[9]=='1')LED_status=0;
                        if(Recive_date[9]=='2')beep_status=0;
                        if(Recive_date[9]=='3')beep_status=1;
                        Recive_flag = 0;
                }
                if(LED_status==1)LED2 = 1;
                else LED2 = 0;
                if(beep_status==1)LED1 = 0;
                else LED1 = 1;
        }
}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久九九九九九九 | 免费在线观看一区二区三区 | 色综合久久久久 | 二区三区视频 | 欧美日韩国产一区二区三区 | 99精品电影| 9191在线播放 | 欧美中国少妇xxx性高请视频 | 国产午夜精品一区二区三区 | 欧美精品一区三区 | 黄色欧美大片 | 久久久国产亚洲精品 | 国产区精品 | 久久久久成人精品免费播放动漫 | 国产视频精品区 | 91视频久久 | 在线观看国产视频 | 91精品国产92 | 日韩福利片 | 播放一级黄色片 | 欧美在线观看一区 | 国产欧美一区二区三区免费 | 你懂的免费在线 | 国产精品久久久久久久免费观看 | 91啪影院| 久久九精品 | 国产视频欧美 | 免费黄色a级毛片 | 精品久久久久久久人人人人传媒 | 99只有精品 | 欧美在线观看一区 | 黄视频免费在线 | 色又黄又爽网站www久久 | 免费精品 | 亚洲一区二区久久 | 精品久久久久久国产 | 日本成人午夜影院 | 日韩 欧美 综合 | 成人高清在线视频 | www天天操 | 免费日韩av网站 |