void init_18b20() { bit q; dq = 1; //°Ñ×ÜÏßÄÃ¸ß delay_uint(1); //15us dq = 0; //¸ø¸´Î»Âö³å delay_uint(80); //750us dq = 1; //°Ñ×ÜÏßÄÃ¸ß µÈ´ý delay_uint(10); //110us q = dq; //¶ÁÈ¡18b20³õʼ»¯ÐźŠdelay_uint(20); //200us dq = 1; //°Ñ×ÜÏßÄÃ¸ß ÊÍ·Å×ÜÏß } /*************д18b20ÄÚµÄÊý¾Ý***************/ void write_18b20(uchar dat) { uchar i; for(i=0;i<8;i++) { //дÊý¾ÝÊǵÍλ¿ªÊ¼ dq = 0; //°Ñ×ÜÏßÄõÍдʱ¼ä϶¿ªÊ¼ dq = dat & 0x01; //Ïò18b20×ÜÏßдÊý¾ÝÁË delay_uint(5); // 60us dq = 1; //ÊÍ·Å×ÜÏß dat >>= 1; } }解释
时间: 2023-10-21 07:28:31 浏览: 128
这是关于18b20温度传感器的操作函数。其中,init_18b20()函数是初始化18b20传感器的函数,该函数的具体功能是:将总线拉低80us,然后拉高10us,读取18b20初始化信号,最后将总线拉高。write_18b20()函数是写入18b20传感器数据的函数,该函数的具体功能是:将数据按照低位到高位的顺序写入18b20传感器。在这两个函数中,dq代表18b20传感器的数据线,dat是要写入的数据。函数中的delay_uint()函数是延时函数,用于等待18b20传感器的响应。
阅读全文