PIC 16F84A

Registre TMR0 (Timer 0)

 

Il s'agit d'un registre spécial situé à l'adresse 0x01 (banque 0) de la mémoire des données (Data RAM).

Ce registre contient un nombre de 8 bits (0 à 255 en numération décimale).

 

Le module TMR0 (Timer 0) possède deux modes de fonctionnement :

1- Le mode timer

Pour configurer le module TMR0 en mode timer, il faut au préalable que :

T0CS = 0 (bit 5 du registre OPTION_REG)

Le contenu du registre TMR0 est alors incrémenté à chaque cycle de l'horloge interne.

1 cycle correspond à une durée de 1 µs pour un oscillateur à quartz de 4 MHz (1 cycle = 4 / F OSC).

En toute rigueur, cela est vrai si le taux de prédivision (prescaler) est réglé à 1 (bit 3 du registre OPTION_REG = PSA = 1).

Avec un taux de prédivision de 128 (PSA = 0, PS2 = 1, PS1 = 1, PS0 = 0), le contenu du registre TMR0 est incrémenté tous les 128 cycles (ou 128 µs).

Notez que si le contenu du registre TMR0 est 255 (0xFF), il passera à 0 (0x00) à la prochaine incrémentation.

 

En conclusion, le mode timer est utilisé pour mesurer des durées.

 

2- Le mode compteur

Pour configurer le module TMR0 en mode compteur, il faut au préalable que :

T0CS = 1 (bit 5 du registre OPTION_REG)

Le contenu du registre TMR0 est alors incrémenté à chaque front du signal présent sur la broche RA4/T0CKI :

En toute rigueur, cela est vrai si le taux de prédivision (prescaler) est réglé à 1 (bit 3 du registre OPTION_REG = PSA = 1).

Avec un taux de prédivision de 32 (PSA = 0, PS2 = 1, PS1 = 0, PS0 = 0), le contenu du registre TMR0 est incrémenté tous les 32 cycles du signal présent sur la broche RA4/T0CKI.

En conclusion, le mode compteur est utilisé pour faire du ... comptage.

 

3 - Interruption

On peut activer une interruption quand le registre TMR0 déborde (passage de 0xFF à 0x00).

Pour plus d'informations sur l'interruption TMR0

 

(C) Fabrice Sincère