ds18b20是怎样传递数据给单片机的?读数据

是DQ拉低一次ds1820 8位全给?还是拉低一次给一位?
unsigned char ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(4);
}
return(dat);
}
dat是在哪里被改成ds18b20的数据呢?

以及每次都要
dat>>=1;dat|=0x80 这是为什么呢?

在 DQ = 0,之后,DQ 就是输入端了。
如果这时 DQ = 1 了,就在 dat 的最高位加一,就是:dat|=0x80。

最先收到的位,是数据的最低位,所以要逐步的向低位移动,就是:dat>>=1。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-02-07
是DQ拉低一次ds1820 8位全给?还是拉低一次给一位?
是拉低一次给一位

dat是在哪里被改成ds18b20的数据呢?
在这里
if(DQ)
dat|=0x80;

以及每次都要
dat>>=1;dat|=0x80 这是为什么呢?

一位一位的传 从最高位开始。
第2个回答  2010-02-07
拉低一次给一位。
相似回答