找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4884|回复: 3
打印 上一主题 下一主题
收起左侧

ESP8266为什么和单片机连接后会自动不停的发送信息呢求大神帮我看下

[复制链接]
跳转到指定楼层
楼主
ID:184257 发表于 2017-3-29 21:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我把ESP8266模块用电脑发送AT指令倒是很正常工作,可是接到单片机上过后它把AT指令执行完过后,它就会一直向串口发送数据,,这是为什么,,,源码写的有点乱刚学没有多久,,,,希望大家可以帮帮我
#include <reg52.h>
#include<string.h>
#define uchar unsigned char
#define uint  unsigned int
void Send_Hex(uchar b);
void Send_ASCII(uchar *b);
void CLR_Buf(void);
sbit led=P1^0;
int Buf_Max;
char Rec_Buf[20],t;
void delay(uint z)
{
        uint x,y;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);
}       
void UART_init()
{
/*        TMOD = 0x20;          //T1工作模式2  8位自动重装
        TH1 = 0xfd;
        TL1 = 0xfd;         //比特率9600
        TR1 = 1;                //启动T1定时器
        SM0 = 0;
        SM1 = 1;                 //串口工作方式1 10位异步
        REN = 1;                //串口允许接收
        EA  = 0;                //关总中断
        ES  = 0;                //串口中断关闭         */
        TMOD = 0x20;
        SCON = 0x50;
        TH1 = 0xFD;
        TL1 = TH1;
        PCON = 0x00;
        EA = 0;
        ES = 0;
        TR1 = 1;
}
void main()
{
        UART_init(); //串口初始化
        delay(3000);
        Send_ASCII("AT"); //发送联机指令
    Send_Hex(0x0d); //发送回车符
    Send_Hex(0x0a); //发送换行符
        delay(3000);
        CLR_Buf();//清除返存
        Send_ASCII("AT+CWJAP=lify5288,q16888888"); //发送联机指令
    Send_Hex(0x0d); //发送回车符
    Send_Hex(0x0a); //发送换行符
        delay(10000);
        CLR_Buf();//清除返存
        Send_ASCII("AT+CIPMUX=1"); //发送联机指令
    Send_Hex(0x0d); //发送回车符
    Send_Hex(0x0a); //发送换行符
        CLR_Buf();//清除返存
        delay(3000);
        Send_ASCII("AT+CIPSERVER=1,1000"); //发送联机指令
    Send_Hex(0x0d); //发送回车符
    Send_Hex(0x0a); //发送换行符
        CLR_Buf();//清除返存
        delay(3000);
        while(1)
        {
                t = SBUF;
                if(RI==1)                     // 是否有数据到来
        {
            RI = 0;
                        Send_ASCII("AT+CIPSEND=0,5"); //发送联机指令
                       Send_Hex(0x0d); //发送回车符
            Send_Hex(0x0a); //发送换行符
                 CLR_Buf();//清除返存
                        delay(1500);
                        Send_ASCII("TTTTT"); //发送联机指令
                       Send_Hex(0x0d); //发送回车符
            Send_Hex(0x0a); //发送换行符
                 CLR_Buf();//清除返存          
                 }        
        }
               
}


void Send_Hex(uchar b) //发送
{
            RI = 0;
                SBUF = b;       
                while(!TI);
                TI = 0;
}

void UART() interrupt 4
{

}

void CLR_Buf(void)//清除
{
unsigned char k;
for(k=0;k<Buf_Max;k++) //将缓存内容清零
{
Rec_Buf[k] = 0;
}
}



void Send_ASCII(unsigned char *b) //字节发送
{

for (b; *b!='\0';b++)
{
SBUF = *b;
while(TI!=1); //等待发送完成
TI = 0; //清除发送中断标志位
}

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:241423 发表于 2018-7-31 21:06 | 只看该作者
请问解决了吗?我也遇到这样的问题,一直发给单片机串口助手看不到的数据
回复

使用道具 举报

板凳
ID:690278 发表于 2020-8-18 20:00 | 只看该作者
请问楼主解决了吗?我也遇到了这个问题
回复

使用道具 举报

地板
ID:781556 发表于 2020-8-25 09:05 | 只看该作者
遇到過的情況:
1.波特率不匹配
2.電路干擾
3 電源
建議提取串口數據,判斷問題數據是不是8266的啟動報文。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表