AVR---SHT10---温湿度传感器--温度 0XFF---湿度---问题
读取函数如下:
/********************************************************
SHT10温湿度检测
********************************************************/
uchar SHT10_measure(uchar *p_value, uchar *p_checksum, uchar mode)
{
uchar error=0;
uint i;
SHT10_transstart(); //启动传输
switch(mode) //选择发送命令
{
case TEMP : error+=SHT10_write_byte(MEASURE_TEMP); break; //测量温度
case HUMI : error+=SHT10_write_byte(MEASURE_HUMI); break; //测量湿度
default : break;
}
for(i=0;i<65535;i++) if( ! SHT_DATA_IN_DATA) break; //等待测量结束(从机拉低)//使用一个if等待,时间可能不够长
for(i=0;i<65535;i++) if( ! SHT_DATA_IN_DATA) break; //等待测量结束(从机拉低)
if(SHT_DATA_IN_DATA) error+=1; // 如果长时间数据线没有拉低,说明测量错误
*(p_value)=SHT10_read_byte(ACK); //读第一个字节,高字节 (MSB)
*(p_value+1)=SHT10_read_byte(ACK); //读第二个字节,低字节 (LSB)
*p_checksum =SHT10_read_byte(noACK); //read CRC校验码
Uart_Send(2); Uart_Send(error);
return error; // error=1 通讯错误
}