@ Joe,

in your previous example, you should move your ISR or jump over
Code:
Init:    
    lcdout $FE,1
    LCDOUT 254,128,"AUTHORIZATION"
    LCDOUT 254,192,"REQUIRED TO OPEN"
    LCDOUT 254,153,"THIS GATE"
    LCDOUT 254,212,"KEY ENTRY CODE"

    '    ----> goto start:
 disable
KeypadINT:    
@ READKEYPAD _ByteA
    TRISB=%11110000
    PORTB=0
    INTCON.0=0
    resume
enable   
Start:
What happen here is that it meet a RESUME, which do something close to a RETURN. Having nothing is the stack, it jump somewhere you don't know and execute the code at the top again and again... and again...