seguramente que si te explico con lujo de detalles lo que hace un timer y la interrupcion que provoca seguramente duplicaré información que ya esta acá en el foro, así que trataré de resumir, peor para una mejor explicación te ruego que busques en el foro, pues el tema de timers e interrupciones está muy bien desarrollado por aca. Te resumo:
Nuestros micros tienen TIMER's, algunos 1, otros 2 otros 3, y así dependiendo del tipo de uC, los más comunes son el tmr0 y el tmr1 (según mi punto de vista) cada uno tiene alguna característica que lo distingue de los otros.
Estos Timer son simplemente registros de nuestro uC, registros de 8 o 16 bits (al menos en familias 16Fy 18F, para abajo)
Los timers, dependiendo de la configuración que le des contarán indefinidamente, en si una vez que actives a un timer se incrementará de uno en uno y desde 0 (o el valor con el que o inicies) hasta desbordar en 255 (con timers de 8bits) o 65535 (en 16bits), se incrementarán con una velocidad variable (que el programador lo configura, y dependerá tb de la Fosc, que es la frecuencia de tu cristal) cuando desborden volverán a contar desde 0 otra vez, y así es la triste y aburrida vida de los timer's, no hacen nada más que eso, pero esa su aburrida rutina que tiene a nosotros nos servirá muchísimo y nos hará una vida feliz
Pues podemos aprovechar los desbordes que esta cuenta tendrá, y en efecto este desborde provoca una INTERRUPCION, que nosotros sabremos en que tiempo se realiza, por tanto podemos contar interrupciones (previamente sabiendo cuanto dura un desborde del timer) y cuando suceda una determinada cantidad de interrupciones (entonces pasó un determinado tiempo) y podemos ejecutar una rutina de código.
La cuenta del timer no siempre sera desde 0, sino que puede ser configurable tb por el programador.
De esta manera y con un registro de PREESCALER podemos hacer variar casi a cualquier valor que queramos de temporización.
normalmente el timer se incrementará cada ciclo de reloj (preescaler=1), pero con el preescaler se puede hacer retrasar de cierta manera esa cuenta, y por ejemplo con un preescaler 2, hacer que se incremente cada 2 ciclos de reloj, y así sucesivamente.
Y hasta hay formulas y programas para poder determinar el tiempo preciso, te recomiendo nuevamente que le des una mirada al foro con el buscador, seguramente que encuentras mucho material.
Te sugiero estas web:
Pag de RedpicPag de Nocturnoy el foro.
espero te sirva, un saludo, adios