Vous êtes sur la page 1sur 10

STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 10

TP D’INITIATION AU LANGAGE C C. Algorithme

I. TP Clignotement de RD0 Proposer un algorithme structuré traduisant l’ordinogramme précédent.

A. Présentation

L'objectif est de faire clignoter une LED à la fréquence de 1Hz. Pour cela, il faudra qu'elle soit
DÉBUT ALGORITHME
allumée pendant 0,5s puis éteinte pendant aussi pendant 0,5s. La LED utilisée est connectée sur le bit
0 du port D. _____________________________________________________________
B. Ordinogramme _____________________________________________________________
Début _____________________________________________________________
_____________________________________________________________
PORTD en sortie _____________________________________________________________
_____________________________________________________________
_____________________________________________________________
FAUX
1=1 ? _____________________________________________________________
VRAI _____________________________________________________________
RD0=1 _____________________________________________________________
_____________________________________________________________
Temporisation 0,5s _____________________________________________________________
_____________________________________________________________
RD0=0
_____________________________________________________________
_____________________________________________________________
Temporisation 0,5s
_____________________________________________________________
_____________________________________________________________

Fin _____________________________________________________________

FIN ALGORITHME
STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 2 / 10

D. Programme en langage C // Définitions des Fonctions


___________________________________________________________________
1. Consignes
___________________________________________________________________
a) Fonction prédéfinie ___________________________________________________________________

Pour réaliser la temporisation de 500ms, nous utiliserons une fonction prédéfinie du fichier htc.h : ___________________________________________________________________
__delay_ms(x). Pour appeler cette fonction, il suffit d’utiliser la syntaxe précédente en remplaçant x ___________________________________________________________________
par la durée en milliseconde.
___________________________________________________________________
Remarque : Le fichier htc.h doit être ajouté comme fichier d’entête et inclus au projet MPLAB. ___________________________________________________________________
___________________________________________________________________
b) Fonction à créer ___________________________________________________________________
Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes : ___________________________________________________________________

Configuration_PORTD() qui doit fixer la direction de RD0 à RD7. ___________________________________________________________________


Allumer_RD0() qui doit faire passer RD0 à 1. ___________________________________________________________________
Eteindre_RD0() qui doit faire passer RD0 à 0.
___________________________________________________________________
___________________________________________________________________

// Fonction principale
2. Programme en C
___________________________________________________________________

// Fichiers d’entêtes ___________________________________________________________________

#include <pic16f877a.h> // Fichier de définitions des ___________________________________________________________________

// adresses des registres du ___________________________________________________________________

// PIC 16F877A ___________________________________________________________________

#include <htc.h> // Fichier de fonctions prédéfinies ___________________________________________________________________

// pour temporisations logicielles ___________________________________________________________________


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

// Directives d’assemblage ___________________________________________________________________

__CONFIG(0x3f3a); // non necessaire si configuré par ___________________________________________________________________

// le programmateur PPPV3
E. Expérimentation

Saisir et tester votre programme sur les maquettes PIC en utilisant le projet MPLAB prévu à cet effet.
Voir fiche méthode : « Programmation en langage C, mise en œuvre d’un équipement didactique »
STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 3 / 10

II. TP Lecture et affichage de l’état des boutons poussoirs C. Algorithme


A. Présentation Proposer un algorithme structuré traduisant l’ordinogramme précédent.
L'objectif est de lire l'état des boutons poussoirs connectés sur le port C (RC0 à RC7). L'état de
chaque bouton sera visualisé par une LED. Les LED sont connectées sur le port D.
DÉBUT ALGORITHME
B. Ordinogramme
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Début
_____________________________________________________________

PORTD en sortie _____________________________________________________________


_____________________________________________________________

PORTC en entrée
_____________________________________________________________
_____________________________________________________________

FAUX _____________________________________________________________
1=1 ?
_____________________________________________________________
VRAI
_____________________________________________________________
Lecture du
PORTC _____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Écriture du
résultat dans le _____________________________________________________________
PORTD
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________

Fin
FIN ALGORITHME
STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 4 / 10

D. Programme en langage C ___________________________________________________________________


___________________________________________________________________
1. Consignes
___________________________________________________________________
a) Fonction prédéfinie ___________________________________________________________________

Le programme utilisera les fonctions prédéfinies dans le fichier htc.h. ___________________________________________________________________


___________________________________________________________________
b) Fonction à créer ___________________________________________________________________
Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes : ___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
Configuration_PORTC() qui doit fixer la direction de RC0 à RC7. ___________________________________________________________________
Configuration_PORTD() qui doit fixer la direction de RD0 à RD7.
Lecture_et_Affichage() qui doit lire l’état des bits du PORTC et afficher le résultat sur le ___________________________________________________________________
PORTD. ___________________________________________________________________
___________________________________________________________________
2. Programme en C
___________________________________________________________________
#include <pic16f877a.h> // Fichier de définition des adresses des
// registres du PIC16F877A // Fonction principale
___________________________________________________________________
#include <htc.h> // Fichier de fonctions prédéfinies ___________________________________________________________________
___________________________________________________________________
// Directives d’assemblage ___________________________________________________________________
__CONFIG(0x3f3a); // non necessaire si configuré par ___________________________________________________________________
// le programmateur PPPV3 ___________________________________________________________________
___________________________________________________________________
// Définitions des Fonctions ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
E. Expérimentation
___________________________________________________________________
___________________________________________________________________ Saisir et tester votre programme sur les maquettes en utilisant le projet MPLAB.
STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 5 / 10

III. TP chenillard simple défilement C. Algorithme


A. Présentation Proposer un algorithme structuré traduisant l’ordinogramme précédent.
L'objectif est de réaliser un chenillard qui a un seul sens de défilement. La première LED à s'allumer Remarque : Le premier test correspond à une structure répétitive et le second test à une structure
est la D0 reliée à RD0. La LED D1 s’allume 0,5 seconde plus tard et ainsi de suite jusqu’à la D7. Ce répétitive contrôlée (Boucle FOR en langage C).
cycle recommence ensuite indéfiniment.
B. Ordinogramme DÉBUT ALGORITHME
Début
_____________________________________________________________
Mettre le port D en sortie _____________________________________________________________
_____________________________________________________________
FAUX
_____________________________________________________________
1=1?
_____________________________________________________________
VRAI
_____________________________________________________________
PORTD = (00000001)2
_____________________________________________________________
FAUX _____________________________________________________________
PORTD 0?
_____________________________________________________________
_____________________________________________________________
VRAI
_____________________________________________________________
Temporisation 0,5s
_____________________________________________________________
Décalage à gauche du PORTD _____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Fin _____________________________________________________________
_____________________________________________________________
FIN ALGORITHME
(1)
Rappel : En langage C, la séquence est exécutée tant que la condition est vraie
STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 6 / 10

D. Programme en langage C // Fonction principale


___________________________________________________________________
1. Consignes
___________________________________________________________________
a) Fonction prédéfinie ___________________________________________________________________

Pour réaliser la temporisation de 500ms, nous utiliserons une fonction prédéfinie du fichier htc.h : ___________________________________________________________________
__delay_ms(x). Pour appeler cette fonction, il suffit d’utiliser la syntaxe précédente en remplacant x ___________________________________________________________________
par la durée en milliseconde.
___________________________________________________________________
Remarque : Le fichier htc.h doit être ajouté comme fichier d’entête et inclus au projet MPLAB. ___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
b) Fonction à créer
___________________________________________________________________
Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes :
___________________________________________________________________
Configuration_PORTD() qui doit fixer la direction de RD0 à RD7. ___________________________________________________________________
___________________________________________________________________
2. Programme en C
___________________________________________________________________
___________________________________________________________________
#include <pic16f877A.h> // Fichier de définition des adresses des ___________________________________________________________________
// registres du PIC 16F877A ___________________________________________________________________
___________________________________________________________________
#include <htc.h> // Fichier de fonctions prédéfinies ___________________________________________________________________
___________________________________________________________________
// Directives d’assemblage ___________________________________________________________________
__CONFIG(0x3f3a); // non nécessaire si configuré par ___________________________________________________________________
// le programmateur PPPV3
E. Expérimentation

Saisir et tester votre programme sur les maquettes en utilisant le projet MPLAB.
// Définitions des Fonctions

IV. TP chenillard à deux sens de défilement


___________________________________________________________________
A. Présentation
___________________________________________________________________
___________________________________________________________________ L'objectif est de réaliser un chenillard à deux sens de défilement. La première LED à s'allumer est la
LED D0 reliée à RD0. La LED D1 s’allume 0,5 seconde plus tard et ainsi de suite jusqu’à la LED
___________________________________________________________________ D7. Ensuite, c’est au tour de la LED D6 de s’allumée pour revenir à la LED D0.
___________________________________________________________________
STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 7 / 10

B. Algorithme

DÉBUT ALGORITHME

FAIRE PORTD en sortie

TANT QUE 1=1

POUR PORTD = (00000001)2


et tant que PORTD 0(1)
et par décalage à gauche de 1

FAIRE Temporisation 0,5s

FIN POUR

POUR PORTD = (01000000)2


et tant que PORTD 0(1)
et par décalage à droite de 1

FAIRE Temporisation 0,5s

FIN POUR

FIN TANT QUE

FIN ALGORITHME
(1)
Rappel : En langage C, la séquence est exécutée tant que la condition est vraie

A. Ordinogramme

Proposer un ordinogramme structuré traduisant l’algorithme.


STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 8 / 10

// Fonction principale
B. Programme en langage C
___________________________________________________________________
1. Consignes ___________________________________________________________________
___________________________________________________________________
a) Fonction prédéfinie
___________________________________________________________________
Pour réaliser la temporisation de 500ms, nous utiliserons une fonction prédéfinie du fichier htc.h :
___________________________________________________________________
__delay_ms(x). Pour appeler cette fonction, il suffit d’utiliser la syntaxe précédente en remplacant x
par la durée en milliseconde. ___________________________________________________________________
___________________________________________________________________
Remarque : Le fichier htc.h doit être ajouté comme fichier d’entête et inclus au projet MPLAB.
___________________________________________________________________
___________________________________________________________________
b) Fonction à créer ___________________________________________________________________
Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes : ___________________________________________________________________

Configuration_PORTD() qui doit fixer la direction de RD0 à RD7. ___________________________________________________________________


___________________________________________________________________
2. Programme en C ___________________________________________________________________
___________________________________________________________________
#include <pic16f877A.h> // Fichier de définition des adresses des
___________________________________________________________________
// registres du PIC 16F877A
___________________________________________________________________
___________________________________________________________________
#include <htc.h> // Fichier de fonctions prédéfinies
___________________________________________________________________

// Directives d’assemblage C. Expérimentation


__CONFIG(0x3f3a); // non nécessaire si configuré par
Saisir et tester votre programme sur les maquettes en utilisant le projet MPLAB.
// le programmateur PPPV3
- Commenter votre résultat.

___________________________________________________________________
___________________________________________________________________
// Définitions des Fonctions
- Optimiser votre code pour avoir un affichage du chenillard « fluide ».

___________________________________________________________________ V. TP lecture de l’état des boutons poussoirs et clignotement de la LED5


___________________________________________________________________
A. Présentation
___________________________________________________________________
___________________________________________________________________ L'objectif est d’afficher sur les LED D0 à D6 l'état des boutons poussoirs SW0 à SW6 tout en faisant
clignoter à 1Hz la LED D7.
___________________________________________________________________
STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 9 / 10

B. Algorithme C. Ordinogramme

DÉBUT ALGORITHME Proposer un ordinogramme structuré traduisant l’algorithme précédent.

FAIRE PORTD en sortie

FAIRE PORTC en entrée

FAIRE PORTD = 0

TANT QUE 1 = 1

FAIRE RD7 = /RD7

FAIRE i = 0

FAIRE

FAIRE PORTD = PORTD&(PORTC|(10000000))


FAIRE PORTD = PORTD|(PORTC&(01111111))

FAIRE i = i +1

FAIRE Temporisation 100ms

TANT QUE i < 5

FIN TANT QUE

FIN ALGORITHME

Quel est l’intérêt des masques ?


___________________________________________________________________
Quel est l’intérêt de faire 5 x 100ms plutôt que directement 500ms ?
___________________________________________________________________
STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 10 / 10

___________________________________________________________________
D. Programme en langage C
___________________________________________________________________
1. Consignes ___________________________________________________________________
Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes : ___________________________________________________________________
Configuration_PORTC(), Configuration_PORTD() et __delay_ms(x) identiques à ___________________________________________________________________
celles utilisée précédemment.
___________________________________________________________________
char Lecture_et_masquage(char a) qui doit lire l’état des sept bits de poids faible du ___________________________________________________________________
PORTC et les afficher sur les sept bits de poids faible du PORTD. Elle doit également incrémenter la
variable d’index i de la temporisation passée en paramètre et retourner cette valeur. ___________________________________________________________________
___________________________________________________________________
2. Programme en C // Fonction principale
#include <pic16f877A.h> // Fichier de définition des adresses des ___________________________________________________________________
// registres du PIC 16F877A ___________________________________________________________________
___________________________________________________________________
#include <htc.h> // Fichier de fonctions prédéfinies ___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
// Définitions des Fonctions ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________ ___________________________________________________________________
___________________________________________________________________
___________________________________________________________________ E. Expérimentation
Saisir et tester votre programme sur les maquettes PIC en utilisant le projet MPLAB prévu à cet effet.
___________________________________________________________________

Vous aimerez peut-être aussi