Podrías utilizar el timer1 por ejemplo de un pic18 como contador síncrono, pero los timers de los pics 18 son a lo más de 16 bits, por lo tanto podrías contar 2^16 pulsos que te daría un tiempo de cuenta a 1Mhz de 2^16/10^6 = 65.536mseg.
Pero si utilizas un dspic podrías concatenar 2 timers, uno tipo B (timer2)y otro tipo C(timer3), de 16 bits y así obtener un timer de 32 bits que te permite contar 2^32 pulsos, a la frecuencia de 1Mhz tendrías un tiempo de 2^32/10^6 = 4294.967296 seg, los impulsos de conteo los da la misma fuente externa por tanto la cuenta va a ser correcta.