u8 DS18B20_Check(void) { u8 retry=0; DS18B20_IO_IN();//把IO口配置为输入,目的是为了接收DS18B20发过来的数据 while (DS18B20_DQ_IN&&retry<200)//如果IO口是低电平,则是正常的,否则一直进while循环 { retry++; delay_us(1); }; if(retry>=200) {//通讯有误,返回1 return 1; } else {//正常 retry=0; } while (!DS18B20_DQ_IN&&retry<240)//继续读取电平,如果IO口是高电平,则是正常的 { retry++; delay_us(1); }; if(retry>=240) {//通讯有误,返回1 return 1; } return 0;//通讯正常,返回0 }
|