用的51是普眾科技的開發版,esp8266波特率也調到4800.RX,TX等鏈接正常。
程序如下希望大神能幫我看看
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay1ms(void) //誤差 0us
{ unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);}
void sendByte(uchar b) //發送一個字節
{ SBUF = b; while(!TI); TI=0;}
//發送字符串
void sendString(uchar *s){
while(*s != '\0') //字符串默認 結尾'\0',以此來判斷字符串的結束
{ sendByte(*s); s++; }}
//初始化ESP8266WiFi模塊
void initEsp(){ uint a; SCON = 0x50; //8位數據,可變波特率
TMOD = 0x20; //設置定時器1工作方式2
TL1 = 0xf3; //設置定時器初值,波特率為4800
TH1 = 0xf3;
ET1 = 0; //禁止定時器1中斷
ES=1; //打開接收中斷
TR1 = 1; //啟動定時器1
EA = 1;
for (a=0; a<50000; a++); //延時幾秒,讓模塊有時間啟動
sendString("AT+CWMODE=1\n");
for (a=0; a<50000; a++); //延時幾秒,讓模塊有時間啟動
sendString("AT+RST\n"); //重啟生效
for (a=0; a<50000; a++); sendString("AT+CIPMUX=1\n"); //啟動多連接 for (a=0; a<20000; a++); sendString("AT+CIPSERVER=1,333\n");//建立server,端口為333
for (a=0; a<20000; a++); sendString("AT+CIPSTO=50\n"); //服務器超時時間設置
RI=0;
ES=1; //初始化完成,串行口中斷打開}
void Datatransfer ()
{ uint a;
SCON = 0x50; //8位數據,可變波特率
TMOD = 0x20; //設置定時器1位16位自動重裝模式
TL1 = 0xf3; //設置定時器初值,波特率為4800
TH1 = 0xf3;
ET1 = 0; //禁止定時器1中斷
ES=1; //打開接收中斷 TR1 = 1; //啟動定時器1
EA = 1;
for (a=0; a<20000; a++); sendString("AT+CIPSTART=0,'TCP','192.168.4.2',5000\n");//建立server,端口為333
for (a=0; a<20000; a++); sendString("AT+CIPSEND=0,19\n");//確定發送的長度
for (a=0; a<20000; a++);
sendString("Sent to the Android\n");//確定發送的數據
RI=0;
ES=1; //初始化完成,串行口中斷打開 }
//主函數
void main()
{ initEsp();
while(1){ delay1ms() ;
Datatransfer () ; } }
希望能得到大家的幫助,謝謝 |