You are on page 1of 2

Filière : Ingénieur GBM

TP de Microcontrôleur

TP1 : Timer
I. Objectif
L’objectif du TP est de s’initier à la programmation en mode interruptible. Pour cela on utilisera
le timer interne du microcontroleur 18F4520 pour générer une base de temps.
Les programmes sont edités sous l’environnement MIKROC, puis testés réelement sur la carte
à microcontrôleur. Le programmateur utilisé est le PicKit2.

II. Programme de base

Soit le programme suivant :

void interrupt()
{
LATD = ~ LATD ;
TMR0H = 0xE0;
TMR0L = 0;
INTCON.TMR0IF = 0;
}
}
void main() {
INTCON.GIE = 0;
INTCON.TMR0IE = 1;
T0CON = 0b10000111;
TMR0H = 0xE0;
TMR0L = 0;
TRISD =0;
LATD=0;
INTCON.GIE = 1;
}

a) Ecrie le programme puis le compiler en utilisant MikroC.


b) Brancher les LEDs de la carte au port D du PIC.
c) Téléverser le programme dans le PIC18F5420.

III. Etude théorique


a) Expliquer le fonctionnement du programme précédent.
b) Calculer la fréquence de clignotement des LEDs.
c) Réécrire le programme pour avoir un clignotement rythmé de 800ms
IV. Applications
1. Défilement des LEDs
a) Le programme suivant permet de faire défiler les 4 LEDs sous forme d’un point. Ce
programme contient au moins quatre erreurs ; corriger les erreurs et vérifier le
programme pratiquement.
void main()
{
ADCON1=0x0F ;
TRISD=0x0F ;
LATB=1 ;
while(1) ;
{
LATD=LATD<<1 ;
delay_ms(100) ;
if(LATD=8) {
LATD=1 ;
delay_ms(100) ;
}
}
}

b) Ecrire un programme pour défiler les LEDs, dans un sens ou dans l’autre, selon la
position d’un switch.
c) Ecrire un programme pour faire clignoter les LEDs à 1Hz en utilisant le mode
interruptible.

2. Génération d’un signal carré

a) Ecrire un programme pour générer un signal carré, de fréquence 1KHz, sur le pin 0 du
port D.
b) Vérifier le signal généré en utilisant un oscilloscope.
c) Modifier le programme pour que la fréquence du signal généré soit égale à Nx1KHz.
Où la valeur N est donnée par un switch branché sur le port A.