Hallihallo...
Ich bin gerade dabei mich in den 16F876 einzuarbeiten.
Bin recht erstaunt, was man damit alles machen kann.
Die sache mit den Timern ist eigentlich recht einfach:
Man stellt als erstes einen Vor-Teiler, ausgehend von 1/4 der PIC-Taktfrequenz ein und initialisiert den Timer mit einem Startwert.
nach dem start läuft der Timer dann im Hintergrund und man kann beim NULL-Durchgang auf einen Interrupt reagieren.
(Ich kann aber leider kein assembler, stattdessen arbeite ich mit MPLAB und habe den cc5x-Compiler in der FREE-Edition eingebunden.)
Wichtig bei interrupten ist es, das die Interruptroutine bei der Adresse 4 beginnt: #pragma origin 4 heißt das bei cc5x.
TMR1IF ist das Interruptflag
TMR1IE=1 schaltet die Interruptbehandlung ein
GIE=1 schaltet global die Interrupts an

ich werde mal meinen C-Code aufarbeiten und ein Beispiel posten.
kann ja wenn gewünscht das ASM-File mit Kommentaren auch noch posten...

ich hoffe ich konnte ein wenig weiterhelfen...

Das Beispiel mit TMR1... ist wie zu sehen für den zweiten von 3 Timern, die der 16F876 besitzt.
es handelt sich hier um einen 16-Bit-Timer, bestehend aus einem Hi-Byte und einem Lo-Byte (siehe Datenblatt)
Man kann natürlich auch den Timer 0 (8-Bit) nutzen...

Zur Nutzung con interrupten mit dem CC5X-Compiler empfehle ich sich die Homepage http://www.cc5x.de mal anzuschauen, hat mir auch weitergeholfen.