// STC15及以上MCU使用
// 调用ds18b20_read_temp()函数即可读取温度
sbit DS18B20_DQ = P5^5; // MCU引脚定义
// 回调函数。如:调用数码管刷新函数
void ds18b20_callback()
{
}
void ds18b20_rst()
{
DS18B20_DQ = 1;
delay_us(4);
DS18B20_DQ = 0;
ds18b20_callback();
delay_us(480);
DS18B20_DQ = 1;
ds18b20_callback();
delay_us(480);
}
uchar ds18b20_rd()
{
ubyte i = 0;
ubyte dat = 0;
for(i = 8;i > 0; i--)
{
DS18B20_DQ = 0;
delay_us(4);
dat >>= 1;
DS18B20_DQ = 1;
delay_us(10);
if(DS18B20_DQ) dat|=0x80;
delay_us(45);
}
return(dat);
}
void ds18b20_wr(uchar wdata)
{
ubyte i =