Strange. This works precisely as expected. No matter how many times I press/release the
switch.
Code:
@ DEVICE MCLR_OFF, INTRC_OSC_NOCLKOUT, WDT_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
DEFINE OSCCAL_1K 1

CMCON = 7
TRISIO = %001100
OPTION_REG = %01000000
GPIO = 0
T1CON = 0

'GPIO.0 =
'GPIO.1 = LED HIGH OUT
'GPIO.2 = SWITCH HIGH INPUT
'GPIO.3 = MCLR TIED HIGH
'GPIO.4 =
'GPIO.5 =

Main:
    HIGH GPIO.1 
    PAUSE 1000
    LOW GPIO.1 
    
    INTCON.1 = 0
    INTCON.4 = 1
    FLAGS = 0
    @ SLEEP
    @ NOP
    
    INTCON.1 = 0
    HIGH GPIO.1
    PAUSE 100
    LOW GPIO.1
    
    INTCON.1 = 0
    INTCON.4 = 1
    FLAGS = 0
    @ SLEEP
    @ NOP
    HIGH GPIO.1
    PAUSE 1000
    GOTO Main
    
    END
10K pull-down to ground on GPIO.2 with switch pulling it to Vcc on press.