Можно обмануть всех.
Допустим в МК используется 5 аппаратных векторов прерывания (IRQ0...IRQ4)
Тогда можно объявить функцию обработки прерывания по вектору IRQ5
Код
void IRQ_FUNC(void) interrupt 5 // using N при необходимости
{...}
Причем аппаратно на этот вектор никогда перехода не будет.
В ассемблере передавать управление ей. Только учесть - по адресу данного вектора (0x3 + IRQ_N * 7 (в нашем случа IRQ_N это 5)) будет располагаться команда перехода.
Keil сформирует сохранение и восстановление
ИСПОЛЬЗУЕМЫХ ДАННОЙ ФУНКЦИЕЙ РЕГИСТРОВ.
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.