小白求助!我想串口每接收到一次数据0X31,都在屏幕显示一次温度,同时通过串口把获取到的温度发送出去! 这是在内部温度传感器实验的基础上改的程序!
但是我用串口助手发送0x31,第1次发能获取到温度,第2次发不能,第3次发又能获取到温度,第4次发又不能。。。。只有13579次...是成功的,2468次...都失败。第2468次两个LED都不亮!
while(1)
{
if(USART_RX_STA&0x8000)
{
a =USART_ReceiveData(USART1); //把串口接收到数据给a
if(a==0x31) //判断a是否0x31
{
printf("\r\n正在获取温度!\r\n");
temp=Get_Temprate(); //得到温度值
if(temp<0)
{
temp=-temp;
LCD_ShowString(30+10*8,140,16,16,16,"-"); //显示符号
}else LCD_ShowString(30+10*8,140,16,16,16," "); //无符号
LCD_ShowxNum(30+11*8,140,temp/100,2,16,0); //显示整数
LCD_ShowxNum(30+14*8,140,temp%100,2,16, 0X80); //显示小数
LED0=!LED0;
delay_ms(250);
LED0=!LED0;
printf("\r\n当前温度为:");
printf("%d",temp/100);
printf(".");
printf("%d",temp%100);
printf("摄氏度\r\n");
USART_RX_STA=0;
a=0;
}
}else
{
LED1=!LED1;
delay_ms(250);
}
}
|