Быстрые регистры стека.

Автор: Super User Просмотров: 1117

Причем значение регистров W, STATUS и BSR записывается автоматически, а уже восстанавливать при выходе из прерывания или нет решать программисту.  Для восстановления значений необходимо выполнить команду  RETFIE FAST или  RETFIE 1. Естественно не стоит забывать про систему приоритета, в случае задействования которой, когда в интервале  исполнения прерывания с низким приоритетом возникает прерывания с высоким, значение  регистров W, STATUS и BSR, сохраненные автоматически при переходе на обработку прерывания теряются.

Это что касается  прерываний.  Если прерывания в программе не задействованы, то быстрые регистры стека можно применить и  в других случаях. Для этого, при вызове ПП  нужно использовать команды CALL  XX, FAST и RCALL  XX,FAST ( где ХХ является меткой (названием) ПП ),  а при возврате из ПП  команду   "RETURN    FAST".  В результате не зависимо какие значение принимали данные регистры во время исполнения ПП, при выходе из нее регистры W, STATUS и BSR  восстановят свое значение из быстрых регистров стека.

Давайте рассмотрим пример, в котором первоначально в регистры W, STATUS и BSR  запишем определенные значения,  а при выполнении ПП перезапишем другими.

;************************************
START       movlw              11h ; записываем в W число 11h
            movlb                3 ; выбираем 3 банк (FSR)
            bcf           STATUS,0 ; сбрасываем бит 0 в регистре STATUS
            call          SSS,FAST ; вызов ПП
            goto             START ; снова

;-----------------------------------
SSS         movlw              14h ; записываем в W число 14h
            movlb                5 ; выбираем 5 банк (FSR)
            bsf           STATUS,0 ; устанавливаем  бит 0 в регистре STATUS
            RETURN FAST            ; возврат из ПП с восстановлением
;-----------------------------------

 end

 

В результате, после выполнения подпрограммы, значение регистров W, STATUS и BSR  остались прежними. А вот если вместо команды "RETURN FAST" выполнить просто RETURN, то результат будет совершенно другой.


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru