飞快旋转的风车 发表于 2024-4-16 18:03:25

uart发送命令返回无法存储数据

本人小白,写了一段代码,需要stc发送三段不同的询问代码分别询问温度湿度和压力的数据,分别将返回的三段代码中的第二和第三个数据(温度湿度压力的数值),存储到变量中,用于LCD显示。示波器硬件检测,代码发送正确,返回数据正确,但是,代码运行起来不能存储数据,不能更新数据到LCD。其中step_A,step_B,step_C由中断控制,200ms触发一次询问。
求大佬帮忙分析问题在哪里。
代码如下。
/***********************************************/
void main(void)
{
        u8        i;
        EAXSFR();                /* 扩展寄存器访问使能 */
        GPIO_config();
        UART_config();
        Timer_config();
        Init_lcd();
        EA = 1;
        while (1)
        {
                u8 temp_h = 0;
                u8 temp_l = 0;
                u8 hum_h = 0;
                u8 hum_l = 0;               
                u8 press_h = 0;
                u8 press_l= 0;                                                       
               
                send_buffer        = 0x01;
                send_buffer        = 0x03;
                send_buffer        = 0x00;
               
                send_buffer        = 0x00;
                send_buffer        = 0x01;
                send_buffer        = 0x84;
                send_buffer        = 0x05;
               
    if (step_A == 1)
                        {
                               send_buffer = 0x30; // 设置发送地址为0x30
                                        for(i=0; i<8; i++)
                                        {
                                                TX1_write2buff(send_buffer);
                                        }
                                temp_h=RX1_Buffer ;
                                temp_l=RX1_Buffer ;                                                       
                                temp_num2 = (int)temp_h*256 + temp_l; // 假设数据是高字节在前
                                step_A = 0;       
                                }



电子DIY小家 发表于 2024-4-17 08:57:35

串口发完数据怎么就直接读取数据了,这里要加一个判断等待串口数据接收完成才可以!去看下我的视频教程,关于串口部分的那几集。

飞快旋转的风车 发表于 2024-4-17 10:50:00

电子DIY小家 发表于 2024-4-17 08:57
串口发完数据怎么就直接读取数据了,这里要加一个判断等待串口数据接收完成才可以!去看下我的视频教程,关 ...

修改成了这种模式,有了接收判断,但是还是没有存到数据
if (step_A == 1) {
      send_buffer = 0x30; // 设置发送地址为0x30
                                        for(i=0; i<8; i++)TX1_write2buff(send_buffer);                       
                                        if(COM1.RX_TimeOut > 0)                //超时计数
                                                {
                                                        if(--COM1.RX_TimeOut == 0)
                                                        {
                                                                if(COM1.RX_Cnt > 0)
                                                                {
                                                                                temp_h=RX1_Buffer ;
                                                                                temp_l=RX1_Buffer ;                                                       
                                                                                temp_num2 = (int)temp_h*256 + temp_l; // 假设数据是高字节在前
                                                                }
                                                                COM1.RX_Cnt = 0;
                                                        }
                                                }       
                                step_A = 0;       
                        }

页: [1]
查看完整版本: uart发送命令返回无法存储数据