
17
изображении памяти SRAM ячейки с меньшими номерами рисуют ся сверху, то говорят, что
стек при зап иси растет вверх.
Количество ячеек памяти (количество уровней стек а), которые используются в
стеке для хранения данных, именуется глубиной стека. Глубина стека в различных
архитектурах ядра может быть различна: от 2-х ячеек до размера SRAM. Например, в ядре
PIC12 фирмы Microchip заложен 2-х уровневый стек, разрядность ячеек которого равна
разрядности памяти программ (12 бит), а в ядре PIC16 той же фирмы - 8 уровневый стек с
разрядностью ячеек 13 бит.
В микроконтроллерах AVR сте к организуется в памяти данных типа SRAM.
Например, микроконтроллер ATmega163 оснащен 16-разрядным указателем стека ,
размещенным в двух регистрах SPH (Stack Pointer High) и SPL (Stack Pointer Low)
пространства ввода/выво да по адресам $3E ($5E) и $3D ($5D). Поскольку
рассматриваемый микроконтроллер имеет SRAM с адресами от $000 до $045F (рис. 2.2), то
в нем используется только 11 бит указателя сте ка SP0….SP10 (рис. 3.5).
7 6 5 4 3 2 1 0
SPH $3E ($5E)
SP10 SP9 SP8
SPL
$3D ($5D)
SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0
Рис. 3.5. Регистры указателя стека микроконтроллера ATmega163
Указатель сте ка (SP) указывает на область в статической памяти данных, в которой
размещаются стек. Начальное значение указателя стека должно задаваться в программе
до первого вызова подпрограмм. Содержимое указателя стека уменьшается на единицу,
при каждом занесении данных в стек, и на две единицы при занесении в стек содержимого
программного счетчика . Указатель стека увеличивается на единицу, при извлечении
данных из стека, и на две единицы при извлечении из стека содержимого программного
счетчи ка . Для работы со стеком в системе команд микроконтроллера предусматриваются
спец иа ль ные инструкции.
3.2. Система команд
М
НЕМОНИЧЕСКИЕ ОБОЗНАЧЕНИЯ
Каждая архитектура микроконтроллера имеет собственную систему команд.
Система команд микроконтроллера описывается на специа ль ном языке символического
кодирования. При этом каждая инструкция из системы команд представляется простым
трех- или четырехбуквенным мнемоническим символом. Мнемонические симво лы
ассоц ии ру ются с функциями команды и однозначно соответствую т действиям
процессорного ядра при выполнен ии этой инструкции. Каждая архитектура имеет
фиксированный набор символических команд, созданных и описанных его производителем.
Некоторые символические обозначения, используемые в системе команд ядра AVR:
º adc add with carry сложить с переносом,
º add addition сложить,
º and and операция И,
º clr clear очистить,
º dec decrement отнять 1,
º in input ввод,