3.
Андрей
(11.01.2010 01:55)
0
Собрали Ваш термометр, тест проходит, а температуру показывает неправельно. Ошибка где то здесь:
Logic: cli ; Запрет всех прерываний sbrc stat,PVA ; Пропуск, если не этап вывода заставки rjmp LogicPVA ; Переход на этап вывода заставки rcall uLAN_Reset ; Сброс шины ori stat,(1<<ERR) ; Поднятие флага ошибки brts LogicEnd ; Переход, если ошибка при сбросе andi stat,~(1<<ERR) ; Сброс флага ошибки ldi temp,SKIPROM ; Пропуск ПЗУ rcall uLAN_ByteWrite ldi temp,READPAD ; Чтение блокнотной памяти rcall uLAN_ByteWrite rcall uLAN_ByteRead ; Чтение младшего байта температуры swap temp ; Перестановка тетрад andi temp,0x0F ; Выделение младшего полубайта температуры mov value,temp ; Копирование в value rcall uLAN_ByteRead ; Чтение старшего байта температуры swap temp ; Перестановка тетрад andi temp,0xF0 ; Выделение старшего полубайта температуры or value,temp ; Склеивание в один байт andi stat,~(1<<MIN) ; Сброс флага отрицательной температуры sbrs value,7 ; Проверка знакового разряда rjmp LogicPos ; Переход, если положительная температура ori stat,(1<<MIN) ; Поднятие флага отрицательной температуры com value ; Инвертирование значения
|