La periferica timer e' costituita da un contatore a 8 bit, un prescaler programmabile
a 7 bit, una linea di interruzione (fine del conteggio), e un pin d'ingresso-uscita
denominato TIMER.
Il contatore a 8 bit e' denominato TCR e si trova alla locazione D3h. Il prescaler e'
invece denominato PSC con locazione D2h, e infine il registro di controllo TSCR si trova
alla locazione D4h.
BIT 0-7 = Contatore del timer
BIT 0-6 = Conteggio del prescaler
BIT 7 = Non usato (sempre a livello 0)
BIT 0-2 = PS0-2 fattore di divisione del prescaler
BIT 3 = PSI inizializza prescaler
BIT 4 = DOUT controllo pin timer
BIT 5 = TOUT controllo pin timer
BIT 6 = ETI abilita interrupt timer
BIT 7 = TMZ termine del conteggio
I bit PS0-PS2 permettono di impostare il fattore di divisione del prescaler secondo la seguente tabella :
| PS2 | PS1 | PS0 | Fattore di divisione |
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 2 |
| 0 | 1 | 0 | 4 |
| 0 | 1 | 1 | 8 |
| 1 | 0 | 0 | 16 |
| 1 | 0 | 1 | 32 |
| 1 | 1 | 0 | 64 |
| 1 | 1 | 1 | 128 |
Il bit PSI viene usato per inizializzare il prescaler e per inibire il conteggio.
Portando questo bit a 0, al prescaler viene associato il valore 7Fh ed il conteggio del prescaler
e del contatore TCR viene bloccato. Viceversa, portando il bit PSI a 1, il prescaler viene abilitato
ed inizia il conteggio. Ad ogni impulso di clock, il PSC viene decrementato di 1. Quando il registro PSC
raggiunge il valore 0, va a decrementare di 1 il contatore TCR.
Il bit TMZ viene posto a 1 dal micro, quando il contatore TCR ha raggiunto il valore zero. Questo bit
deve essere posto a 0 prima di iniziare un nuovo conteggio.
Il bit ETI permette di abilitare o disabilitare l'interrupt della periferica timer. Se il bit ETI si
trova a livello 1, e il bit TMZ va anch'esso a 1, il timer genera una interruzione.
Il bit TOUT stabilisce il funzionamento del pin TIMER. Quando questo bit e' a 0, il pin TIMER e'
selezionato come ingresso, viceversa quando il bit TOUT e' a 1, il pin TIMER e' impostato come uscita.
Attraverso i bit TOUT e DOUT e' possibile scegliere 3 modi di funzionamento del Timer e del pin timer :
Quando il timer viene utilizzato con il clock interno, la durata totale del conteggio, puo' essere calcolata
con questa formula:
T(sec) = (12 x TSCR x TCR) : Xtal in Hz
dove T e' il tempo in secondi, TSCR e' il fattore di divisione del prescaler, TCR e' il valore caricato nel
contatore TCR del timer e Xtal e' la frequenza in Hertz del quarzo collegato al micro.
La formula inversa per calcolare il valore di TCR e':
TCR = [(Xtal in Hz : 12) : TSCR] x T(sec)
Il timer viene molto spesso utilizzato per contare un certo tempo, o per temporizzare il funzionamento di una certa routine. A tale scopo il timer viene configurato nella modalita' "Uscita", ponendo TOUT a livello 1 e DOUT a livello 0 e con l'interrupt attivo. In questo caso, il valore da impostare nel registro TSCR e':
| Fattore di divisione del prescaler (TSCR) | Valore del registro TSCR (in decimale) |
| 1 | 104 |
| 2 | 105 |
| 4 | 106 |
| 8 | 107 |
| 16 | 108 |
| 32 | 109 |
| 64 | 110 |
| 128 | 111 |
© Giuseppe Di Paolo '98
Aggiornato giovedì 6 agosto 1998