Vous êtes sur la page 1sur 3

Correction TP2 Informatique Industrielle 1

1- Projet clignotement

void main(void)

RB2 = 0; // Initialisation des pattes du microcontrôleur

TRISB= 0 ; /// pour dire que tout le port est configuré en sortie (commande)

//on peut écrire aussi TRISB=0b00000000 ; ou TRISB=0x00 ;

for (;;) // La suite du programme s'effectue en boucle infinie

RB2 = 1; // envoyer un signal donc allumer

RB2 = 0; // arrêter l’envoi du signal donc éteindre

Cependant, le programme réalisé de la sorte va éteindre et allumer la led mais a cause de la


fréquence élevée du processeur ça ne sera pas visible à l’œil nue.

Pour palier a ce problème, nous ajouteront une instruction appelée nop()

Cette instruction ne fait rien (No Operation) son rôle est juste de consommer du temps et plus
précisément un cycle d’instruction.

Ajouter une seule nop() ne sera pas suffisant, il faudrait mettre plusieurs, et pour maitriser leur
nombre nous utiliserons une boucle for :

for (i=1;i<15;i++)

nop() ;

Et notre programme deviendra :

void main(void)

unsigned i ;

RB2 = 0; // Initialisation des pattes du microcontrôleur

TRISB= 0 ; /// pour dire que tout le port est configuré en sortie (commande)

//on peut écrire aussi TRISB=0b00000000 ; ou TRISB=0x00 ;

for (;;) // La suite du programme s'effectue en boucle infinie

{
for (i=1;i<15;i++)

nop() ;

RB2 = 1; // envoyer un signal donc allumer

for (i=1;i<15;i++)

nop() ;

RB2 = 0; // arrêter l’envoi du signal donc éteindre

Voir vidéo simulation

2- Projet clignotement commandé par un bouton

Maintenant il faut que le processeur reçoit une commande d’un bouton, donc une de ses pattes
sera considérée comme entrée.

Supposant que c’est la patte RB3, le programme sera comme suit ;

void main(void)

unsigned i ;

RB2 = 0; // Initialisation des pattes du microcontrôleur

TRISB= 0b00001000 ; /* pour dire que tout le port est configuré en sortie (commande) sauf le 4eme
bit est à 1 donc reçoit un signal en entrée*/

for (;;) // La suite du programme s'effectue en boucle infinie

if (RB3){ // si RB3 est egale à 1

for (i=1;i<15;i++)

nop() ;

RB2 = 1; // envoyer un signal donc allumer

for (i=1;i<15;i++)
nop() ;

RB2 = 0; // arrêter l’envoi du signal donc éteindre

Vous aimerez peut-être aussi