u8 DS18B20_Check(void) { u8 retry=0; DS18B20_IO_IN();//把IO口配置為輸入,目的是為了接收DS18B20發(fā)過來的數(shù)據(jù) while (DS18B20_DQ_IN&&retry<200)//如果IO口是低電平,則是正常的,否則一直進while循環(huán) { retry++; delay_us(1); }; if(retry>=200) {//通訊有誤,返回1 return 1; } else {//正常 retry=0; } while (!DS18B20_DQ_IN&&retry<240)//繼續(xù)讀取電平,如果IO口是高電平,則是正常的 { retry++; delay_us(1); }; if(retry>=240) {//通訊有誤,返回1 return 1; } return 0;//通訊正常,返回0 }
|