最近看了看DS18B20的手册,也有对应的程序。可是有些不理解它的时序,从而程序也有些不太懂。
这是我在手册里的截图,写的时序我看明白了,可读的不是很懂。在看程序的时候会现有一个低脉冲。拉低后又拉高之后再读取数据,这是为什么?时序图上也没有那个地脉冲啊?
附上 读的程序
unsigned char Read18B20()
{
unsigned char dat;
unsigned char mask;
EA = 0;
for(mask=0x01; mask!=0; mask<<=1)
{
IO_18B20 = 0;
_nop_();
_nop_();
IO_18B20 = 1;
_nop_();
_nop_();
if(!IO_18B20)
dat &= ~mask;
else
dat |= mask;
DelayX10us(6);
}
EA = 1;
return dat;
}
|