標(biāo)題:
c51單片機(jī)執(zhí)行ESP8266遠(yuǎn)程命令詳解
[打印本頁]
作者:
1035539847
時間:
2016-11-28 15:21
標(biāo)題:
c51單片機(jī)執(zhí)行ESP8266遠(yuǎn)程命令詳解
/***************************************************************************
c51單片機(jī),遠(yuǎn)程命令詳解
******************************************************************************/
#include <AT89X51.H>
#include <stdio.h>
unsigned int a;
int b=1;
int c =1;
int d =1;
int e=1;
int f=0;
void main(void)
{
unsigned char ldat;
//PCON |=0X80; //是否波特率倍增
SCON=0x50;
TMOD=0X20; //設(shè)置定時器1為模式2,做為波特率發(fā)生器
TL1=0xFD; //9600波特率的初值,板子使用11.592M晶振,初值=256-12000000/32/12/2400
TH1=0xFD; //
TI = 1;
TR1=1; //啟動波特率發(fā)生
//設(shè)置串口方式2
do{
for (a=0; a<50000; a++); //延時幾秒,讓模塊有時間啟動
printf ("AT+CIPMUX=1\n"); //發(fā)送命令A(yù)T+CIPMUX=1,讓模塊進(jìn)入多連接模式
if(RI){ //查詢是否有數(shù)據(jù)接收
ldat=SBUF; //數(shù)據(jù)暫存于變量中
RI=0;
if (ldat=='K')//命令執(zhí)行成功,就會返回OK,這里就是查詢是否有K返回,若有K返回,就說明執(zhí)行成功,可以執(zhí)行下一條,否則繼續(xù)循環(huán)
{b=0 ;
d=0;}
c++;
if (c==1000)
{c=1;
d=0;}}
}while (d);
}while(b) ;
b=1;
c =1;
d =1;//b、c、d復(fù)位,便于執(zhí)行下一條命令
do{
for (a=0; a<10000; a++);
printf ("AT+CIPSERVER=1,7671\n");
do{
if(RI){ //查詢是否有數(shù)據(jù)接收
ldat=SBUF; //數(shù)據(jù)暫存于變量中
RI=0;
if (ldat=='K')//同上
{b=0 ;
d=0;}
c++;
if (c==1000)
{c=1;
d=0;}}
}while (d);
}while(b) ;
b=1;
c =1;
d =1;
do{
for (a=0; a<10000; a++);
printf ("AT+CIPSTO=50\n");
do{
if(RI){ //查詢是否有數(shù)據(jù)接收
ldat=SBUF; //數(shù)據(jù)暫存于變量中
RI=0;
if (ldat=='K')//同上
{b=0 ;
d=0;}
c++;
if (c==1000)
{c=1;
d=0;}}
}while (d);
}while(b) ;
b=1;
c =1;
d =1;
//執(zhí)行上述命令,模塊進(jìn)入服務(wù)模式,下面單片機(jī)就可以接收遠(yuǎn)程發(fā)來的數(shù)據(jù)
while(1)
{
if(RI){ //查詢是否有數(shù)據(jù)接收
ldat=SBUF; //數(shù)據(jù)暫存于變量中
RI=0; //重新清0等待接收
//命令接收開始
if (ldat=='}')
{ char k[50] ;//設(shè)置接收數(shù)據(jù)緩沖
do{
if(RI){ //查詢是否有數(shù)據(jù)接收
ldat=SBUF; //數(shù)據(jù)暫存于變量中
RI=0; //重新清0等待接收
k[f]=ldat;//一個個字符接收
f++ ;
if(ldat==0x0A){e=0;} //若有新行字符,則結(jié)束接收,則說明命令接收完畢
}
} while (e) ;
printf("%s\n", k);//執(zhí)行遠(yuǎn)程發(fā)來的命令
f=0;
e=1;
for (a=0; a<50; a++){
k[a]=0;
}
}
//命令結(jié)束
if (ldat==']')
{P1_4=1;
printf ("AT+CIPSEND=0,1\n");
for (a=0; a<10000; a++);
printf ("A");
}
if (ldat=='-')
{P1_4=!P1_4;
}
if (ldat=='[')
{P1_4=0;
printf ("AT+CIPSEND=0,1\n");
for (a=0; a<10000; a++);
printf ("B");
}
if (ldat=='{')
{
if(P1_4==0){
printf ("AT+CIPSEND=0,1\n");
for (a=0; a<10000; a++);
printf ("B");
}
else{
printf ("AT+CIPSEND=0,1\n");
for (a=0; a<10000; a++);
printf ("A");
}
}
}
}
}
作者:
stc0079
時間:
2017-8-14 15:19
記下來,當(dāng)資料查看
作者:
ywzlq
時間:
2017-8-22 08:51
感謝樓主分享!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1