Цитата MiXaS (
)
Мне еще не понятно почему опрашивают 11 бит для определения знака? В том же документе написано, что этим занимается 15 бит
Ну, в принципе, можно использовать и 11-ый. По табличке 2 в этом файлике это хорошо видно.
И, раз на то пошло, то поделюсь небольшим примером из Swordfish - может кто почерпнет для себя нечто новое по обработке пресловутых байтиков температуры:
Код
{
****************************************************************************
* Name : GetTemp (OVERLOAD) *
* Purpose : Read the device temperature *
****************************************************************************
}
public sub GetTemp(byref pTemp as shortint, byref pFraction as word)
dim LSB as byte
OW.WaitForHigh
ReadSP
pTemp = FSP(0).AsWord >> 4
LSB = FSP(0) and $0F
select FSP(4)
case cr9Bit : pFraction = (LSB >> 3) * 5
case cr10Bit : pFraction = (LSB >> 2) * 25
case cr11Bit : pFraction = (LSB >> 1) * 125
case cr12Bit : pFraction = LSB * 625
end select
end sub
{
****************************************************************************
* Name : GetTempAsStr *
* Purpose : Read device temperature and return as formatted string *
****************************************************************************
}
public function GetTempAsStr() as string
dim TempA as shortint
dim TempB as word
dim Format as byte
GetTemp(TempA, TempB)
Format = FSP(4) and $60
Format = (Format >> 5) + 1
Result = DecToStr(TempA) + "." + DecToStr(TempB,Format)
end function
Маленькое пояснение - FSP - это массив из 9 байт куда считываются данные DS18B20. Остальное, вроде, должно быть понятно.