#include<reg52.h>
/*此程序是手机连接ESP8266模块以后向模块发送字符K,控制LED的翻转*/
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED = P2^3;u8 dat;
void ConfigUART(u16 buad);//串口通信初始化函数,buad为单片机设置的波特率。
void Delay_ms(u16 n);
void Uart_Send_String(u8 *string);//串口发送多个字节。
void Delay_Us(u8 us);
void Sent_UART(u8 dat);//串口发送一个字节
void ESP8266_Init();//ESP8266初始化
void main()
{
EA = 1;
ConfigUART(9600);
ESP8266_Init();
while(1);
}
void ConfigUART(u16 buad)
{
SCON = 0x50;
TMOD &= 0X0F;
TMOD |= 0x20;
TH1 = 256 - (11059200/12/32)/buad;
TL1 = TH1;
ET1 = 0;
TR1 = 1;
}
void Sent_UART(u8 dat)
{
ES = 0;
TI=0;
SBUF = dat;
while(!TI);
TI = 0;
ES = 1;
}
void Delay_Us(u8 us)
{
while(us--);
}
void Delay_ms(u16 n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
void Uart_Send_String(u8 *string)
{
while(*string)
{
Sent_UART(*string++);
Delay_Us(5);
}
}
void ESP8266_Init()
{
Uart_Send_String("AT\r\n");
Delay_ms(1000);
Delay_ms(1000);
Uart_Send_String("AT\r\n");
Delay_ms(1000);
Delay_ms(1000);
Uart_Send_String("AT+CIPMUX=1\r\n");
Delay_ms(1000);
Delay_ms(1000);
Uart_Send_String("AT+CIPSERVER=1,8080\r\n");
}
void InterruptUART() interrupt 4
{
if (RI) //接收到字节
{
RI = 0; //手动清零接收中断标志位
dat = SBUF; //接收到的数据保存到接收字节变量中
if(dat=='k')
{
LED = ~LED;
} //接收到的数据又直接发回,叫作-"echo",
//用以提示用户输入的信息是否已正确接收
}
if (TI) //字节发送完毕
{
TI = 0; //手动清零发送中断标志位
}
}