Cuando pregunte por qué 'algo no funciona', siempre debe mencionar
1) lo que está intentado hacer
2) lo que realmente hace.
No puedo entender tu código. Las primeras líneas parecen definiciones de símbolos, pero tengo la sensación de que quieres que sean asignaciones.
La etiqueta isr: probablemente debería estar en ORG 4 (ya sea de forma exclusiva o por el script del vinculador), pero no creo que sea ahora.
¿ NO usa la construcción $ + 2! Hace que el código sea difícil de leer y propenso a errores de escritura (¿es +2 una o dos instrucciones?). Use etiquetas, como lo hace en otros lugares.
Dentro de un controlador de interrupciones, no puede estar seguro de lo que contendrá PCLATCH, por lo que no puede hacer ningún goto (o llamadas) hasta que haya configurado PCLATH. Y, por supuesto, primero debe guardar el antiguo PCLATH para poder restaurarlo al final del ISR.
Si está escribiendo un gestor de interrupciones, deberá guardar y restaurar el contexto, lo que debe hacerse de forma compleja en estos chips. Consulte la hoja de datos para ver ejemplos.
No muestra el código del controlador, así que no puedo verificarlo. Al menos debe borrar el bit de fuente de interrupción y terminar con un RETFIE.