L'interrupt del timer è uno delle quattro sorgenti di interrupt; le altre tre sono l'interrupt esterno (pin RB0/INT), l'interrupt associato ai cambiamenti dei pin RB4-RB8 e l'interrupt associato alla EEPROM per il completamento della scrittura dati.
Il registro del PIC16F84 coinvolto nella festione del'interrupt è il registro INTCON
Per abilitare l'interrupt del timer occorre porre a 1 il bit 5 di INTCON (istruzione BSF INTCON,5). Poi si deve porre a 1 il bit 7 dello stesso registro (BSF INTCON,7) per rendere effettiva l'azione di interrupt; fino a quando il bit 7 è a zero l'interrupt non è abilitato.
Il bit 2 del registro INTCON, denominato T0IF (Timer 0 Interrupt Flag) è un bit di flag che diventa 1 quando il timer va in overflow, coiè quando arriva al suo massimo valore (255) e diventa 0. Tale bit deve essere azzerato dal programmatore dopo ogni evento.
Il registro del timer incrementa il suo valore in seguito agli impulsi legati alla frequenza di clock, quindo dopo l'overflow riparte e, dopo un certo tempo, si verificherà un altro overflow.
Se l'interrupt del timer è abilitato (con le modalità di cui sopra) ad ogni overflow verrà interrotto il normale svolgimento del programma per andare ad eseguire una routine di interrupt (gruppo di istruzioni poste a partire dall'indirizzo 004 della memoria programma).
In questo gruppo di istruzioni il programmatore farà le sue operazioni,sapendo che è trascorso un tempo ben preciso.
All'interno di questo blocco di deve ricordare di azzerare il flag T0IF (BCF INTCON,2)
L'ultima istruzione del blocco è la retfie, con la quale si riprende la normale esecuzione del programma principale dal punto in cui era stata interrotta. Un esempio di routine di interrupt:
INIT ORG 0000H
GOTO START
ORG 0004 ;GESTIONE INTERRUPT TMR0=0
movlw 00010000b ;decrementa ncont... se è 0 salta la successiva 4
movwf TMR0 ;riparte il timer
bsf swt,0 ;bit 0 a 1
decf ncont,1
bcf intcon,2 ;azzera il flag interrupt
retfie
START ORG 0010H ; inizio programma
In grassetto il blocco di istruzioni che vengono eseguite ad ogni overflow del timer, in modo automatico.
All'avviamento la routine di interrupt non viene eseguita perchè bypassata da GOTO START.
In questo modo il programmatore fa svolgere altri compiti al micro senza ocuparsi della temporizzazione.