Как перевести код (DS18B20)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Tom91
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт окт 08, 2010 15:43:55

Re: Как перевести код (DS18B20)

Сообщение Tom91 »

А если так:
XXXX XXXX - температура, где 0 бит десятые
Сдвигаю вправо 0XXX XXXX - целая темп.
Преобразую и вывожу на LCD целу часть
Проверяю 0 бит (без сдвига) XXXX XXXX (если он равен 0 вывожу 0, иначе 5)
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Как перевести код (DS18B20)

Сообщение ChipKiller »

.. если не охота громоздких вычислений - можно брать десятичную часть из таблицы. Работать будет быстро и займет (16х4 - 64 байта), т.е максимально 16 комбинаций

Код: Выделить всё

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
...и все. В r0 - адрес начала строки
Реклама
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: Как перевести код (DS18B20)

Сообщение stas00n »

Tom91, вот вам работающий код, смотрите пошагово, дорабатывайте, оптимизируйте. Вариантов как можно сделать - масса, пробуйте.
Вложения
temp_conversion.asm
(1.29 КБ) 332 скачивания
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»