u8 DS18B20_Read_Bit(void) // read one bit { u8 data; DS18B20_IO_OUT();//SET PA0 OUTPUT //wl DS18B20_DQ_OUT=0; delay_us(2); DS18B20_DQ_OUT=1; DS18B20_IO_IN();//SET PA0 INPUT //wl delay_us(12); if(DS18B20_DQ_IN) data=1; else data=0; delay_us(50); return data; }
//从DS18B20读取一个位 //返回值:1/0 uint8_t DS18B20_Read_Bit(void) // read one bit { uint8_t data; DS18B20_IO_OUT();//SET PA0 OUTPUT DS18B20_DQ_OUT=0; wait_us(2); DS18B20_DQ_OUT=1; DS18B20_IO_IN();//SET PA0 INPUT wait_us(12); if(DS18B20_DQ_IN)data=1; else data=0; wait_us(50); return data; }
//等待DS18B20的回应 //返回1:未检测到DS18B20的存在 //返回0:存在 u8 DS18B20_Check(void) { u8 retry=0; DS18B20_IO_IN();//SET PA0 INPUT while (DS18B20_DQ_IN&&retry<200) { retry++; wait_us(1); }; if(retry>=200)return 1; else retry=0; while (!DS18B20_DQ_IN&&retry<240) { retry++; wait_us(1); }; if(retry>=240)return 1; return 0; }