标题:
ESP8266如何检测透传模式下单片机读取接收到的数据 求帮助
[打印本页]
作者:
duhuan502
时间:
2018-7-31 17:54
标题:
ESP8266如何检测透传模式下单片机读取接收到的数据 求帮助
ESP8266:如何检测透传模式下单片机读取接收到的数据
用51做的用手机控制单片机驱动步进电机,想问问怎么检测ESP8266收到了信息,我设置了一个LED亮灭来检测,发现只在发送AT指令时有效果,而在透传模式传送数据没作用,求教。
程序如下,暂时将输出PWM注释了
单片机源程序如下:
#include <reg52.H>
#include <stdio.h>
#define MAIN_Fosc 11059200UL //宏定义主时钟HZ
unsigned int a;
typedef unsigned char INT8U;
typedef unsigned char uchar;
typedef unsigned int INT16U;
int b=1;
int c =1;
int d =1;
int e=1;
int f=0;
int i;
INT8U t=0;
INT8U Freq=22;
INT8U PWM_T = 9;
sbit LED1 = P1^0;
sbit down = P3^0;
sbit up = P3^1;
void Delay_Ms(INT16U ms)
{
INT16U i;
do
{
i = MAIN_Fosc / 96000;
while(--i); //96T per loop
}while(--ms);
}
//PWM初始化
void pwm_Init()
{
TMOD = 0x02; //定时器0,工作模式2,8位定时模式
TH0=210; //写入预置初值(取值1-255,数越大PWM频率越高)
TL0=210; //写入预置值 (取值1-255,数越大PWM频率越高)
TR0=1; //启动定时器
ET0=1; //允许定时器0中断
EA=1; //允许总中断
P1=0xFF; //初始化P1,输出端口
PWM_T=Freq/2;
}
//串口初始化
void Uart_Init()
{
PCON |=0X80; //是否波特率倍增
SCON=0x50;
TMOD=0X20; //设置定时器1为模式2,做为波特率发生器
TL1=0xFF; //57600波特率的初值,板子使用11.592M晶振,初值=256-12000000/32/12/2400
TH1=0xFF; //
TI = 1;
TR1=1; //启动波特率发生
}
void main(void)
{
unsigned char ldat;
// pwm_Init();
Uart_Init();
//设置串口方式2
do
{
for (a=0; a<50000; a++);
printf ("AT+CIPMUX=1\n");
do
{
if(RI)
{ //查询是否有数据接收
LED1=~LED1;//用LED来检测是否收到数据
ldat=SBUF; //数据暂存于变量中
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<50000; a++);
printf ("AT+CIPSERVER=1,7671\n");
do
{
if(RI)
{
ldat=SBUF; //数据暂存于变量中
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;
while(1)
{
if(RI){ //查询是否有数据接收
ldat=SBUF; //数据暂存于变量中
RI=0; //重新清0等待接收
//命令接收开始
if (ldat=='}')
{
char k[50] ;
do
{
if(RI)
{
//查询是否有数据接收
ldat=SBUF; //数据暂存于变量中
RI=0; //重新清0等待接收
k[f]=ldat;
f++;
if(ldat==0x0A)
{ e=0; }
}
}while (e);
printf("%s\n", k);
f=0;
e=1;
for(a=0; a<50; a++)
{
k[a]=0;
}
}
//命令结束
}
//电机驱动
// if(!up)
// {
// if(Freq<60)
// {
// Freq+=1;
// PWM_T=Freq/2;
// }
//
// Delay_Ms(10);
// }
//
// if(!down)
// {
// if(Freq>1)
// {
// Freq-=1;
// PWM_T=Freq/2;
// }
//
// Delay_Ms(10);
// }
}
}
/****************************************************
/定时器0中断模拟PWM
****************************************************/
timer0() interrupt 1
{
t++; //每次定时器溢出加1
if(t==Freq) //PWM周期 100个单位
{
t=0; //使t=0,开始新的PWM周期
P1=0x00; //输出端口
}
if(PWM_T==t) //按照当前占空比切换输出为高电平
{
P1=0xff; //
}
}
复制代码
所有资料51hei提供下载:
ESP8266:如何检测透传模式下单片机读取接收到的数据.docx
(13.14 KB, 下载次数: 16)
2018-7-31 17:53 上传
点击文件名下载附件
作者:
diy1997
时间:
2018-8-1 09:24
esp8266用做收发模块?
只要设置正确并连接后,收到数据就会通过串口发送出来的吧?
作者:
zhj0712
时间:
2019-1-27 15:11
我也是这种情况 AT的OK 透传的读不到数据,,楼主解决了吗
作者:
1876476642
时间:
2019-9-30 21:50
AT模式下不能透传
作者:
xiuyueyuan2013
时间:
2019-10-3 01:45
可能就是没收到数据,收到一个字节的数据RI也会置位
作者:
天涯飞
时间:
2020-3-7 21:15
1876476642 发表于 2019-9-30 21:50
AT模式下不能透传
可以的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1