Prueba a poner #int_ext en vec de #int1_ext Yo lo acabo de probar compila pero no funciona. Luego deberias poner en
void ext_isr()
{
..............
............
clear_interrupt(INT_EXT);
}
al final de la interrupcion Yo tambien soy bastante nuevo no se muy bien su comportamiento interno, pero tiene que ver con resetear la interrupcion para que su resultado final no afecte a la siguiente. una puesta a cero de sus banderas.
Al parecer tampoco son buenos tantos derlays() dentro de ella, en el caso de que haya mas interrupciones de por medio dile solo a void ext_isr() que ejecute la funcion que sea dentro de main()