problema com meu código

Olá a todos!
Alguém pode me ajudar a encontrar o que há de errado com o meu código?
O circuito é muito simples, tenho um led em GP0, um led em GP1 e um interruptor em GP3.
O que ele deveria fazer: Eu quero que, ao fechar o interruptor, um dos leds apague e o outro acenda, e ao abrir o interruptor, um acenda e o outro apague.
O problema parece estar na linha que diz: "btfss GPIO,GP3"
Pois se o interruptor esta aberto o led que esta em GP0 inicia aceso e fechando-se o interruptor, eu consigo o meu intento, ou seja o led GP0 apaga e acende GP1, mas a partir dai o programa nao responde mais ao estado do interruptor.
Se eu troco a linha por "btfsc GPIO,GP3" iniciando tambem com o interruptor aberto, é o led GP1 inicia aceso. E fechando o interruptor, o led GP0 acende e GP1 apaga, aí o programa nao responde mais ao estado do interruptor.
Muito obrigada
;;;***********************************
list p=12F675
#include <p12F675.inc>
errorlevel -302 ; no warnings about registers not in bank 0
;***** CONFIGURATION
; ext reset, no code or data protect, no brownout detect,
; no watchdog, power-up timer, 4Mhz int clock
__CONFIG _BODEN_ON & _MCLRE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
;**********************************************************************
RESET CODE 0x0000
call 0x03FF
banksel OSCCAL
movwf OSCCAL
; initialisacao
movlw b'111100'
banksel TRISIO
movwf TRISIO
;;;*****************************
poopo
movlw b'111100'
banksel GPIO
movwf GPIO
goto poopa
;;;;****************************
poopa
nop
btfss GPIO,GP3
goto poopu
goto poopi
poopu
;;;GP0
movlw b'111110'
banksel GPIO
movwf GPIO
goto poopa
poopi
;;;GP1
movlw b'111101'
banksel GPIO
movwf GPIO
goto poopa
END
Alguém pode me ajudar a encontrar o que há de errado com o meu código?
O circuito é muito simples, tenho um led em GP0, um led em GP1 e um interruptor em GP3.
O que ele deveria fazer: Eu quero que, ao fechar o interruptor, um dos leds apague e o outro acenda, e ao abrir o interruptor, um acenda e o outro apague.
O problema parece estar na linha que diz: "btfss GPIO,GP3"
Pois se o interruptor esta aberto o led que esta em GP0 inicia aceso e fechando-se o interruptor, eu consigo o meu intento, ou seja o led GP0 apaga e acende GP1, mas a partir dai o programa nao responde mais ao estado do interruptor.
Se eu troco a linha por "btfsc GPIO,GP3" iniciando tambem com o interruptor aberto, é o led GP1 inicia aceso. E fechando o interruptor, o led GP0 acende e GP1 apaga, aí o programa nao responde mais ao estado do interruptor.
Muito obrigada
;;;***********************************
list p=12F675
#include <p12F675.inc>
errorlevel -302 ; no warnings about registers not in bank 0
;***** CONFIGURATION
; ext reset, no code or data protect, no brownout detect,
; no watchdog, power-up timer, 4Mhz int clock
__CONFIG _BODEN_ON & _MCLRE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
;**********************************************************************
RESET CODE 0x0000
call 0x03FF
banksel OSCCAL
movwf OSCCAL
; initialisacao
movlw b'111100'
banksel TRISIO
movwf TRISIO
;;;*****************************
poopo
movlw b'111100'
banksel GPIO
movwf GPIO
goto poopa
;;;;****************************
poopa
nop
btfss GPIO,GP3
goto poopu
goto poopi
poopu
;;;GP0
movlw b'111110'
banksel GPIO
movwf GPIO
goto poopa
poopi
;;;GP1
movlw b'111101'
banksel GPIO
movwf GPIO
goto poopa
END