找回密码
 立即注册

QQ登录

只需一步,快速开始

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

esp8266与STC89C52单片机的通信测试出现问题(新手菜鸟求助)

[复制链接]
跳转到指定楼层
楼主
ID:1119723 发表于 2024-5-8 01:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  用的是keil5编写程序,烧录完hex文件之后。发现在串口调试助手上wifi模块可以正常使用接收信息(我设置的是ap模式),但是连接到单片机通电后,就只能连接网络,手机app无法输入ip地址和端口号来连接wifi模块,求助我的代码为什么不能成功让单片机配置
#include <REGX52.H>

#define uint unsigned int
#define uchar unsigned char


uchar Recive_table[15];
         
uint i;
void delay_ms(uint ms)
{
        uchar i,j;
        for(i=ms;i>0;i--)
        for(j=120;j>0;j--);
}

void delay_us(uchar us)
{
        while(us--);
}

void Usart_Init()
{
        
        SCON=0x50;
        TMOD=0x20;
        
        TH1=0xFD;
        TL1=TH1;
        
        PCON=0;
        ET1=0;
        TR1=0;
        ES=1;
        EA=1;
}

void SENT_At(uchar *At_Comd)
{
        ES=0;
        while(*At_Comd!='\0')
        {
                SBUF = *At_Comd;
                while(!TI);
                TI = 0;
                delay_us(5);
                At_Comd++;
        }
        ES=1;
}

void WIFI_Init()
{
        SENT_At("AT+CIPMUX=1\r\n");
        delay_ms(1000);
        SENT_At("AT+CIPSERVER=1,8080\r\n");
        delay_ms(1000);
        ES = 1;
}
void main()
{
        Usart_Init();
        WIFI_Init();
        delay_ms(450);
        while(1);
}
void Uart() interrupt 4
{        
        
        if(RI==1)
        {
                RI=0;
                Recive_table[ i]=SBUF;
                if(Recive_table[0]=='+')
                {
                  i++;
                }
                else
                {
                        i=0;
                }
                if(i>=10)
                {
                        if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P')&&(Recive_table[3]=='D'))
                        {
                                if(Recive_table[9]=='0')
                                {
                                        P2 = 0x81;
                                }         
                                if(Recive_table[9]=='1')
                                {
                                        P2 = 0x00;
                                }
                                
                                                
                        }
                        i = 0;
                }
        }
        else
   TI = 0;               
}


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

使用道具 举报

沙发
ID:161164 发表于 2024-5-8 09:20 | 只看该作者
试试一下代码
  1. #include <REGX52.H>

  2. void main()
  3. {
  4.         while(1);
  5. }
复制代码



回复

使用道具 举报

板凳
ID:1119723 发表于 2024-5-8 09:48 | 只看该作者

请问大佬,这个不是执行空的循环吗
回复

使用道具 举报

地板
ID:690831 发表于 2024-5-8 14:26 来自手机 | 只看该作者
不要用8080端口
回复

使用道具 举报

5#
ID:161164 发表于 2024-5-8 15:51 | 只看该作者
melody222 发表于 2024-5-8 09:48
请问大佬,这个不是执行空的循环吗


如果跑空循环也影响ESP8266
就不是代码问题
回复

使用道具 举报

6#
ID:1119723 发表于 2024-5-9 23:04 | 只看该作者
lkc8210 发表于 2024-5-8 15:51

如果跑空循环也影响ESP8266
就不是代码问题

空循环没影响,我正常选择一个引脚输出高电平都可以让单片机点亮led灯
回复

使用道具 举报

7#
ID:1119723 发表于 2024-5-9 23:05 | 只看该作者

麻烦问一下是随便换个端口吗,8080端口有什么影响
回复

使用道具 举报

8#
ID:343102 发表于 2024-5-9 23:34 | 只看该作者
2楼在启发你,while(1);//这是个死循环。
回复

使用道具 举报

9#
ID:597405 发表于 2024-5-13 00:48 | 只看该作者
延时给长点。还有程序中没有检测At指令究竟有没有发送成功。程序中WIFI_Init()里的内容太简单,根本就启动不了模块。
回复

使用道具 举报

10#
ID:1119723 发表于 2024-5-19 21:25 | 只看该作者
单片机初学者174 发表于 2024-5-13 00:48
延时给长点。还有程序中没有检测At指令究竟有没有发送成功。程序中WIFI_Init()里的内容太简单,根本就启动 ...

好嘞 我试试
回复

使用道具 举报

11#
ID:384109 发表于 2024-5-20 21:54 | 只看该作者
      else
   TI = 0;     这个去掉吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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