TP2 Asp GBM3-LMD
TP2 Asp GBM3-LMD
TP2 Asp GBM3-LMD
Objectifs pédagogiques :
Maîtriser les notions élémentaires de la programmation C des PIC :
o Opérations sur les Entrées/Sorties,
o Utilisation des fonctions (appel et déclaration).
Saisir la différence entre le passage de paramètres par
valeurs et par variables
Préalables :
Notions élémentaires sur la programmation C, maitrise
des outils ISIS et PICC.
Durée : 1 séance de 3H
TP Architecture des systèmes à processeurs GBM3
1. Description du travail
Il s’agit de réaliser une chenille lumineuse à 8 voies. Plusieurs séquences d’animation seront
programmées. L’utilisateur pourra changer de séquence d’animation ainsi que la vitesse
de défilement grâce aux interrupteurs et boutons poussoirs (fig.1).
SW1
R1 R2 R3
4k7 4k7 4k7 R4
4K7 SW2
C1 U1
16 17
BTP+
OSC1/CLKIN RA0
15 18
OSC2/CLKOUT RA1
18pF 1
RA2 BTP-
X1 4
MCLR RA3
2
4Mhz 3
C2 RA4/T0CKI
6
RB0/INT
7
RB1
18pF 8
RB2
9
RB3
10
RB4
11
RB5
12
RB6
13
RB7
PIC16F84A
L7 L6 L5 L4 L3 L2 L1 L0
Figure 1
ISTMT TP2 10
TP Architecture des systèmes à processeurs GBM3
En utilisant cette fonction, modifier votre programme afin de pouvoir régler la vitesse de
défilement des LEDs à partir de BTP+ et BTP-.
8- Ecrire une nouvelle fonction void cycle_backward(int speed_ms) qui commande un défilement
des LEDs L7..L4 de gauche à droite (utiliser l’opérateur de décalage à droite).
9- Tester cette fonction.
ISTMT TP2 11
TP Architecture des systèmes à processeurs GBM3
En se basant sur le modèle du programme principal suivant, modifier votre programme afin
d’exécuter une fonction pour chaque combinaisons listée dans le tableau 1.
void main ( )
{ int cmd
int speed=100 ;
set_tris_b (0x00); // port b en sortie
set_tris_a (0xFF); //port a en entrée
output_b(0x00);
while (TRUE)
{
cmd = input_a() & 0x03; //cmd=0b000000RA1 RA0
switch (cmd)
{
case 0: sequence0 (speed);
break;
case 1: sequence1 (speed);
break;
case 2: sequence2 (speed);
break;
case 3: sequence3 (speed);
break;
}
}
}
ISTMT TP2 12