89C52单片机用串口AT指令配置ESP8266WIFI模块

main.c

#include 


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;
 }
}

你可能感兴趣的:(51)