参考になるかわかりませんが、私の公開しているタイマーのTMR0中のINPUT_TIME関数でも似たようなことをやっています。