main.c
#include <reg52.h>
bit flagtxd=0;//发送单个字符成功标志
unsigned char rxdbyte=0;//接收变量
void Uart1_SendChar(unsigned char Udat)//发送单个字符函数
{
flagtxd=0;
SBUF=Udat; //将要发送的数据放入串口数据缓冲区
while(!flagtxd); //等待发送完成
}
void putchar(char c)
{
Uart1_SendChar(c);
}
void printf(unsigned char *p)//自编printf函数,非官方的那个函数
{
while(*p!='\0')
{
putchar(*p++);
}
}
void InitUART(unsigned int baud)//串口初始化
{
SCON = 0x50; //串口接收使能
TMOD&=0x0F;
TMOD|=0x20;
TH1=256-(11059200/12/32)/baud;
TL1=TH1;
ET1=0;
ES = 1; //串口中断使能
TR1 = 1; //定时器1使能
}
//毫秒延时函数
void delay_ms(unsigned int t)
{
unsigned char a,b;
while(t--)
{
for(b=102;b>0;b--)
for(a=3;a>0;a--);
}
}
void InitESP8266()//ESP8266初始化,延时时间是不合适的,你们自己调整一下
{
printf("AT\r\n"); //测试
delayms(1200); //适当延时,给wifi模块一点反应时间
printf("AT+CWMODE=1\r\n"); //选择STA模式
delayms(1200);
printf("AT+RST\r\n"); //往串口发重启指令
delayms(1200); //适当延时,给wifi模块一点反应时间
printf("AT+CWJAP=\"wifi\",\"123456\"\r\n"); //连接WIFI
delayms(1200);
printf("AT+CIPMUX=0\r\n"); //单通道模式
delayms(1200);
printf("AT+CIPSTART=\"TCP\",\"192.168.1.118\",6666\r\n"); //连接远程主机IP和端口号
delayms(1200);
printf("AT+CIPMODE=1\r\n"); //选择透传
delayms(1200);
printf("AT+CIPSEND\r\n"); //发送数据命令
delayms(1200);
}
void main()
{
InitUART(9600); //初始化串口
InitESP8266();
EA = 1; //开总中断
while(1);
}
/*UART中断函数*/
void interruptUART() interrupt 4
{
if(RI)
{
RI=0;
rxdbyte=SBUF;
SBUF=rxdbyte;//将收到的数据回传回去,可以自己对返回数据做判断,执行动作
}
if(TI)
{
TI=0;
flagtxd=1;
}
}