esp8266+c51编程问题,在WIFI_Init()里面用printf就好使,用自己写的ESP8266_Set()就不好使
求大神赐教!!!!!!!
#include <reg52.h>
#include <string.h>
#include <stdio.h>
char Recive_table[20]=""; //鐢ㄤ簬鎺ユ敹wifi妯″潡鍙嶉鍒癕CU涓婄殑鏁版嵁
char Recive_state = 0;
void ms_delay(int t)
{
int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
void us_delay(char t)
{
while(t--);
}
void LED(void)
{
P1 = 0;
ms_delay(100);
P1 = 0xff;
ms_delay(100);
}
void WIFI_Init(void)
{
TI = 1;
//ESP8266_Set("AT+RST");
printf("AT+RST\r\n");
LED();
ms_delay(1000) ;
//ESP8266_Set("AT+CWMODE=3");
printf("AT+CWMODE=3\r\n");
LED();
ms_delay(1000) ;
//ESP8266_Set("AT+CIPMUX=1");
printf("AT+CIPMUX=1\r\n");
LED();
ms_delay(1000) ;
//ESP8266_Set("AT+CIPSERVER=1,8080");
printf("AT+CIPSERVER=1,8080\r\n");
LED();
ms_delay(1000) ;
while(!TI);
TI = 0;
ES = 1;
}
void Send_Uart(char value)
{
ES=0; //关闭串口中断
TI=0; //清发送完毕中断请求标志位
SBUF=value; //发送
while(TI==0); //等待发送完毕 TI=0; //清发送完毕中断请求标志位
ES=1; //允许串口中断
}
void ESP8266_Set(char *puf) // 数组指针*puf指向字符串数组
{
while(*puf!='\0') //遇到空格跳出循环
{
Send_Uart(*puf); //向WIFI模块发送控制指令。
us_delay(5);
puf++;
}
us_delay(5);
Send_Uart('\r'); //回车
us_delay(5);
Send_Uart('\n'); //换行
ms_delay(1000);
}
void Uart_Init(void)//浣跨敤瀹氭椂鍣?浣滀负娉㈢壒鐜囧彂鐢熷櫒
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=0;
}
int main (void)
{
int num = 0;
Uart_Init();
ms_delay(1000) ;
WIFI_Init();
while(1)
{
if(Recive_state == 1)
{
ES=0; //鍏抽棴涓插彛涓柇
// while(Recive_table[num] != '\0')
// {
// TI=0; //娓呭彂閫佸畬姣曚腑鏂姹傛爣蹇椾綅
// SBUF=Recive_table[num]; //鍙戦//
// while(TI==0); //绛夊緟鍙戦
// TI=0; //清发送完毕中断请求标志位
// num++;
// }
// num = 0;
// memset(Recive_table,'\0',20);
LED();
Recive_state = 0;
ES=1; //允许串口中断
}
}
}
void Uart_Interrupt() interrupt 4
{
static char i=0;
if(RI==1)
{
RI=0;
Recive_table[i]=SBUF;
i++;
if((Recive_table[i-1]=='\n'))
{
i=0;
Recive_state = 1;
}
}
else
TI = 0;
} |