LYJ_LF 2023-05-11 19:05 采纳率: 0%
浏览 116
已结题

关于#单片机#的问题:求大猿解决!

keil5,stc89c52rc,esp8266-01s,串口
用keil5写串口,以便发送AT指令,飞燕平台接收解析到温度值,实现用云智能远程查看温度值,当然,这只是串口的代码,

#include <reg52.h>
#include <stdio.h>
#include <string.h>
#include "DS18B20.h"

#define uchar unsigned char    //0-255

void UartInit(void)
{
    SCON =  0x50;     //串口工作模式1
    TMOD &= 0x0F;     //清空定时器1模式位
    TMOD |= 0x20;     //设置定时器1为模式2(8位自动重装载)
    TL1  =  0xFD;       //设置定时初始值
    TH1  =  0xFD;       //设置定时重载值
    TR1  =  1;         //启动定时器1
}

//串口延时
void delay_uart(short ms)
{
    short i, j;
    for (i = 0; i < ms; i++) 
    {
        for (j = 0; j < 1141; j++);
    }
}

// 串口发送单个字符
void uartSendChar(unsigned char c)
{
    SBUF = c;
    while (!TI);   // 等待发送完成
    TI = 0;        // 清除发送完成标志
}

// 串口发送字符串
void uartSendString(const char* str)
{
    while (*str)
    {
        uartSendChar(*str++);
    }
}

void Send_AT_Cmd()
{
    uartSendString("AT+CIPSNTPCFG=1,8,\"ntp1.aliyun.com\"\r\n");
    delay_uart(300);
    uartSendString("AT+MQTTUSERCFG=0,1,\"NULL\",\"vyjNlubh0QeZW06dprJi&a1EekF90GyL\",\"c199f60d4f0b08a7ca7e2ccbcb193b1e93ff8e10d677eebbb991fea908dd92c9\",0,0,\"\"\r\n");
    delay_uart(300);
    uartSendString("AT+MQTTCLIENTID=0,\"a1EekF90GyL.vyjNlubh0QeZW06dprJi|securemode=2\\,signmethod=hmacsha256\\,timestamp=1681564451348|\"\r\n");
    delay_uart(300);
    uartSendString("AT+MQTTCONN=0,\"a1EekF90GyL.iot-as-mqtt.cn-shanghai.aliyuncs.com\",1883,1\r\n");
    delay_uart(300);
    uartSendString("AT+MQTTSUB=0,\"/sys/a1EekF90GyL/vyjNlubh0QeZW06dprJi/thing/service/property/set\",1\r\n");
    delay_uart(300);
}

void printTemp(float temp)
{

    char String_temp_at[128] = "AT+MQTTPUB=0,\"/sys/a1EekF90GyL/vyjNlubh0QeZW06dprJi/thing/event/property/post\",\"{params:{temperature:%.1f}}\",1,0\r\n";//字符串格式
    char buffer[256];  // 缓冲区,用于存储转换后的字符串

    sprintf(buffer, String_temp_at, temp);  // 将温度值转换为字符串格式
    
    uartSendString(buffer);  // 发送字符串到串口
}

void main()
{
    UartInit();  // 初始化串口
    Send_AT_Cmd();
    
    while (1)
    {
        float temp = ReadTemp()/10.0;
        printTemp(temp);// 将温度值打印到串口
        delay_uart(600);  // 延时一段时间
    }
}

遇到的现象和发生背景,请写出第一个错误信息

img

在魔术棒中,memory model中的data改为xdata可以通过,但芯片不支持,要怎么解决?

img

  • 写回答

3条回答 默认 最新

  • weixin_40681229 2023-05-12 13:16
    关注
    获得7.50元问题酬金

    1,换STC15F2K60S2系列单片机
    2,如果有固定的数组变量,例如有些AT指令是固定的,将它的数组定义前面加上const,这样数组会存到FLASH,不会存到data与idata中

    评论
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC
  • ¥15 防火墙的混合模式配置
  • ¥15 Ubuntu不小心注销了要怎么恢复啊
  • ¥15 win10电脑安装完plcsim advanced4.0运行时为什么会提示找不到虚拟网卡
  • ¥15 安装powerbuilder10卡在安装程序正在运行这个页面 没有下一步任何指令
  • ¥15 关于mpi的问题:请问遇到这种情况需要怎么解决,出现这个问题后电脑不能进行mpi多核运行只能进行单核运行
  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,