А если так:
XXXX XXXX - температура, где 0 бит десятые
Сдвигаю вправо 0XXX XXXX - целая темп.
Преобразую и вывожу на LCD целу часть
Проверяю 0 бит (без сдвига) XXXX XXXX (если он равен 0 вывожу 0, иначе 5)
Как перевести код (DS18B20)
- Реклама
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Как перевести код (DS18B20)
.. если не охота громоздких вычислений - можно брать десятичную часть из таблицы. Работать будет быстро и займет (16х4 - 64 байта), т.е максимально 16 комбинаций
обработка проста
...и все. В r0 - адрес начала строки
Код: Выделить всё
tmp_table:
.db 0xXX, 0xXX, 0xXX, 0xXX ; код для вывода строки 0000
..
.db 0xXX, 0xXX, 0xXX, 0xXX ; код для вывода строки 9375
Код: Выделить всё
ldi ZL,low(tmp_table<<1)
ldi ZH,high(tmp_table<<1)
add ZL,index ; index- значение дробной части
.....
lpm
Re: Как перевести код (DS18B20)
Tom91, вот вам работающий код, смотрите пошагово, дорабатывайте, оптимизируйте. Вариантов как можно сделать - масса, пробуйте.
- Вложения
-
- temp_conversion.asm
- (1.29 КБ) 332 скачивания
