u8 DS18B20_Check(void) { u8 retry=0; DS18B20_IO_IN();//SET PA0 INPUT while (DS18B20_DQ_IN&&retry<200) { retry++; delay_us(1); }; if(retry>=200)return 1; else retry=0; if(retry>=240)return 1; return 0; }代码解释
时间: 2024-03-04 12:51:47 浏览: 118
ds18b20的测试程序
这段代码是用于检测 DS18B20 温度传感器是否正常工作的函数。具体来说,函数名为 DS18B20_Check,返回值类型为 unsigned char 类型,表示检测结果,0 表示正常工作,1 表示未检测到传感器或者传感器未正常工作。函数内部首先定义了一个变量 retry,用于记录重试次数。接着使用 DS18B20_IO_IN() 函数将 PA0 引脚设置为输入模式。然后进入循环,判断 DS18B20_DQ_IN 引脚是否为高电平,如果是,则重试次数加 1,延时 1 微秒,直到 DS18B20_DQ_IN 引脚为低电平或者重试次数达到 200 次为止。如果重试次数达到 200 次,则返回 1,表示未检测到传感器或者传感器未正常工作。如果重试次数小于 200,则将 retry 重置为 0,然后再次进入循环,判断 DS18B20_DQ_IN 引脚是否为高电平,如果是,则重试次数加 1,延时 1 微秒,直到 DS18B20_DQ_IN 引脚为低电平或者重试次数达到 240 次为止。如果重试次数达到 240 次,则返回 1,表示未检测到传感器或者传感器未正常工作。最后,如果重试次数小于 240,则返回 0,表示传感器正常工作。
阅读全文