void tempwrite(uchar dat)//向DS18B20写一个字节数据函数 { uint i; uchar j; bit testb; for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) { ds=0; i++;i++; ds=1; i=8;while(i>0)i--; } else { ds=0; i=8;while(i>0)i--; ds=1; i++;i++; } } }逐行解释
时间: 2023-12-06 08:45:34 浏览: 69
这是一段用于向DS18B20写一个字节数据的函数。下面逐行解释:
```c++
void tempwrite(uchar dat)
```
函数声明,函数名为tempwrite,参数为一个无符号字符型变量dat。
```c++
{
uint i;
uchar j;
bit testb;
```
定义三个变量,i为无符号整型,j为无符号字符型,testb为单个位的布尔型。
```c++
for(j=1;j<=8;j++)
{
```
使用for循环,j从1循环到8。
```c++
testb=dat&0x01;
dat=dat>>1;
```
将dat的最低位赋值给testb,然后将dat右移一位。
```c++
if(testb)
{
ds=0;
i++;i++;
ds=1;
i=8;while(i>0)i--;
}
```
如果testb为真,即最低位为1,则先将ds引脚拉低,然后延时一段时间(i++表示延时),再将ds引脚拉高,最后将i赋值为8并延时,等待DS18B20读取数据。
```c++
else
{
ds=0;
i=8;while(i>0)i--;
ds=1;
i++;i++;
}
```
如果testb为假,即最低位为0,则先将ds引脚拉低,然后延时一段时间,再将ds引脚拉高,最后将i赋值为0并延时,等待DS18B20读取数据。
```c++
}
}
```
循环结束,函数执行完毕。
阅读全文