赞
踩
目录
Esp8266-01s作为路由器时用指令:AT+CIFSR查询ip地址。
AT + CWMODE = 2 //2.路由器Response : OK //结果
AT + CIPMUX = 1 //指令Response : OK //结果
+IPD, 0, n: xxxxxxxxxx //+IPD是固定字符串 0是通道,n是数据长度,xxx是数据
AT + CIPCLOSE = 0 //指令Response : 0 , CLOSED OK //结果
- #include "reg52.h"
- #include<intrins.h>
- #include<string.h>
- #define SIZE 12
-
- sbit led1=P3^7;
-
-
- sfr AUXR=0x8E;
- char buffer[SIZE];
-
- char PZSM[] ="AT+CWMODE=2\r\n";//1 配置路由器
- char SNDLJ[]="AT+CIPMUX=1\r\n";//2 使能多个连接
- char JLFWQ[] ="AT+CIPSERVER=1\r\n";//3 建立TCPServer
- char FSSJ[]="AT+CIPSEND=0,5\r\n"; //4 发送数据
-
-
- char AT_OK_Flag=0;
- char AT_Connect_Net_flag=0;
- char Client_Connect_flag=1;
-
- void Delay1000ms() //@11.0592MHz
- {
- unsigned char i, j, k;
-
- _nop_();
- i = 8;
- j = 1;
- k = 243;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
-
-
- void UartInit(void) //9600bps@11.0592MHz
- {
- SCON=0x50;//配置串口方式1,REN使
- TMOD &= 0xF0;
- TMOD|=0x20;//配置定时器1模式8位自动
- TH1 =0xFD;
- TL1 =0xFD;//9600的波特率
- TR1=1;//启动定时器
- AUXR=0x01;
- EA=1;//打开总中断
- ES=1;//打开串口中断
-
- }
-
- void sendByte(char data_msg)
- {
- SBUF=data_msg;
- while(TI==0);//发送中断
- TI=0;
- }
-
- void sendstring(char *str)
- {
- while(*str!='\0')
- {
- sendByte(*str);
- str++;
- }
-
- }
- void main()
- {
- int mark=0;
- led1=1;//灭灯状态
- //配置C51串口的通信方式
- UartInit();
- Delay1000ms();//给wifi模块上电时间
- //发送路由器模式指令并等待成功
- sendstring(PZSM);
- while(!AT_OK_Flag);
- AT_OK_Flag = 0;
- //发送使能多个连接指令并等待成功
- sendstring(SNDLJ);
- while(!AT_OK_Flag);
- AT_OK_Flag=0;
- //发送建立TCPServer指令并等待成功
- sendstring(JLFWQ);
- while(!AT_OK_Flag);
- AT_OK_Flag=0;
- //发送数据传输指令并等待成功
- while(Client_Connect_flag)
- {led1=0;//点亮led1,等待clinet连接
- }
- sendstring(FSSJ);
- while(!AT_OK_Flag);
-
-
- if(AT_OK_Flag)
- {
- led1=0;//点亮led1,代表建立服务器成功,同时可以发数据
- Delay1000ms();
- Delay1000ms();
- led1=1;
- }
- while(!Client_Connect_flag)
- {
- Delay1000ms();
- //往发送缓冲区写入数据,就完成数据得发送
- Delay1000ms();
- Delay1000ms();
- sendstring("hello\r\n");
- Delay1000ms();
- Delay1000ms();
-
- }
-
-
-
- }
- void Uart_Handler() interrupt 4
- {
- char tmp;
- static int i=0;//静态变量,被初始化一次
- if(RI)//中断处理函数中,对于接收中断的响应
- {
- RI=0;
- tmp=SBUF;//一个字母一个字母的输入
- //tmp=='W'||tmp=='O'||tmp=='L'||tmp=='F'
- if(tmp=='O'|| tmp=='0'||tmp=='P')
- {
- i=0;
- }
- buffer[i++]=tmp;
- //OK返回值指令的判断
- if(buffer[0]=='O'&& buffer[1]=='K')
- {
- AT_OK_Flag=1;
- memset(buffer,'\0',SIZE);
- }
- if(buffer[0]=='0'&& buffer[2]=='C')
- {
- Client_Connect_flag =0;
- led1=1;//表示Clinet连接
- memset(buffer,'\0',SIZE);
- }
-
- //灯控指令
- if(buffer[0]=='P'&& buffer[1]=='1')
- {
- led1=0;//点亮了led1
- memset(buffer, '\0', SIZE);
- }
- if(buffer[0]=='P'&& buffer[1]=='2')
- {
- led1=1;//熄灭led1
- memset(buffer, '\0', SIZE);
- }
-
- if(i==12)
- {
- i=0;
- }
- }
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。