Autor Tema: Problema con rutina de interrupcion  (Leído 1738 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado gabotronic

  • PIC12
  • **
  • Mensajes: 57
Problema con rutina de interrupcion
« en: 05 de Diciembre de 2004, 09:41:00 »
Amigos, tengo este problemita, puede que sea super basico pero no lo he podido solucionar.

Inter es una rutina de recepcion de datos luego de una interrupcion por llegada de dato. Necesito que el programa llame a la rutina loop solo si le envio un 1 desde VB, sino se va a ppal que es un loop.

Alguien me puede decir por que no me funciona

Es un 16F877



Inter   
      bcf      STATUS,RP0   ;Banco 0
      btfss          PIR1,RCIF         ;Ha sido interrupción en la recepción ??
      retfie                    ;No, falsa interrupción
      bcf      PIR1,RCIF      ;Si, restaurar el flag de interrupción
      movf         RCREG,W      ;Lee el dato recibido y lo pone en W
      movfw       rx              ;mueve dato a rx
      movlw       d"49"         ;pone en W, 1 en ascii
      subwf        rx,W         ;Resta dato recibido con 1
      btfsc          STATUS,Z             ;Si resta es 0 sigue sino salta
      call            Loop
      call             ppal              ;Llama rutina principal
      retfie

Saludos.

Desconectado wqtrp

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 170
RE: Problema con rutina de interrupcion
« Respuesta #1 en: 05 de Diciembre de 2004, 16:22:00 »
hola, una cosa q no dices es si "inter" es una interrupcion o no, aunque por el nombre pareciera q si y por los "retfie" tambien....
si es un interrupcion te diria lo siguiente:
.no es muy razonable (hay q ver las necesidades q tenes para esto) q desde la interrupcion llames a una rutina principal
.por otro lado hay q ver q es lo q hace cada una de ellas.... ppal y loop...
. como convencion una interrupcion es conveniente q solo tenga un lugar de salida "retfie",
. generalmente se restaura la interrupcion al final de la misma y justo antes de abandonarla.
.ademas deberia ver q es lo q hace el programa principal, pq puede ser necesario salvar el reg W y los flags si son utilizados en ambos lugares...

Suerte...


Desconectado gabotronic

  • PIC12
  • **
  • Mensajes: 57
RE: Problema con rutina de interrupcion
« Respuesta #2 en: 07 de Diciembre de 2004, 08:34:00 »
Solucionado:

En vez de movfw rx, era movwf y no me habia dado cuenta.

Saludos