STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 10 I. TP Clignotement de RD0 A. Présentation TP D INITIATION AU LANGAGE C L'objectif est de faire clignoter une LED à la fréquence de 1Hz. Pour cela, il faudra qu'elle soit 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 1=1? RD0=1 Temporisation 0,5s RD0=0 Fin VRAI Temporisation 0,5s FAUX C. Algorithme Proposer un algorithme structuré traduisant l ordinogramme précédent. DÉBUT ALGORITHME FIN ALGORITHME
STI2D spécialité SIN INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 2 / 10 D. 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 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. 2. Programme en C // Définitions des Fonctions // Fonction principale // Fichiers d entêtes #include <pic16f877a.h> #include <htc.h> // Directives d assemblage CONFIG(0x3f3a); // Fichier de définitions des // adresses des registres du // PIC 16F877A // Fichier de fonctions prédéfinies // pour temporisations logicielles // 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 A. Présentation 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. B. Ordinogramme Début PORTD en sortie PORTC en entrée 1=1? Lecture du PORTC Écriture du résultat dans le PORTD Fin VRAI FAUX C. Algorithme Proposer un algorithme structuré traduisant l ordinogramme précédent. DÉBUT ALGORITHME 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 #include <htc.h> // Directives d assemblage CONFIG(0x3f3a); // Définitions des Fonctions // registres du PIC16F877A // Fichier de fonctions prédéfinies // non necessaire si configuré par // le programmateur PPPV3 // Fonction principale 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 A. Présentation L'objectif est de réaliser un chenillard qui a un seul sens de défilement. La première LED à s'allumer est la D0 reliée à RD0. La LED D1 s allume 0,5 seconde plus tard et ainsi de suite jusqu à la D7. Ce cycle recommence ensuite indéfiniment. B. Ordinogramme Début Mettre le port D en sortie 1 = 1? Fin VRAI PORTD = (00000001) 2 PORTD 0? VRAI Temporisation 0,5s Décalage à gauche du PORTD FAUX FAUX C. Algorithme Proposer un algorithme structuré traduisant l ordinogramme précédent. Remarque : Le premier test correspond à une structure répétitive et le second test à une structure répétitive contrôlée (Boucle FOR en langage C). DÉBUT ALGORITHME 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 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 #include <htc.h> // Directives d assemblage CONFIG(0x3f3a); // Définitions des Fonctions // registres du PIC 16F877A // Fichier de fonctions prédéfinies // non nécessaire si configuré par // le programmateur PPPV3 // Fonction principale E. Expérimentation Saisir et tester votre programme sur les maquettes en utilisant le projet MPLAB. 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 FIN POUR FAIRE Temporisation 0,5s POUR PORTD = (01000000) 2 et tant que PORTD 0 (1) et par décalage à droite de 1 FIN POUR FIN TANT QUE FAIRE Temporisation 0,5s 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 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 #include <htc.h> // registres du PIC 16F877A // Fichier de fonctions prédéfinies // Fonction principale // Directives d assemblage CONFIG(0x3f3a); // Définitions des Fonctions // non nécessaire si configuré par // le programmateur PPPV3 C. Expérimentation Saisir et tester votre programme sur les maquettes en utilisant le projet MPLAB. - Commenter votre résultat. - 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 DÉBUT ALGORITHME C. Ordinogramme 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 #include <pic16f877a.h> // Fichier de définition des adresses des #include <htc.h> // Définitions des Fonctions // registres du PIC 16F877A // Fichier de fonctions prédéfinies // Fonction principale E. Expérimentation Saisir et tester votre programme sur les maquettes PIC en utilisant le projet MPLAB prévu à cet effet.