Цитата(GetSmart @ May 16 2006, 21:31)

Ух как давно я не писал для AVR!
NAME set_int
#include <iom16.h>
PUBLIC set_int
RSEG CODE
EXTERN chartabl
set_int:
; (в этом месте и надо обратится и извлечЬ число из масива)
ldi ZL,LOW(chartabl)
ldi ZH,HIGH(chartabl)
ld r0,Y ; или ld r0,Y+ если нужно с инкрементом
ret
END set_int
_______________________
Это если массив расположен в RAM. А если во флэше, то так:
NAME set_int
#include <iom16.h>
PUBLIC set_int
RSEG CODE
EXTERN chartabl
set_int:
; (в этом месте и надо обратится и извлечЬ число из масива)
ldi ZL,LOW(chartabl*2)
ldi ZH,HIGH(chartabl*2)
lpm ; или lpm rx,z+ , где rx - любой регистр, и можно z, z+, y, y+
ret
END set_int
хотя могу ошибаться на счёт умножения на 2. Я это делал когда метка находилась в этом же ASM-файле. Глобальный адрес может уже быть умножен на 2.
А где и как описать сам масив если массив расположен во флеше???
Сообщение отредактировал Professor - May 16 2006, 18:38