Lo que pasa es que este dispositivo se resetea cuando se despierta , lo que tienes que hacer es revisar la causa del reset antes de poner la intruccion SLEEP y si el reset se debe a un cambio en algun pin saltarte la intruccion SLEEP, el bit que indica si el reset se produjo por un cambio de estado en un pin es el GPWUF que se encuentra en el registro STATUS
Entonces tendrias algo asiCódigo: ASM
btfss STATUS,GPWUF ;GPWUF == 1? , reset por cambio de estado? sleep ;No => dormimos ;Si => atendemos al boton presionado ;Codigo para atender el boton bcf STATUS,GPWUF ;GPWUF = 0, porque ya atendimos al reset goto inicio
Saludos