Si bien soy partidario del uso de las interrupciones, en este caso particular me parece que estás complicando tal vez más de lo que está solucionando. Si el propósito de la interrupción no es académico no me parece un buen caso para utilizar la interrupción.
Desactivando la interrupción y colocando:
TRIGER
BTFSC PORTB,0
GOTO TRIGER
BSF PORTA,0
...
Alcanza y sobra para tu propósito.
Ojo que en ese caso se puede perder la separación entre pulsos de 60mS.
Por otro lado, estás guardando y restaurando de forma errónea los registros clave (W y STATUS en este caso). No podés usar movf libremente, porque movf es una instrucción que modifica el flag Z del registro STATUS, por lo que estás corrompiendo el correcto valor del registro a restaurar. Eso puede hacer que tu programa se descontrole en el momento menos pensado. Revisá la forma correcta de hacerlo, revisando el datasheet de tu uC, bajo la sección: Context Saving During Interrupts.