Vous êtes sur la page 1sur 8

Module:

Architecture du microcontrôleur PIC 16F84


Chapitre 4: Timer

Niveau: 2A, 2P et 3B

1
PLAN
Définition Timer
Configuration en mode compteur

2
Définition
• Le PIC 16F84 comporte un seul timer, timer0, contrairement à d’autres PIC qui comportent
plusieurs timers.

• Le timer est un compteur à 8 bits qui peut jouer deux rôles:

• Mode compteur: compter les impulsions reçues sur la pin spéciale RA4/T0CKI.

• Mode timer: compter les cycles d’horloge , donc compte le temps en fonction du cycle
de l’horloge.

3
Timer0 : mode COMPTEUR
• Le mode compteur ne compte que les impulsions appliquées sur la broche RA4 /TOCKI
(nombre d’évènements survenus sur RA4)
• Cet évènement est configurable : soit on compte le nombre de fronts montants (nombre de
fois RA4 passe de 0 à1) soit le nombre de fronts descendants.
• Configuration du mode compteur: OPTION_REG:
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

T0CS: Timer0 Clock Source select bit T0SE : Timer0 Source Edge select bit
T0CS=1 : mode compteur T0SE= 0 comptage si l'entrée RA4/TOCKI passe de 0 à 1
T0CS=0 : mode timer T0SE= 1 comptage si l'entrée RA4/TOCKI passe de 14 à 0
Registre TMR0
• la valeur actuelle du timer0 se trouve dans le registre spécial TMR0.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

• Ce registre est accessible en lecture ou en écriture.

• Exemple: si le développeur a configuré le timer0 en mode compteur des impulsions


sur la pin RA4/T0CKI, la lecture du registre tmr0 vous donnera ce nombre d’
événements survenus sur cette pin.

• Le registre tmr0 comme tous les registres spéciaux (SFR), est de 8 bits , donc il peut
compter de 0 à 255, et repasse à 0 en cas de débordement.
5
Débordement du registre TMR0
• Dans le cas du débordement du registre tmr0 càd le passage de la valeur 255
(0xFF) à 0 (0x00), le flag T0IF du registre INTCON à 1.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

• On peut donc utiliser le timer0 en mode interruption:


• T0IE est positionné à 1 dans le registre INTCON,
• et donc à chaque fois que le flag T0IF passe à 1 (débordement), une interruption est
générée.
• La procédure à utiliser est celle vue dans la leçon sur les interruptions.
6
Exercice d’application
• Notre système est principalement
composé d'un bouton connecté à la
pin spéciale RA4 et d'une led
connectée à RA0.
• Ecrire un programme en C permet
de compter 4 appuis sur la pin RA4
avec le timer en mode compteur
comme source d'interruption,
• Le signal d'interruption permet de
changer l'état de la led RA0 pendant
2s.

7
Exemple de mesure de temps
Début
Fonction Interruption
interrupt()
CONFIGURARTION
led: sortie Début
activer interruption TIMER
Initialiser TMR0 Inverser l’état de la led
Pendant 2s
Initialiser TMR0

INITIALISATION
Remettre le FLAG à 0
led éteinte

Vous aimerez peut-être aussi