Ajuda pic 12f675

Ola. Venho pedir ajuda para quem possa identificar o que eu estou fazendo de errado pois eu estava aprendendo numa boa sobre interrupcoes, aprendi bem como se faz interrupt pelo timer0 mas chegou na hora de aprender sobre interrupt externo e estou empacada.
O programa que to tentando fazer funcionar simplesmente acende um led quando o interrup externo é detectado (tem uma explicacao no cabecalho do codigo)
Link pro meu circuito:
http://www.servidorbigua.comli.com/adicion/varios/circui.jpg
Abaixo segue o código, que foi retirado desta apostila:http://www.gooligum.com.au/tutorials/midrange/PIC_Mid_A_6.pdf
O codigo abaixo deveria funcionar bem pois foi retirado da apostila, o problema deve ser mais como o meu circuito mesmo, ou com algum procedimento sei la. o codigo é pro 12f629, mas to usando o 12f675. (mplab7.31 e isis 7.6 SP0)
;************************************************************************
; *
; Filename: MA_L6-Toggle_LED-ext-int.asm *
; Date: 23/6/09 *
; File Version: 1.1 *
; *
; Author: David Meiklejohn *
; Company: Gooligum Electronics *
; *
;************************************************************************
; *
; Architecture: Midrange PIC *
; Processor: 12F629 *
; *
;************************************************************************
; *
; Files required: none *
; *
;************************************************************************
; *
; Description: Lesson 6 example 5 *
; *
; Demonstrates use of external interrupt (INT pin) *
; *
; Toggles LED on GP1 *
; when pushbutton on INT is pressed (high -> low transition) *
; *
;************************************************************************
; *
; Pin assignments: *
; GP1 - indicator LED *
; INT - pushbutton (active low) *
; *
;************************************************************************
list p=12F675
#include <p12F675.inc>
errorlevel -302 ; no "register not in bank 0" warnings
errorlevel -312 ; no "page or bank selection not needed for this device" messages
;***** CONFIGURATION
; ext reset, no code or data protect, no brownout detect,
; no watchdog, power-up timer, 4Mhz int clock
__CONFIG _MCLRE_ON & _CP_OFF & _CPD_OFF & _BODEN_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
; pin assignments
constant nB_LED=1 ; "button pressed" indicator LED on GP1
;***** VARIABLE DEFINITIONS
CONTEXT UDATA_SHR ; variables used for context saving
cs_W res 1
cs_STATUS res 1
GENVAR UDATA_SHR ; general variables
sGPIO res 1 ; shadow copy of GPIO
;************************************************************************
RESET CODE 0x0000 ; processor reset vector
pagesel Start
goto Start
;***** INTERRUPT SERVICE ROUTINE
ISR CODE 0x0004
; *** Save context
movwf cs_W ; save W
movf STATUS,w ; save STATUS
movwf cs_STATUS
; *** Service external interrupt
; Triggered on high -> low transition on INT pin
; caused by externally debounced pushbutton press
;
bcf INTCON,INTF ; clear interrupt flag
; toggle LED
movlw 1<<nB_LED ; toggle indicator LED
xorwf sGPIO,f ; using shadow register
isr_end ; *** Restore context then return
movf cs_STATUS,w ; restore STATUS
movwf STATUS
swapf cs_W,f ; restore W
swapf cs_W,w
retfie
;***** MAIN PROGRAM
MAIN CODE
Start ; calibrate internal RC oscillator
call 0x03FF ; retrieve factory calibration value
banksel OSCCAL ; then update OSCCAL
movwf OSCCAL
;***** Initialisation
; configure port
movlw ~(1<<nB_LED) ; configure LED pin as output
banksel TRISIO
movwf TRISIO
; initialise port
banksel GPIO
clrf GPIO ; start with all LEDs off
clrf sGPIO ; update shadow
; configure external interrupt
banksel OPTION_REG
bcf OPTION_REG,INTEDG ; trigger on falling edge (INTEDG = 0)
; configure interrupts
movlw 1<<GIE|1<<INTE ; enable external and global interrupts
movwf INTCON
;***** Main loop
loop
; continually copy shadow GPIO to port
banksel GPIO
movf sGPIO,w
movwf GPIO
; repeat forever
goto loop
END
O programa que to tentando fazer funcionar simplesmente acende um led quando o interrup externo é detectado (tem uma explicacao no cabecalho do codigo)
Link pro meu circuito:
http://www.servidorbigua.comli.com/adicion/varios/circui.jpg
Abaixo segue o código, que foi retirado desta apostila:http://www.gooligum.com.au/tutorials/midrange/PIC_Mid_A_6.pdf
O codigo abaixo deveria funcionar bem pois foi retirado da apostila, o problema deve ser mais como o meu circuito mesmo, ou com algum procedimento sei la. o codigo é pro 12f629, mas to usando o 12f675. (mplab7.31 e isis 7.6 SP0)
;************************************************************************
; *
; Filename: MA_L6-Toggle_LED-ext-int.asm *
; Date: 23/6/09 *
; File Version: 1.1 *
; *
; Author: David Meiklejohn *
; Company: Gooligum Electronics *
; *
;************************************************************************
; *
; Architecture: Midrange PIC *
; Processor: 12F629 *
; *
;************************************************************************
; *
; Files required: none *
; *
;************************************************************************
; *
; Description: Lesson 6 example 5 *
; *
; Demonstrates use of external interrupt (INT pin) *
; *
; Toggles LED on GP1 *
; when pushbutton on INT is pressed (high -> low transition) *
; *
;************************************************************************
; *
; Pin assignments: *
; GP1 - indicator LED *
; INT - pushbutton (active low) *
; *
;************************************************************************
list p=12F675
#include <p12F675.inc>
errorlevel -302 ; no "register not in bank 0" warnings
errorlevel -312 ; no "page or bank selection not needed for this device" messages
;***** CONFIGURATION
; ext reset, no code or data protect, no brownout detect,
; no watchdog, power-up timer, 4Mhz int clock
__CONFIG _MCLRE_ON & _CP_OFF & _CPD_OFF & _BODEN_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
; pin assignments
constant nB_LED=1 ; "button pressed" indicator LED on GP1
;***** VARIABLE DEFINITIONS
CONTEXT UDATA_SHR ; variables used for context saving
cs_W res 1
cs_STATUS res 1
GENVAR UDATA_SHR ; general variables
sGPIO res 1 ; shadow copy of GPIO
;************************************************************************
RESET CODE 0x0000 ; processor reset vector
pagesel Start
goto Start
;***** INTERRUPT SERVICE ROUTINE
ISR CODE 0x0004
; *** Save context
movwf cs_W ; save W
movf STATUS,w ; save STATUS
movwf cs_STATUS
; *** Service external interrupt
; Triggered on high -> low transition on INT pin
; caused by externally debounced pushbutton press
;
bcf INTCON,INTF ; clear interrupt flag
; toggle LED
movlw 1<<nB_LED ; toggle indicator LED
xorwf sGPIO,f ; using shadow register
isr_end ; *** Restore context then return
movf cs_STATUS,w ; restore STATUS
movwf STATUS
swapf cs_W,f ; restore W
swapf cs_W,w
retfie
;***** MAIN PROGRAM
MAIN CODE
Start ; calibrate internal RC oscillator
call 0x03FF ; retrieve factory calibration value
banksel OSCCAL ; then update OSCCAL
movwf OSCCAL
;***** Initialisation
; configure port
movlw ~(1<<nB_LED) ; configure LED pin as output
banksel TRISIO
movwf TRISIO
; initialise port
banksel GPIO
clrf GPIO ; start with all LEDs off
clrf sGPIO ; update shadow
; configure external interrupt
banksel OPTION_REG
bcf OPTION_REG,INTEDG ; trigger on falling edge (INTEDG = 0)
; configure interrupts
movlw 1<<GIE|1<<INTE ; enable external and global interrupts
movwf INTCON
;***** Main loop
loop
; continually copy shadow GPIO to port
banksel GPIO
movf sGPIO,w
movwf GPIO
; repeat forever
goto loop
END