multi tasking ??? one processor does always one thing.....

quite easy problem:
all depends on your timing - use high speed oscillator (20Mhz)
create a timer under interupt ( interupt 1ms) relaod timer
create counters as much as you need.
increment the counters on interupt and compare with value
if match - relaod counters with new value ...
beware that interupttime is smaller than 1ms !

all other calculations can be done out of interupt.

rgds
tb