Бегущий огонек v1.1 Создание функций в Ассемблере.
Добавлено: Пн сен 11, 2006 14:18:45
В разделе Обучалка > Микроконтроллеры и ПЛИС > Микроконтроллеры AVR... > Создание функций в Ассемблере. Бегущий огонек v1.1
есть часть программы, в которой, по моему мнению, допущена ошибочка, а именно:
В однобайтный регист Temp записывают двухбайтный адрес памяти RamEnd.
Затем производится непосредственно инициализацию стека, по средствам записи адреса ячейки памяти в указатель стека SPL.
А какже, тогда насчет старшего байта указателя стека SPR?
Инициализовать стек пододным образом мне не удалось. Немного подумав и покопав описание нашел следующее решение:
Код: Выделить всё
ldi Temp,RamEnd ;загрузить в Темп адрес последней ячейки ОЗУ
out SPL,Temp ;вывести в SPL значение из TempЗатем производится непосредственно инициализацию стека, по средствам записи адреса ячейки памяти в указатель стека SPL.
А какже, тогда насчет старшего байта указателя стека SPR?
Инициализовать стек пододным образом мне не удалось. Немного подумав и покопав описание нашел следующее решение:
Код: Выделить всё
\\prog1.asm
-------------------
.include "m8515def.inc"
.def Temp=R16
\\........
RESET:
; RemEnd = 0x025F (из подключаемого файла)
ldi Temp,0x5F ; инициализация стека
out SPL,Temp
ldi Temp,0x02
out SPH,Temp
\\........