hola!!tengo unproblema con las interrupciones, encontre algo bastante extraño,en el programa que les mando genero una interrupcion por RBO ,intento prender y apagar un led cuando esto sucede pero parece no hacerme caso al delay(que hay entre el encendido y el apagado),el delay lo cheque afuera de la rutina de interrupcion y anda bien...
Cuando hay una interrupcion por RBO el programa entra bien en la rutina de interrupcion pero no me respeta el delay ,me prende el led mientras mientras esta presente la interrupcion y tendria que prenderlo ,esperar el delay y apagarlo ...bueno...ahi les mando el codigo a ver quien me puede dar una mano
,saludos
Javier
pd:en el programa principal prendo y apago otro led(led2)
Define INTHAND _INTERRUPCION
SALVAW var byte bank0 system
SALVASTATUS var byte bank0 system
SALVAPCL var byte bank0 system
FLIP1 VAR BYTE bank0 system "FLIP 1,FLIP2,FLIP3 VARIABLES USADAS PARA EL DELAY
FLIP2 VAR BYTE bank0 system
FLIP3 VAR BYTE bank0 system
led1 var porta.3 "LED 1
led2 var porta.2 "LED 2
cont var byte
OPTION_REG=%10000000 "DESABILITO PULL UP,FLANCO DECRECIENTE RBO
INTCON=%10010000 "HABILITO INTERRUPCIONES GLOBAL,HABILITO INTERRUP RBO
trisa=0 "porta salidas
led2=0
led1=0
cont=0
FLIP1=0
FLIP2=0
FLIP3=0
goto Programa_principal
INTERRUPCION: "**********************
asm
bcf INTCON,GIE ;desactivo interrup
bcf INTCON,INTF ;borro bandera rbo
bsf _led1 ;prendo led
call delay ;llamo retardo aprox 1 seg
bcf _led1 ;apago led
movf SALVAPCL,W ; Restore PCLATH, STATUS and W registers
movwf PCLATH
swapf SALVASTATUS,W ;Invierte STATUS --> W
movwf STATUS ;Restaura STATUS
swapf SALVAW,F ;Invierte --> F
swapf SALVAW,W ;Restaura W
bsf INTCON,GIE ; Activa interrupciones generales
retfie
delay ;DELAY aprox 1 SEGUNDO(cristal 4mhz)
MOVLW .5
MOVWF FLIP3
AHI movlw .255
movwf FLIP1
ALLI movlw .255
movwf FLIP2
DECFSZ FLIP2,f
GOTO $-1
DECFSZ FLIP1,f
GOTO ALLI
DECFSZ FLIP3
GOTO AHI
return
endasm
Programa_principal:
led2=1
pause 1000
led2=0
pause 1000
goto Programa_principal
end