用的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 () ; } }
希望能得到大家的帮助,谢谢 |