Pues mira.. te comento sólo una opinión. No se si será la correcta, pero supongo que la precisión depende del oscilador (cristal o lo que tengas) y luego del programa.
Si que se puede implementar un reloj y para que sea lo más preciso posible deberías usar un oscilador que te permita crear la base de tiempo, temporización, usando el desbordamiento del timer. Nada de usar recarga.
Para ello usa cristales tales como 3,2768MHz. En general los que dan división entera al hacer Fcristal/256
Así te evitas lo de hacer la recarga del timer, con lo que se necesitan instrucciones, osea, retraso. Se puede ajustar esto, contando el tiempo que tarda en ejecutar esta instrucciones, en cada caso, y luego ir restando cuando sea necesario... pero mejor si usas un cristal así.
También te recomiendo hacer como en los RTC, para el oscilador. Intentar aislarlo con masa alrededor para que tome el menor ruido posible. También soldar el encapsulado del reloj a masa...
Bueno, es sólo una opinión. No se si será correcta, ya que yo no lo implementé nunca. Usos RTC ya encapsulados.
Saludos!!