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