|
我上面的格式不對,重新發(fā)一下
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//sbit beep = P2^3;
sbit LED1 = P2^4;
sbit LED2 = P2^5;
#define MAIN_Fosc 11059200UL //宏定義主時鐘HZ
uchar Recive_date[40]="";//接受數(shù)據(jù)
uchar Recive_flag = 0;//接收完成標志
//1s延時
void delay1s(void)
{
unsigned char a,b,c;
for(c=13;c>0;c--)
for(b=247;b>0;b--)
for(a=142;a>0;a--);
_nop_();
}
//us級延時
void us_delay(uchar t)
{
while(t--);
}
//串口中斷函數(shù)
void Uart_Interrupt(void) interrupt 4
{
/* static char i=0; //因為是一位一位接收,所以用static
if(RI)
{
ES = 0;//關(guān)閉串口中斷
RI = 0;//接收標志位置零
Recive_date[i] = SBUF;
i++;
if(Recive_date[i-1] == '\n')
{
Recive_date[i] = '\0';
i = 0;
Recive_flag = 1;
}
ES = 1;//打開串口中斷
}
else
TI = 0;//響應(yīng)中斷后必須由軟件置零 */
static uchar i=0;
if(RI==1)
{
RI=0;
ES = 0;//關(guān)閉串口中斷
Recive_date[i]=SBUF;
if((Recive_date[i]=='\n'))
{
i=0; //遇到換行 重新裝值
Recive_flag = 1;//接收數(shù)據(jù)完畢
}
else i++;
ES = 1;//打開串口中斷
}
else TI=0;
}
//發(fā)送一個字節(jié)
void sendByte(uchar b)
{
ES=0; //關(guān)閉串口中斷
TI=0; //清發(fā)送完畢中斷請求標志位
SBUF=b; //發(fā)送
while(TI==0); //等待發(fā)送完畢
TI=0; //清發(fā)送完畢中斷請求標志位
ES=1;
}
//發(fā)送字符串
void sendString(uchar *s)
{
while(*s!='\0') //遇到空格跳出循環(huán)
{
sendByte(*s); //向WIFI模塊發(fā)送控制指令。
us_delay(5);
s++;
}
us_delay(5);
sendByte('\r'); //回車
us_delay(5);
sendByte('\n');
}
//串口初始化
void Init_Uart(void)
{
TMOD = 0x20;//8位自動重裝
SCON = 0x50;//8位數(shù)據(jù),波特率可變,方式1
TH1 = 0xFD;
TL1 = TH1; //9600波特率
PCON = 0x00;//波特率不加倍
TR1 = 1; //打開定時器1
EA = 1; //打開總中斷
ES = 1; //打開串口中斷
}
//8266初始化
void esp_init(void)
{
delay1s();
sendString("AT");
delay1s();
delay1s();
sendString("AT+CWMODE=3");
delay1s();
delay1s();
sendString("AT+RST");
delay1s();
delay1s();
sendString("AT+CWJAP=\"HONOR X10\",\"sxzwn.0717\"");
delay1s();
delay1s();
delay1s();
delay1s();
delay1s();
delay1s();
delay1s();
delay1s();
delay1s();
delay1s();
sendString("AT+CIPMUX=1");
delay1s();
delay1s();
sendString("AT+CIPSERVER=1,8080");
delay1s();
delay1s();
}
void main()
{
uchar LED_status=0;
uchar beep_status=0;
LED1 = 0;
LED2 = 0;
Init_Uart();
delay1s();
delay1s();
esp_init();
LED1 = 1;
delay1s();
LED1 = 0;
while(1)
{
if(Recive_flag==1&&Recive_date[0]=='+'&&Recive_date[1]=='I')
{
if(Recive_date[9]=='0')LED_status=1;
if(Recive_date[9]=='1')LED_status=0;
if(Recive_date[9]=='2')beep_status=0;
if(Recive_date[9]=='3')beep_status=1;
Recive_flag = 0;
}
if(LED_status==1)LED2 = 1;
else LED2 = 0;
if(beep_status==1)LED1 = 0;
else LED1 = 1;
}
} |
|