Pag. 16

Contatori/Timers

L'8051 possiede due registri timer/contatori a 16 bit. In funzionamento timer il registro viene incrementato ogni ciclo macchina. Poiché un ciclo macchina consiste di 12 periodi di clock, il conteggio avviene ad 1/12 della frequenza dell'oscillatore che al massimo può essere di 12 MHz.

In funzionamento contatore, il registro viene incrementato per ogni transizione da 1 a O del corrispondente terminale di ingresso (T0 e T1). Poiché il riconoscimento di una transizione richiede due cicli macchina, la massima frequenza di conteggio è di 1/24 della frequenza del clock.

Registro TMOD

I1 registro TMOD definisce la modalità di funzionamento (timer oppure contatore), il modo operativo e I'abilitazione dei terminali INTx come segnali di start/stop conteggio per i due timer/contatori:

GATE C/T M1 MO GATE C/T M1 M0
Timer 0 Timer1
  1. Modo 0 (M1 = 0, M0 = 0): ciascun timer in modo 0 è un contatore ad 8 bit con un divisore per 32 (in totale 13 bit). Questo modo operativo è compatibile con il funzionamento del timer de11'8048, un altro single-chip della Intel.
    Quando il conteggio passa dalla configurazione 11 ... 1 alla configurazione 00 ... 0, il flag TF1 (flag di overflow nel registro TCON) viene automaticamente posto ad 1 e viene generata un'interruzione (se abilitata).
    Se GATE = O il conteggio è abilitato quando TRx = 1.
    Se GATE = 1 il conteggio è abilitato quando TRx = 1 e INTx = 1.
    I1 conteggio può essere effettuato sia tramite il clock interno (C/T =0 ovvero timer) sia tramite un segnale esterno applicato al terminale Tx (C/T = 1, ovvero contatore).
    Il registro a 13 bit è costituito dagli 8 bit del registro THx e dai 5 bit del registro TLx. I tre bit piu significativi del registro TLx vengono ignorati.
  2. Modo 1 (M1 = 0, M0 = 1): è identico al modo 0 eccetto per il fatto che il registro contatore è utilizzato interamente a 16 bit (THx e TLx).
  3. Modo 2 (M1 = 1, M0 = 0): utilizza un registro contatore ad 8 bit (TLx) ed effettua un caricamento automatico a fine conteggio.
    Quando si verifica I'overflow (termine conteggio) il flag TFx viene posto ad 1 (Generazione di un'interruzione, se abilitata) e il registro TLx viene ricaricato con il contenuto del registro THx. Il conteggio riprende fino ad un nuovo overflow.
    Il valore in THx deve essere pre-impostato via software.
  4. Modo 3 (M1 = 1, M0 = 1): il timer 1 mantiene il proprio conteggio.Ciò equivale a porre TR1 = 0.
    I1 timer 0 in modo 3 utilizza TH0 e TL0 come due contatori separati ad 8 bit. TL0 sfrutta i bit di controllo del timer 0 (GATE, C/T, TR0,INT0 e TF0). TH0 funziona da timer contando i cicli macchina e utilizzando i bit TR1 e TF1 del timer 1. L'interruzione apparentemente generata dal timer 1 è quindi effettivamente proveniente dal registro TH0 del timer 0.

    Timer/Counter Modo 0 : Contatore a 13 bit


    Timer/Counter    Modo 1 : Contatore a 8 bit con autoload

    Timer/Counter Modo 1 : Contatore a 8 bit con autoload


    Timer/Counter 0 Modo 3 : Due contatori a 8 bit


Pag. 18

Il registro TCON è il registro di controllo dei due timer/contatori:

Bit di controllo Timers Bit controllo interrupts
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0