Vous êtes sur la page 1sur 5

Module : Introduction aux systèmes embarqués

Année universitaire : 2022 – 2023

TRAVAUX PRATIQUES N° : 9

INTRODUCTION A LA PROGRAMMATION DES MICROCONTROLEURS

INTRODUCTION :

La sélection du mode de fonctionnement et la configuration du TIMER0 sont assurées par le registre


OPTION_REG.

Bit7: RBPU = Pull up Enable bit on Port B.

1 = Pull up désactivé sur le Port B.

0 = Pull up activé.

Bit6: INTEDG = Interrupt Edge select bit.

1 = Interruption si front montant sur RB0/INT

0 = Interruption si front descendant sur RB0/INT.

Bit5 : T0CS = Timer TMR0 Clock Source select bit.

1 = L’horloge du Timer est l’entrée RA4/Clk

0 = Le Timer utilise l’horloge interne du PIC.

Bit4: T0SE = Timer TMR0 Source Edge select bit.

1 = Le Timer s’incrémente à chaque front montant sur RA4/Clk.

0 = Le Timer s’incrémente à chaque front descendant sur RA4/Clk.

Bit3: PSA = Prescaler Assignement bit.

1 = Le pré-diviseur est affecté au watchdog.

0 = Le pré-diviseur est affecté au Timer TMR0.

PS2 PS1 PS0 Prédiviseur

0 0 0 1 :2

Mr Nizar TOUJENI 1/5


0 0 1 1 :4

0 1 0 1 :8

0 1 1 1 :16

1 0 0 1 :32

1 0 1 1 :64

1 1 0 1 :128

1 1 1 1 :256

MANIPULATION :

Exercice 9.1 :

On désire réaliser un compteur modulo 10 en utilisant le timer TMR0 d’un PIC 16F84A. Le compteur
est incrémenté à chaque front montant.

1. Indiquer si le mode de fonctionnement du TMR0 est compteur ou temporisateur.

2. Donner alors le nom de la broche de l’entrée d’horloge du TMR0.

3. Configurer alors le registre 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

4. Compléter le programme suivant :

void main ( )

TRISB = … ;

TRISA = … ;

OPTION_REG = … ;

Mr Nizar TOUJENI 2/5


TMR0 = … ;

while (1)
{

PORTB = … ;

if (TMR0 == …) TMR0 = …;

5. Modifier le programme précédent pour réaliser un compteur modulo 16 et l’incrémentation se fait


chaque 2 fronts descendants.

Exercice 9.2 :

On désire réaliser un compteur modulo 100 en utilisant le timer TMR0 d’un PIC 16F84A. Le compteur
est incrémenté à chaque front descendant de RA4. On adopte l’affichage multiplexé puisqu’on dispose
d’un seul décodeur BCD – 7Segments et deux afficheurs.

1. Configurer le registre 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

2. Compléter le tableau suivant :

Nombre à afficher T1 T2 Afficheur 1 Afficheur 2

Bloqué Bloqué Non Non 1ms

Unité de TMR0 Saturé … Oui Non 10ms

Bloqué Bloqué Non Non 1ms

Dizaine de TMR0 … … … … 10ms

Bloqué Bloqué Non Non 1ms

Mr Nizar TOUJENI 3/5


3. Compléter le programme suivant :

int uni, dix ;

void main ( )

TRISB = … ;

TRISA = … ;

OPTION_REG = … ;

TMR0 = … ;

while (1)
{

while (TMR0 < …)

uni = TMR0…10;

Mr Nizar TOUJENI 4/5


dix = TMR0…10;

PORTA = 0 ;

Delay_ms (1) ;

PORTB = uni;

PORTA = …;

Delay_ms (10) ;

PORTA = 0 ;

Delay_ms (1) ;

PORTB = dix;

PORTA = …;

Delay_ms (10) ;

TMR0 = … ;

Mr Nizar TOUJENI 5/5

Vous aimerez peut-être aussi