欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: ESP8266程序只能通過發送AT,后續指令會卡住 [打印本頁]

作者: fairykid    時間: 2023-6-6 14:01
標題: ESP8266程序只能通過發送AT,后續指令會卡住
運行到紅線再向下就不動了,之前為了檢查是哪一條開始卡住,在每條指令間插入了小燈亮滅,也就是觀察到了亮、滅
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED = P1^3;u8 dat;
sbit LED1 = P1^2;
void Init(void);//串口初始化函數
void Delay_ms(u16 n);//延時子函數
void Sent_ZF(u8 dat);//發送一個字節
void AT_Send_String(u8 *string);//發送字符串
void ESP8266_Init();//ESP8266初始化
void Init(void)                //串口初始化函數
{
        TMOD = 0x20;        //定時器工作方式2,8位自動重載(0010 0000)
        TL1 = 0xfd;                //裝入初值
        TH1 = 0xfd;               
        TR1 = 1;        //啟動定時器1
        REN=1;    //允許串行口接收數據
        SM0=0;    //工作方式1,10位異步收發
        SM1=1;   
        EA = 1;   //打開全局中斷控制
        ES=1;     //打開串行口中斷
}

void main()
{
    Init();
    ESP8266_Init();
    while(1);
}

void Sent_ZF(u8 dat)  //發送一個字節
{
        ES = 0;
        TI=0;
        SBUF = dat;
        while(!TI);
        TI = 0;
        ES = 1;
}
void Delay_ms(u16 n)
{
        unsigned int i,j;
        for(i=0;i<n;i++)
        for(j=0;j<123;j++);
}

void AT_Send_String(u8 *string)  //發送字符串
{
  while(*string)
  {
    Sent_ZF(*string++);
                Delay_ms(5);
  }

}
void ESP8266_Init()   //esp82663?ê??ˉ
{        LED1=1;
  Delay_ms(1000);
        Delay_ms(1000);
        AT_Send_String("AT\r\n"); //測試AT指令
        Delay_ms(1000);
        Delay_ms(1000);
  LED1=0;
        AT_Send_String("AT+CWSAP=xhwang2019,12345678\r\n"); //  
        Delay_ms(1000);
        Delay_ms(1000);
        LED1=1;


}
void InterruptUART() interrupt 4   
{
        RI = 0;        //清零
        dat = SBUF;    //收到的數據占存到SBUF中
          {
         if(dat=='o')
                                 {
                                         LED =0;   
                                 }
                                 if(dat=='f')  
                                 {                                                 
                                    LED =1;
                                 }                                         
          }
}


Snipaste_2023-06-06_13-59-25.jpg (20.37 KB, 下載次數: 35)

Snipaste_2023-06-06_13-59-25.jpg

作者: munuc_w    時間: 2023-6-6 14:27
ESP8266進入AT模式后只接收AT格式的指令。
作者: yzwzfyz    時間: 2023-6-6 15:25
看看通訊協議手冊上怎么說。
作者: fairykid    時間: 2023-6-6 16:21
munuc_w 發表于 2023-6-6 14:27
ESP8266進入AT模式后只接收AT格式的指令。

程序中確實是發送的at指令字符串,并且找了很多例程也沒用
作者: cnos    時間: 2023-6-6 18:52
目測串口初始化的問題,直接用STC的ISP軟件生成一個串口初始化程序試試
應該是Send_ZF函數卡住了
作者: 597329015    時間: 2023-6-6 22:09
根據您提供的代碼,我注意到您的主程序中只初始化了串口和 ESP8266 模塊,并在循環中實現了空操作。而在串口中斷處理函數中,根據輸入的字符 'o' 和 'f' 分別控制了 LED 燈的亮滅。

由于沒有詳細的說明和注釋,我無法判斷代碼在運行時是否存在問題,調試代碼建議您使用單步跟蹤和調試工具來分析問題的根本原因。

另外需要注意的是,在 ESP8266 模塊初始化代碼中,您發送了 AT 指令和設置了 ESP8266 的無線熱點名稱和密碼。如果想要正常連接無線網絡,還需要進一步配置相應的參數,例如 IP 地址、網關、子網掩碼等。
作者: 123156fsadf    時間: 2023-6-7 08:46
597329015 發表于 2023-6-6 22:09
根據您提供的代碼,我注意到您的主程序中只初始化了串口和 ESP8266 模塊,并在循環中實現了空操作。而在串 ...

8266只需要發送無線名和密碼就可以了,其他的路由器自動分配的。不過他的void AT_Send_String(u8 *string)  //發送字符串
{
  while(*string)
  {
    Sent_ZF(*string++);
                Delay_ms(5);
  }

}函數,發一個字節就延時5ms,會導致8266將一字節當作一幀數據,從而導致無法正確處理AT指令吧。
還有就是8266要配置成單連接模式,client模式等,AT指令好像有所缺失
作者: 123156fsadf    時間: 2023-6-7 08:48
597329015 發表于 2023-6-6 22:09
根據您提供的代碼,我注意到您的主程序中只初始化了串口和 ESP8266 模塊,并在循環中實現了空操作。而在串 ...

我又看了一下,他應該是要配成ap模式,那就缺了這條AT指令,以及缺失TCP偵聽端口信息。
作者: 51hei**1140    時間: 2023-6-7 13:20
建議你采用透傳模式下的ESP8266,避免繁瑣的AT指令設置,透傳方式更穩定切方便快捷




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1