sei(); // 恢复系统中断
wait_us(62); // 必须大于60us
}
return(dat);
}
/*-------------------------------------------------------
* 我的电路中只有一个器件DS18B20,所以不需要多个器件的ID
* 识别,跳过之后,启动温度转换,但在启动后,用户应等待几百个
* 毫秒,才能读到这次的转换值,这是DS18B20的数据手册规定的。
* 因为温度转换是需要时间的嘛!(^_^)
*/
void convert_T(void)
{
if(ds18b20_reset()==SUCC) { // 如果复位成功
ds18b20_write(0xcc); // 跳过多器件识别
ds18b20_write(0x44); // 启动温度转换
}
}
/*-------------------------------------------------------
* 读取转换后的温度值
* 我假定DS18B20一定是正确的,所以没有返回有关状态。当你故意
* 把DS18B20从电路中拔下而能让程序告诉你出错时,你可以自己修
* 改这段代码!
*/
INT16U read_T(void)
{
INT16U value=0;
if(ds18b20_reset()==SUCC) { // 如果复位成功
ds18b20_write(0xcc); // 跳过多器件识别
ds18b20_write(0xbe); // 读暂存器
value = (INT16U)ds18b20_read(); // 低字节
value += (INT16U)(ds18b20_read())<<8; // 高字节
}
return(value);
}
#endif
/* 文件ds18b20.c结束 */
上一页 [1] [2]
本文关键字:程序 AVR单片机,单片机-工控设备 - AVR单片机