Свежие обсуждения
Микроконтроллеры

Кто поможет с AVR ассемблером - команда LPM

Помогите разобраться где собака порылась ?!

Записаны данные в програмный сегмент . НО при чтении команда LPM - регулярно врёт при ємуляции в AVR Studio ..

Прикложу скрин с обманом .

Может кто объяснит , от чего так получается ??? в описаловках НЕ НАШЁЛ ответа на проблемму ....
Вот отрезок проги :

LDI R30 , low (DATA*2)
LDI R31 , high(DATA*2)

LPM R0 , Z+
LPM R1 , Z+
LPM R2 , Z+
LPM R3 , Z+
LPM R4 , Z+
LPM R5 , Z+
LPM R6 , Z+
LPM R7 , Z+
LPM R8 , Z+
LPM R9 , Z+
LPM R10 , Z+
LPM R11 , Z+
LPM R12 , Z+
LPM R13 , Z+
LPM R14 , Z+
LPM R15 , Z+
LPM R16 , Z+
LPM R17 , Z+
LPM R18 , Z+
LPM R19 , Z+
LPM R20 , Z+
LPM R21 , Z+
LPM R22 , Z+
LPM R23 , Z+
LPM R24 , Z+
LPM R26 , Z+
LPM R27 , Z+
LPM R28 , Z+
LPM R29 , Z

NOP
NOP

.CSEG ;
.ORG 0X300 ;

DATA:
.DB 0X01 , 0X02 , 0X03 , 0X04 , 0X05 , 0X06 , 0X07 ;
;
.DB 0X08 , 0X09 , 0X10 , 0X11 , 0X12 , 0X13 , 0X14 ;

.DB 0X15 , 0X16, 0X17 , 0X18 , 0X19 , 0X20 , 0X21 ;

.DB 0X22 , 0X23 , 0X24 , 0X25 , 0X26 , 0X27 , 0X28 ;

.DB 0X29 , 0X30 , 0X31 , 0X32 , 0X33 , 0X34 , 0X35 ;

 

Строка данных для размещения в памяти должна иметь чётное число байт, иначе компилятор сам добавит недостающий байт (0х00).

Пример.

.db 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08

.db 0x09,0x0A,0x0D,0x0C,0x0D,0x0E,0x0F,0x10