I would just keep using counters. maybe set a timer up to freerun with the biggest pre-scale your PIC supports. Caculate how long it takes to rollever based on your clock. then just poll the timer flag for the timer you are using. when the flag is set, gosub to you counter update routine.

in there clear the flag and add 1 to your count.

As for accuracy, this will not be as spot on as an interrupt, but the margin of error will only be how long your main takes.

you might need more then 1 counter, depends on PIC and speed and things like that