Тут встала такая проблема: хотел сделать динамическую индикацию. В обучалке она собрана на 2313. У меня 2313 нету, зато есть 6 штук 1200.
Собсно вопрос. В 1200 практически нет возможности работы с косвенной адресацией. У Сереги написано вот так:
Decoder:
;преобразование двоичного числа
;в код 7-сегментного индикатора
ldi ZL,Low(DcMatrix*2) ;инициализация массива
ldi ZH,High(DcMatrix*2)
ldi Temp2,0 ;прибавление переменной
add ZL,Temp1 ;к 0-му адресу массива
adc ZH,Temp2
lpm ;загрузка значения
mov Temp1,r0
ret
Для 1200 нет команды lpm, зато есть ld. Однако мне пришлось убрать *2 из первых 2-х строчек, иначе адрес встает неверный (я в отладчике смотрел). Для ld получается так:
ld Temp1, Z
В результате в temp1 попадает 0? Хотя смещение верное. Что делать? Я уже книжку перерыл, и даташит и документацию к AVR Studio 4...
Ещё. При запуске устройства, на сегменты выводится 00. Вот тут я уж точно ничего не понимаю...