WiFi模块esp工作在路由模式(实时监测)

器材:51单片机、esp8266

接线方式:VCC-3V3、GND-GND、TX--RX、RX-TX

源码:

#include <REGX52.H>
#include <string.h>
#define SIZE 12                                      //好处直接改空定义数据即可
sfr AUXR = 0x8E;                                   //手册定义
sbit LED1 = P3^7;
sbit LED2 = P3^6;
char buffer[SIZE];
char WL_NET_flag = 0;                         //用于当联网标志位
char OK_NET_flag = 0;
char LICEN_NET_flag = 0;                   //连入服务成功标志位
char LWMS[] = "AT+CWMODE=2";      //路由器模式
char DLJ[] = "AT+CIPMUX=1";            //多连接
char JLFU[] = "AT+CIPSERVER=1";   // default port = 333连接服务器
char FSSJ[] = "AT+CIPSEND=0,5";    // 发送5个字节在连接0通道上
void Uart1_Init()                                  //串口初始化
{    AUXR = 0x01;                                //让波特率更加稳定,防止掉帧
    SCON = 0x50;                                //配置串口工作模式,REN为1则接收数据
    TMOD &= 0x0F;
    TMOD |= 0x20;                              //配置定时器为8位自动重装模式
    TL1 = 0xFD;
    TH1 = 0xFD;                                 //8位自动重装模式TH1存放的值自动存入TL1
    TR1 = 1;                                        //启动定时器
    ES = 1;                                          //串口中断打开
    EA = 1;
}

void Delay1000ms(void)                      //@11.0592MHz
{
    unsigned char data i, j, k;


    i = 8;
    j = 1;
    k = 243;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}
void senddate(char date)                //串口发出数据函数
{
    SBUF = date;
    while(!TI);                                   //直到等于1时发送成功,TI为0时变1发送成功;为1变0时不循环
        TI = 0;                                    //无时差                                            
}
void sendstring(char* str)               //传入字符串
{
    while(*str != '\0')
    {
        senddate(*str);                    //将字符串打印出来
        str++;                                    //地址偏移
    }
}


void main()

    
    LED1 = 1;
    LED2 = 1;
    Uart1_Init();
    Delay1000ms();
    sendstring(LWMS);
    while(!OK_NET_flag);
    OK_NET_flag = 0;
    sendstring(DLJ);
    while(!OK_NET_flag);
    OK_NET_flag = 0;
    sendstring(JLFU);
    while(!LICEN_NET_flag);
    OK_NET_flag = 0;
    if(LICEN_NET_flag == 1)
    {
            LED1 = 0;
            LED2 = 0;
    }                                             //路由模式成功标志显示
    while(1)
    {
        sendstring(FSSJ);
        Delay1000ms();
            Delay1000ms();
        sendstring("hello");
    Delay1000ms();
        Delay1000ms();
    }    
}


void UART_Routine()   interrupt 4                                   //串口中断
{
            static int i = 0;
            char tmp;
            if(RI==1) 
            {
            
            RI=0;                                                                    //手动复位                                                                                        
            tmp = SBUF;                                                            
                if(tmp == 'W'||tmp == 'O'||tmp == 'L'||tmp == 'F'||tmp == ':')
            {
                    i = 0;
            }
            buffer[i] = tmp;                                                 //做个假数据为了确定字符不移位
            i++;
            if(buffer[0] == 'W' && buffer[5] == 'G')
            {
                WL_NET_flag = 1;
                memset(buffer,'\0',SIZE);                            //清0;便于OK的查找
            }
            if(buffer[0] == 'O' && buffer[1] == 'K')
            {
                OK_NET_flag = 1;
                memset(buffer,'\0',SIZE);    
            }
            
            
            if(buffer[0] == ':' && buffer[1] == 'o'&&buffer[1] == 'p')
            {
                LED1 = 0;
                memset(buffer,'\0',SIZE);    
            }
            
            if(buffer[0] == ':' && buffer[1] == 'c'&& buffer[1] == 'l')
            {
                LED1 = 1;                                                            //为了查找联网状态给的回应
                memset(buffer,'\0',SIZE);                                    //一旦查到就会转到中断
            }
            if(i == 12)
            {
                i = 0;
            }
        }
    }
————————————————

                           

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值