Problema con pic16f84 con interrupciones

Tengo un problema bastante gordo.... tengo que hacer un proyecto en la facul pero estoy un poquito atascado en el final....

Tengo un ficher interrupcion donde estoy creando una interrupcion que lo que tiene que hacer es mantener el servomotor cerrado y porteriormente abierto...creo que las constantes estan bien inicializadas pero el problema esta en que no se como probarlo en el mplab 7.5 y creo que me falta algo el la RSI ....si alguien me puede ayudar porfavor estoy desesperado...aqui esta el codigo de la interrupcion........
include <p16f84.inc>
org 0x0 ; vector de reset
goto main
org 0x4 ; vector de interrupción
goto RSI

cblock 0X10
contador
abierto;nos dice si el servo esta abierto "1" o cerrado "0"
fase;nos dice si estamos en valle "0" o cresta "1"
WTEMP
STATUSTEMP
endc
cresta_cerrado equ 0X5
valle_cerrado equ 0X73
cresta_abierto equ 0X07
valle_abierto equ 0X71
main:
BANKSEL OPTION_REG
bcf OPTION_REG,T0CS
BANKSEL TRISA
bsf TRISA,3
BANKSEL PORTA
bsf PORTA,3;aqui es donde esta conectado el servo
BANKSEL OPTION_REG
bsf OPTION_REG,PSA;desenchufo el prescaler
;configurar INTCON
BANKSEL INTCON
bsf INTCON,GIE;se pone a uno el GIE para que las interrupciones funcionen
bsf INTCON,T0IE;habilitar el T0IE
bcf INTCON,T0IF
movlw 0
movwf abierto;ahora estamos en cerrado
movlw 0
movwf fase;y en valle
movlw valle_cerrado
movwf contador
goto $


RSI:
movwf WTEMP
movlw STATUS
movwf STATUSTEMP
swapf STATUS,w
movwf STATUSTEMP
bsf INTCON,T0IE
decfsz contador,f;salta si contador==0
retfie;cuando contador !=0
movlw 0x08
xorwf PORTA,f;niego porta
;el problemon estaria aqui
;depenidendo de fase y abierto
;se hara algo con las variables
;cresta y valle
;en esto estara el puto problema no se que hacer.......

swapf STATUSTEMP,w
movwf STATUS
swapf WTEMP,f
swapf WTEMP,w
end
 
Para simular interrupciones en el MPLab debes usar la opcion STIMULUS.

Por otra parte, seria bueno que incluyeras dentro de la subrutina de interrupcion la variable que indica abierto/cerrado (no la veo en tu rutina, supongo que es la variable "abierto")
 
Verás:
Cuando entras en la interrupción o cuando sales hay un flag que hay que bajar ( No veo la bajada de banderita en la interruccion). Pa mi que... y el retorno de la misma se hace con un... ( Lo pillas)

Venga, ánimo que es de muy facil solución. Repasa las interrupciones.
Saludos
 
Atrás
Arriba