Ух как давно я не писал для 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.
--------------------
Заблуждаться - Ваше законное право :-)
|