Микроконтроллеры семейства AVR. Воробьева Г.С. - 6 стр.

UptoLike

Составители: 

По адресу $0000 памяти программ находится вектор сброса. После
инициализации (сброса) микроконтроллера выполнение программы
начинается с этого адреса (по этому адресу должна размещаться команда
перехода к инициализационной части программы). Начиная с адреса
$0002 памяти программ, располагается таблица векторов прерываний.
Стек реализован программно. Он размещается в памяти данных, и
его глубина определяется только размером свободной области памяти
данных. В качестве указателя стека во всех моделях используется пара
регистров ввода/вывода SPH:SPL, расположенных по адресам $ЗЕ ($5Е) и
$3D ($5D) соответственно. Так как после подачи напряжения питания
(или после сброса) в регистрах содержится нулевое значение, в самом
начале программы указатель стека необходимо проинициализировать,
записав в него значение верхнего адреса памяти данных. Обычно это
делается следующим образом:
ldi rl6,low(RAMEND) ;Загрузим Б рабочий регистр младший байт
;значения
out SPL,rl6 ;Инициализируем указатель стека
ldi rl6,high(RMEND) ;Загрузим в рабочий регистр старший байт
;значения
out SPH,rl6 ;Инициализируем указатель стека
При вызове подпрограмм адрес команды, расположенной за
командой вызова, сохраняется в стеке. Значение указателя стека при этом
уменьшается на 2 или 3, в зависимости от размера счетчика команд. При
возврате из подпрограммы этот адрес извлекается из стека и загружается
в счетчик команд. Значение указателя стека соответственно
увеличивается на 2 (3). То же происходит и во время прерывания. При
генерации прерывания адрес следующей команды сохраняется в стеке, а
при возврате из подпрограммы обработки прерывания он
восстанавливается из стека. Стек доступен и программно. Для работы со
стеком имеются две команды: команда занесения в стек (PUSH) и
команда извлечения из стека (POP).
1.2.5 Память данных
Память данных микроконтроллера разделена на три части: регистровая
память, оперативная память (статическое ОЗУ) и энергонезависимое
ЭСППЗУ (EEPROM).
Регистровая память включает 32 регистра общего назначения (РОН),
объединенных в файл, и служебные регистры ввода/вывода (РВВ).
В обеих областях регистров ввода/вывода располагаются
различные служебные регистры (регистр управления микроконтроллера,
6