Ну насчет С Вы махнули.
Вот исходники под 2313 работают давно и стабильно.
Чего нет: нет точности в 0.1 градус - как добавить - читайте аппликухи от Далласа.
Что есть: DS18B20, (6 линий одного порта - если не надо 6 - принцип остается прежним); просто я опрашивал 6 веток по 16 датчиков на каждой....
Внимательно смотрите на калибровку - вот это важно!!! Для этого и прицеплены модули таймера (.С и .h)
Чего не надо: даже не спрашивайте про rx_DATA[] - это буфер "МАК-а", который у меня при запросе каждого датчика прилетает по уарту.
В последнем выделенном куске ML_rx я оставляю наименьший результат потому, что при опросе всех линий, конечно с тех линий, где нет запрашиваемого датчика прилетает FF.
Чуть не забыл: не ругайте за синтаксис - это моя первая прога на С.....