读一个传感器,串口通讯,读出来的数据总不对
cpu stc9c52 晶振11.0592
接口定义 (URAT)
通讯协议
串口数据流格式
说明: B1 的内容 2Ch 是模块固定地址。校验和(B6)=unit_8(B1+B2+B3+B4+B5) 污染气体浓度值(mg/m3)=(TVOC 浓度高(B2)*256+TVOC 浓度低(B3))
程序:
void uart_init(u8 baud)
{
TMOD|=0X20; //设置计数器工作方式2
SCON=0X50; //设置为工作方式1
PCON=0X00;
TH1=0XFD; //计数器初始值设置
TL1=0XFD;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void uart() interrupt 4 //串口通信中断函数
{
u8 rec_data;
RI = 0; //清除接收中断标志位
rec_data=SBUF; //存储接收到的数据
if (0x2c != rec_data) --》这里0x2c是设备的地址,固定值,目前一直读不到这个值 ,每次都能都出6个数值,但一直没有0x2c
{
return;
}
uart_co2[uart_cou++]=rec_data;
if (uart_cou == 6)
{
if(uart_co2[5]==uart_co2[0]+uart_co2[1]+uart_co2[2]+uart_co2[3]+uart_co2[4])
temp_co2 = uart_co2[1]*256+uart_co2[2];
uart_cou = 0;
co2_ok = 1;
}
else
{
uart_cou = 0;
}
}
请指教
|