Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

901200 загрузка значения по адресу из Z

Пт май 12, 2006 07:45:51

Тут встала такая проблема: хотел сделать динамическую индикацию. В обучалке она собрана на 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. Вот тут я уж точно ничего не понимаю... :?

Вс май 14, 2006 07:05:13

С косвенной адресацией так ничего и не вышло. Если кому интересно, я сделал чтение из EEPROM. Получается вот так:
.eseg
.db 72,126 ;0,1
.db 196,100 ;2,3
.db 114,97 ;4,5
.db 65,124 ;6,7
.db 64,96 ;8,9
........

Decode:
sbic EECR, EEWE
rjmp Decode
out EEAR, temp1
sbi EECR, EERE
in temp1, EEDR
ret

Система примерно та же, однако идет смещение от начала сегмента EEPROM. Ну и залить его естественно надо в контроллер.
Тема закрыта