uchar Ds18b20ReadA3(void)
{
uchar Value = 0x00;
uint i;
Ds18b20Data = 1;
Ds18b20OutputInitialA3();
Ds18b20Data = 1;
Ds18b20DelayA3(100);
for(i=0;i<8;i++)
{
Value >>= 1;
Ds18b20OutputInitialA3();
Ds18b20Data = 0;
Ds18b20DelayA3(3);
Ds18b20Data = 1;
Ds18b20DelayA3(3);
Ds18b20InputInitialA3();
Ds18b20DelayA3(3);
if(Ds18b20Data == 1) Value |= 0x80;
Ds18b20DelayA3(15);
}
return Value;
}
uchar Ds18b20InitialA3(void)
{
uchar Status = 0x00;
uint CONT_1 = 0;
uchar Flag_1 = ON;
Ds18b20OutputInitialA3();
Ds18b20Data = 1;
Ds18b20DelayA3(260);
Ds18b20Data = 0;
Ds18b20DelayA3(750);
Ds18b20Data = 1;
Ds18b20InputInitialA3();
while((Ds18b20Data != 0)&&(Flag_1 == ON))//等待ds18b20响应,具有防止超时功能
{ //等待约60ms左右
CONT_1++;
Ds18b20DelayA3(10);
if(CONT_1 > 8000)Flag_1 = OFF;
Status = Ds18b20Data;
}
Ds18b20OutputInitialA3();
Ds18b20Data = 1;
Ds18b20DelayA3(100);
return Status;
}
|