讀一個傳感器,串口通訊,讀出來的數據總不對
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;
}
}
請指教
|