Собственно, вектор можно и оперативно перенаправлять, с целью заставить таймер выполнять различные функции в различных режимах работы устройства. Резервируем переменную для адреса перехода (скажем, TimerVector_l и TimerVector_h - младший и старший байт соответственно).
Вместо
Код
ljmp timer
пишем
Код
push TimerVector_l
push TimerVector_h
ret; тем самым в PC оказывается значение TimerVector.
Перед запуском таймера переменную, разумеется, нужно проинициализировать, вроде:
Код
mov TimerVector_l, #LOW(gen1kHz)
mov TimerVector_h, #HIGH(gen1kHz)
;________собственно обработчики
gen1kHz: ;bla-bla...
;...
reti
gen2kHz: ;bla-bla...
;...
reti
blink: ;bla-bla...
;...
reti