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
串口发完数据怎么就直接读取数据了,这里要加一个判断等待串口数据接收完成才可以!去看下我的视频教程,关 ...
修改成了这种模式,有了接收判断,但是还是没有存到数据
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]