Académique Documents
Professionnel Documents
Culture Documents
1- Définition
Le Timer 0 est un module intégré dans les microcontrôleurs de type PIC. Il assure la fonction comptage ou bien la
fonction temporisation. Le choix du mode de fonctionnement se fait par configuration du registre OPTION_REG.
Le Timer 0 possède un registre à 8 bits nommé TMR0. Ce registre peut être chargé avec une valeur initiale
quelconque.
Le Timer 0 s’incrémente à chaque front d’horloge du PIC ou à chaque changement de niveau logique de la broche
RA4/TOCKI, jusqu’à ce que le débordement ait lieu (Passage de FF à 00).
INTEDG ( Interrupt Edge select bit ) : bit de sélection du front de déclenchement de l’interruption RB0/INT
- 1 : Interruption si l’entrée RB0/INT passe de 0 à 1 (Front montant).
- 0 : Interruption si l’entrée RB0/INT passe de 1 à 0 (Front descendant).
TOCS ( Timer TMR0 Clock Source bit ) : bit de sélection de l’horloge de Timer 0
- 1 : Le Timer 0 utilise l’entrée RA4/TOCKI comme source d’horloge (Fonctionnement en mode compteur).
- 0 : Le Timer 0 utilise l’horloge du PIC (Fonctionnement en mode temporisateur).
TOSE ( Timer TMR0 Source Edge select bit) : bit de sélection de front d’horloge de Timer 0
- 1 : Le Timer 0 s’incrémente à chaque front descendant sur RA4/ TOCKI.
- 0 : Le Timer 0 s’incrémente à chaque front montant sur RA4/ TOCKI.
Cette fonction n’est valable que lorsque le Timer 0 utilise l’entrée RA4/TOCKI comme source d’horloge.
Remarque : Quand le pré-diviseur est attribué au WatchDog, le registre TMR0 est prédivisé par 1.
Exemple :
OPTION_REG = $82 = % .......................... TOCS = … : Le Timer 0 utilise …………………………….. .
Pour exploiter le Timer 0 en tant que compteur il faut attribuer la valeur …. au bit 5 (……..) du registre
OPTION_Reg.
Pour choisir le front de déclenchement de l’impulsion appliquée sur l’entrée RA4/TOCKI, il faut affecter la valeur
…. au bit 4 (……..) du registre OPTION_Reg pour sélectionner le front montant ou bien la valeur …. pour
sélectionner le front descendant.
Puisque le registre TMR0 est à 8 bits alors le nombre maximal que peut atteindre le compteur est 255. Donc pour
prendre en compte un nombre supérieur à 255 on doit faire intervenir le pré-diviseur.
Afin d’affecter le pré-diviseur au Timer 0 il faut mettre la valeur …. dans le bit 3 (……..) du registre
OPTION_Reg et choisir la combinaison PS2 PS1 PS0 adéquate selon le nombre maximal à atteindre.
Pour démarrer le compteur à partir d’une valeur autre que zéro, on doit précharger le registre TMR0 par la valeur
voulue.
Exemple :
Exploiter le Timer 0 en tant que compteur incrémentale à
chaque front descendant survenue sur la broche RA4/TOKI.
L'état du compteur est affiché sur le port B.
Programme MikroPascal :
Program Compteur ;
Begin
TRISA:=$............;
TRISB:=$............;
OPTION_REG:= $............;
TMR0:=$.......... ;
PORTB:=$......... ;
While true do
Begin
PORTB:=............. ;
End;
End.
Modifier la configuration du registre OPTION_REG afin que le compteur s’incrémente après chaque 8 fronts
montants survenus sur la broche RA4/TOKI :
RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0 OPTION_REG
…… …… …… …… …… …… …… …… $ ………….…
Le compteur s’incrémente à chaque 8 impulsions, alors le nombre des impulsions à compter sera :
…………*………… =…………… impulsions
5- Exercices d’application
Exercice 1
Réaliser l'activité 6 pages 102 et 103 du manuel d'activités.
Exercice 2
Ecrire un programme MikroPascal permettant à l’aide du TMR0 de réaliser un compteur modulo 7 dont le cycle est
le suivant {2, 3, 4, 5, 6, 7, 8}.