Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Стековая память в МК PIC16F87x



Указатель стека – это специальный регистр, который предназначен для организации так называемой стековой памяти, которая широко применяется в выч.технике. Стек – это некий буфер, состоящий из нескольких ячеек памяти, имеющий один вход, который одновременно является и выходом. Запись в стековую память и чтение из нее производится по принципу «последний зашел – первый вышел». Стековую память очень часто используют при программировании. Особенно удобно использовать стек для сохранения данных при входе в подпрограмму и восстановления их перед выходом.

PIC16F87X имеют 8-уровневый 13-разрядный аппаратный стек. Стек не имеет отображенияна память программ и память данных, нельзя запись или прочитать данные из стека. Значение счетчика командзаносится в вершину стека при выполнений инструкций перехода на подпрограмму (CALL) или обработки прерываний. Чтение из стека и запись в счетчик команд РС происходит при выполнении инструкций возвращения из подпрограммы или обработки прерываний (RETURN, RETLW, RETFIE), при этом значение регистра PCLATH не изменяется.

Стек работает как цикличный буфер. После 8 записей в стек, девятая запись запишется на место первой, а десятая запись заменит вторую и т.д.

В МК нет никаких указателей о переполнении стека, также не предусмотрено команд записи/чтения из стека, кроме команд вызова/возвращения из подпрограмм (CALL, RETURN, RETLW и RETFIE) или условий перехода по вектору прерываний.

47. Двоичное изображение в памяти программ команд управления и операций с константами в МК PIC16F87x.

48.Объясните работу команды DESFSZ в МК PIC16F87x. Назначение этой команды состоит в вычитании 1 из содержимого регистра, адрес которого указан параметром f (F - регистра), и пропустить следующую команду, если результат равен 0. Синтаксис: drcfsz f, d Изменяемые флаги: нет.

В отличие от команды incfsz при выполнении команды содержимое указанногоF-регистра не увеличивается, а уменьшается на 1. Результат также сохраняется в регистре, указанном параметром d, т.е. в регистре W при d=0 или в F-регистре при d=1. После операции уменьшения на 1 проверяется равен ли 0 результат. Если да, то следующая команда пропускается или она меняется на другую команду nop. Поэтому в команде используются 2 командных цикла в случае передачи управления. Если же результат не равен 0, то никакого перехода не происходит, а выполняется следующая ближайшая команда, и в этом случае для команды достаточно только 1 командного цикла.

DECFSZ Вычесть 1 из f и пропустить если 0

Синтаксис: [ label ] DECFSZ f,d

Операнды: 0 ≤ f ≤ 127

d ∈ [0,1]

Операция: (f) - 1 → (dest); пропустить если результат равен 0

Измен.флаги: Нет

Описание: Декрементировать содержимое регистра 'f'. Если d=0,

результат сохраняется в регистре W. Если d=1, результат

сохраняется в регистре 'f'.

Если результат не равен '0', то исполняется следующая

инструкция. Если результат равен '0', то следующая

инструкция не выполняется, команда выполняется за два

цикла. Во втором цикле выполняется NOP.





Дата публикования: 2015-02-03; Прочитано: 491 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.185 с)...