Está en la página 1de 1

REGISTROS ALTERADOS - THE WELS THEORY

Durante una interrupción es necesario guardar algunos registros ya que estos se


pueden modificar. Encontrarás más información en: Facebook.com/WelsTheory/ y
Youtube.com/Wels_Theory

Regitros a Guardar

El contenido de los registros W y STATUS deben ser guardados


junto con los registros que varíen su valor en cada interrupción.
Microchip recomienda la siguiente secuencia de código:

CBLOCK ;Se definen las variables donde se guardarán los registros


Guarda_W
Guarda_STATUS
Guarda_R_ContA
Guarda_R_ContB
ENDC

ServicioInterrupcion
movwf Guarda_W ; Guarda W y STATUS.
swapf STATUS,W ; Ya que "movf STATUS,W", corrompe el bit Z.
movwf Guarda_STATUS
bcf STATUS,RP0 ; Para asegurarse que trabaja con el banco 0.
movf R_ContA,W ; Guarda los registros utilizados en esta
movwf Guarda_R_ContA ; subrutina y también en la principal.
movf R_ContB,W
movwf Guarda_R_ContB

(Acá va la acción que hará cuando aparezca una interrupción)

FinInterrupcion
swapf Guarda_STATUS,W ; Restaura el STATUS.
movwf STATUS
swapf Guarda_W,F ; Restaura W como estaba antes de producirse
swapf Guarda_W,W ; interrupción.
movf Guarda_R_ContA,W ; Restaura los registros utilizados en esta
movwf R_ContA ; subrutina y también en la principal.
movf Guarda_R_ContB,W
movwf R_ContB
bcf INTCON,INTF ; Limpia flag de reconocimiento de la
interrupción.
retfie ; Retorna y rehabilita las interrupciones.

También podría gustarte