Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
358 Микроконтроллеры AVR от азов программирования... Рис. 6.5. Сдвоенные регистры X, Y, Z 15 ХН XL 0 X-регистр |7 0|7 0 R27 (0x1 В) R26 (0x1 А) 15 УН YL 0 У-регистр Г? 4? 0 R29 (0x1 D) R28 (0x1 С) 15 ZH ZL 0 Z -рөгистр р °F 0 R31 (0x1 F) R30 (0x1 Е) Указатель стека Стек, главным образом, используется: ♦ для временного хранения данных; ♦ для хранения локальных переменных; ♦ для хранения адреса выхода из подпрограммы или процедуры об работки прерывания. Регистр указателя стека всегда указывает на его вершину. Внимание. Стек выполнен таким образом, что перемещается от своей вершины вниз, к ячейкам памяти с меньшим адресом. По этой причине команда PUSH (записать в стек) уменьшает указатель стека. Указатель стека указывает на стековую область в памяти данных (SRAM). В стеке, кроме прочего, сохраняются; ♦ адрес выхода из подпрограммы; ♦ адрес выхода из процедуры обработки прерывания. Поэтому в любой программе адрес начала стека необходимо опреде лить перед тем, как будет вызвана любая подпрограмма, и перед тем, как будут разрешены прерывания. Первоначально указатель стека должен быть установлен на адрес не ниже 0x60. Указатель стека уменьшается на единицу, когда данные записываются в стек при помощи команды PUSH, и уменьшается на два, когда в стек записывается адрес возврата из подпрограммы или процедуры обра ботки прерывания. Указатель стека увеличивается на единицу, когда данные читаются из стека при помощи команды POP, и увеличивается на два, когда данные извлекаются из стека при выходе из подпрограммы (команда RET) или завершении процедуры обработки прерывания (команда RETI). Указатель стека во всех микросхемах AVR выполнен в виде двух 8-разрядных регистров ввода-вывода. Число фактически используемых
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==