TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: guille339682 en 03 de Abril de 2005, 10:53:00

Título: INTERRUPCION
Publicado por: guille339682 en 03 de Abril de 2005, 10:53:00
Saludos Amigos del PIC 16f87x
Necesitaria una Rutina que
Salve Registros Importantes para una INTERRUPCION
 "PUSH y POP" .ya que la que uso no anda bien.
Desde ya Muchas GRACIAS.guille
nuevosrumbossiglo21@hotmail.com

Título: RE: INTERRUPCION
Publicado por: guille339682 en 03 de Abril de 2005, 10:56:00
Cita:
Saludos Amigos del PIC 16f87x
Necesitaria una Rutina que
Salve Registros Importantes para una INTERRUPCION
 "PUSH y POP" .ya que la que uso no anda bien.
Desde ya Muchas GRACIAS.guille
guille.alva@gmail.com


Título: RE: INTERRUPCION
Publicado por: micro_pepe en 04 de Abril de 2005, 13:33:00
El unico registro que se guarda tras la interrupcion de forma automatica es el PC, por lo que puede ser necesario guardar el registro de estado por ejemplo.

Y despues de una interrupción, es necesario resetear los flag de interrupción, pues no se borran.

Espero haberte sido de ayuda.
Título: RE: INTERRUPCION
Publicado por: squallmx en 04 de Abril de 2005, 16:17:00
aqui tienes la rutina que hago tras una int espero te sirva.

                MOVWF    W_TEMP                  ;RESPALDA W
              SWAPF    STATUS,W                ;RESPALDA
              MOVWF    ST_TEMP

codigo de int .........................                            
                MOVF   W_TEMP,W                
                SWAPF    ST_TEMP,W              ;VALOR ORIGINAL DE STATUS
              MOVWF    STATUS                  ;SIN AFECTARLO
   

Saludos
Título: RE: INTERRUPCION
Publicado por: jrcl en 01 de Noviembre de 2005, 22:59:00
Escrito originalmente por squallmx
aqui tienes la rutina que hago tras una int espero te sirva.

                MOVWF    W_TEMP                  ;RESPALDA W
              SWAPF    STATUS,W                ;RESPALDA
              MOVWF    ST_TEMP

codigo de int .........................                            
                MOVF   W_TEMP,W                
                SWAPF    ST_TEMP,W              ;VALOR ORIGINAL DE STATUS
              MOVWF    STATUS                  ;SIN AFECTARLO
   

Saludos


El codigo de squallmx mejorado
En el codigo de int .................
                SWAPF    ST_TEMP,W        ;VALOR ORIGINAL DE STATUS
              MOVWF    STATUS                  ;SIN AFECTARLO
                swapf    W_TEMP,1               ;no afecta a STATUS
                swapf    W_TEMP,W              ;W=valor original, no afecta a STATUS

porq lo hice? en el codigo int ... original W termianaba con el valor de STATUS, y su valor original se perdia.

Gracias squallmx por tu rutina