TP D INITIATION AU LANGAGE C



Documents pareils
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

La programmation des PIC en C. Les fonctions, les interruptions.

PIC EVAL Dev Board PIC18F97J60

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)

Les structures. Chapitre 3

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Programmation C++ (débutant)/instructions for, while et do...while

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire


Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Spécialité Professionnelle. Patrick Boulandet

CAA/SE N O T I C E D E M O N T A G E E T D U T I L I S A T I O N KIT DE MONTAGE. Clavier lumineux codes DIGICODE

Introduction au langage C

Cours d algorithmique pour la classe de 2nde

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Flowcode - Mode d'emploi

Initiation. àl algorithmique et à la programmation. en C

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique et de Langage C v 3.0

VIII- Circuits séquentiels. Mémoires

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Carte ARDUINO UNO Microcontrôleur ATMega328

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

UE Programmation Impérative Licence 2ème Année

Centrale de surveillance ALS 04

Notice d installation de la Centrale VIGIK DGM1

Organigramme / Algorigramme Dossier élève 1 SI

Guide d'utilisation du téléphone IP Thomson ST-2030 G

IUT BREST UN LOGICIEL SCADA : PC VUE 2010 DEP.GMP

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

MINIMUM. connaissances nécessaires à la programmation des microcontrôleurs PIC18 en langage C (une introduction au langage c A.N.S.

Réalisation d un réseau de capteurs de température sans fil basé sur le protocole ZigBee

NOTICE D INSTALLATION CENTRALE 260

DovAdis. Objet Rapprochement bancaire Métier Gérance. Siège social SPI 1, rond-point du Flotis Bât IV St Jean

Programme EcranTactile-01 MANUEL DE MISE EN ŒUVRE

Projet Robot Centaure

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Guide d utilisation Advisor Advanced

Travaux Dirigés n 1 : chaînes de caractères

4. Groupement d objets

Notice d'exploitation

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Tableaux d alarme incendie de type 4-230V~ - 1 boucle / 2 boucles /62

Algorithmique et Programmation, IMA

Présentation - Tableau de bord du CA Carrefour informationnel et documentaire des Laurentides

Programmer en JAVA. par Tama

Bases de programmation. Cours 5. Structurer les données

GUIDE Excel (version débutante) Version 2013

MANUEL D INSTRUCTION

I. Introduction aux fonctions : les fonctions standards

PARCOURS 3 EXPERIMENTATION APPRENTISSAGE : PHASE 2 CARA CREATION DU PROGRAMME POUR LA PHASE 2

L'intégration et le montage d'appareillages électriques doivent être réservés à des électriciens

Tableaux d alarme sonores

SYSTEMES ELECTRONIQUES NUMERIQUES

Cours d initiation à la programmation en C++ Johann Cuenin

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Compression de Données - Algorithme de Huffman Document de Conception

Rappels Entrées -Sorties

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

TP : Gestion d une image au format PGM

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

COMMANDER la puissance par MODULATION COMMUNIQUER

Version 7.1_5.1. Release Notes

Modes Opératoires WinTrans Mai 13 ~ 1 ~

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

V- Manipulations de nombres en binaire

Configurateur tebis TX100

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Cours 1 : Qu est-ce que la programmation?

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

PIC : COURS ASSEMBLEUR

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

CONFIGURATION DE L AUTOMATE SIEMENS

Programmation en langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C

PROMI 500 Badges - Codes

République Tunisienne Ministère de l'education. Sciences Techniques. Manuel d activités. Les auteurs. Ali ZITOUNI Inspecteur des lycées et collèges

INSTALLATION DE L AGENT CT EASY BACKUP LAN REV 1.0/

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Java Licence Professionnelle CISII,

Motorola IT6. Downloaded from Téléphone numérique sans fil avec répondeur automatique. Pour les modèles IT6 et IT6-2

Les tâches d un projet

Parcours FOAD Formation EXCEL 2010

Rappels sur les suites - Algorithme

01/11/2011. Machine à café - Amélioration du système existant MLK - ECST

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Introduction à MATLAB R

Transcription:

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) page 1 / 10 I. TP Clignotement de RB0 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 B. B. Ordinogramme Début C. Algorithme Proposer un algorithme structuré traduisant l ordinogramme précédent. DEBUT ALGORITHME FAIRE RB0 à RB5 en sortie et RB6 à RB7 en entrée TANT QUE 1=1 FAIRE RB0=1 RB0 à RB5 en sortie RB6 et RB7 en entrée FAIRE Temporisation 0,5s 1=1? RB0=1 FAIRE RB0=0 FAIRE Temporisation 0,5s FIN TANT QUE Temporisation 0,5s RB0=0 Temporisation 0,5s Fin FIN ALGORITHME

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) 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 delay.h : DelayMs(x). Pour appeler cette fonction, il suffit d utiliser la syntaxe précédente en remplacant x par la durée en milliseconde. La valeur de x ne doit pas excéder 255. Remarque : Le fichier delay.h doit être ajouté comme fichier d entête et le fichier delay.c doit être inclus au projet MPLAB. b) Fonction à créer Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes : Configuration_PORTB() qui doit fixer la direction de RB0 à RB7. Allumer_RB0() qui doit faire passer RB0 à 1. Eteindre_RB0() qui doit faire passer RB0 à 0. L accès à la Bank0 et Bank1 se fait automatiquement grâce au fichier pic16f6x.h 2. Programme en C #include <pic16f6x.h> // Fichier de définition des // adresses des registres des // PIC de la famille 16F6x #include <pic.h> // Fichier de fonctions prédéfinies #include <delay.h> // Fichier de fonctions prédéfinies // pour temporisations logiciels // le fichier delay.h doit être dans le répertoire des fichiers d entête sinon il faut le mettre entre guillemets "delay.h" et le placer avec dans le répertoire du fichier source // Directives d assemblage CONFIG(MCLRDIS & LVPDIS & PWRTEN & BORDIS & \ UNPROTECT & DATUNPROT & WDTDIS & XT); // Définitions des Fonctions void Configuration_PORTB(void) TRISB=0b11000000; // RB0 à RB5 en sortie // RB6 et RB7 en entrée void Allumer_RB0(void) RB0=1; // RB0 mis à 1 void Eteindre_RB0(void) RB0=0; // RB0 mis à 0 // Fonction principales void main(void) Configuration_PORTB(); while(1) // Répéter toujours Allumer_RB0(); // 250ms + 250ms = 0,5s Eteindre_RB0(); // 250ms + 250ms = 0,5s E. Expérimentation Saisir et tester votre programme sur les maquettes PIC en utilisant le projet MPLAB prévu à cet effet.

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) 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 A (RA0 à RA3). L'état de chaque boutons sera visualisé par une LED. Les LED sont connectées sur le port B. Nous utiliserons les LED 0 à 3. B. Ordinogramme Début C. Algorithme Proposer un algorithme structuré traduisant l ordinogramme précédent. DEBUT ALGORITHME FAIRE Inhiber les comparateurs FAIRE RB0 à RB5 en sortie et RB6 à RB7 en entrée Inhiber les comparateurs ( CMCON=(00000111) 2 ) FAIRE PORTA en entrée TANT QUE 1=1 RB0 à RB5 en sortie RB6 et RB7 en entrée FAIRE Lecture PORTA PORTA en entrée 1=1? Lecture du PORTA FAIRE PORTB = PORTA. (00001111) 2 FIN TANT QUE Ne garder que RA0 à RA3 (Forcer les autres à 0) Écriture du résultat dans le PORTB Fin FIN ALGORITHME

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) page 4 / 10 D. Programme en langage C 1. Consignes a) Fonction prédéfinie Le programme n utilisera pas de fonction prédéfinie. b) Fonction à créer Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes : Inhiber_comparateur() qui doit inhiber le fonctionnement des comparateur afin d utiliser le PORTA en entrée numérique. Configuration_PORTB() qui doit fixer la direction de RB0 à RB7. Configuration_PORTA() qui doit fixer la direction de RA0 à RA7. Lecture_et_Affichage() qui doit lire l état des quatre bits de poids faible du PORTA et afficher le résultat sur le PORTB. RB4 à RB7 doivent être forcés à 0. 2. Programme en C #include <pic16f6x.h> // Fichier de définition des adresses des // registres // des PIC de la famille 16F6x #include <pic.h> // Fichier de fonctions prédéfinies // Directives d assemblage CONFIG(MCLRDIS & LVPDIS & PWRTEN & BORDIS & \ UNPROTECT & DATUNPROT & WDTDIS & XT); // Définitions des Fonctions void Inhiber_comparateur(void) CMCON=0b00000111; // Inhibition des comparateurs // donc PORTA en entrée numérique void Configuration_PORTB(void) TRISB=0b11000000; // RB0 à RB5 en sortie // RB6 et RB7 en entrée void Configuration_PORTA(void) TRISA=0b11111111; // PORTA en entrée void Lecture_et_Affichage(void) PORTB=PORTA & 0b00001111; // Recopie du PORTA sur le PORTB // avec masquage à 0 de RA4 à RA7 // Fonction principales void main(void) Inhiber_comparateur(); Configuration_PORTB(); Configuration_PORTA(); for(;;) // Une autre syntaxe possible pour // boucle sans fin (non standard) Lecture_et_Affichage(); E. Expérimentation Saisir et tester votre programme sur les maquettes PIC en utilisant le projet MPLAB prévu à cet effet.

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) 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 LED1 reliée à RB0. La LED2 s allume 0,5 seconde plus tard et ainsi de suite jusqu à la LED6. Ce cycle recommence ensuite indéfiniment. B. Ordinogramme Début RB0 à RB5 en sortie et RB6 et RB7 en entrée 1 = 1? PORTB = (00000001) 2 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. DEBUT ALGORITHME FAIRE RB0 à RB5 en sortie et RB6 à RB7 en entrée TANT QUE 1=1 POUR PORTB = (00000001) 2 à PORTB.(00111111) 2 0 et par décalage à gauche de 1 FAIRE Temporisation 0,5s PORTB.(00111111) 2 0? Temporisation 0,5s FIN POUR FIN TANT QUE Décalage à gauche du PORTB Fin Remarque : Le deuxième test comporte un masque (ET logique) car nous ne connaissons pas la valeur de RB6 et RB7 qui sont en entrée sur nos carte PIC. FIN ALGORITHME

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) 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 delay.h : DelayMs(x). Pour appeler cette fonction, il suffit d utiliser la syntaxe précédente en remplacant x par la durée en milliseconde. La valeur de x ne doit pas excéder 255. Remarque : Le fichier delay.h doit être ajouté comme fichier d entête et le fichier delay.c doit être inclus au projet MPLAB. b) Fonction à créer Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes : Configuration_PORTB() qui doit fixer la direction de RB0 à RB7. 2. Programme en C #include <pic16f6x.h> // Fichier de définition des adresses des // registres // des PIC de la famille 16F6x #include <pic.h> // Fichier de fonctions prédéfinies #include <delay.h> // Directives d assemblage // Fichier de fonctions prédéfinies // pour temporisations logiciels // voir note page 2 CONFIG(MCLRDIS & LVPDIS & PWRTEN & BORDIS & \ UNPROTECT & DATUNPROT & WDTDIS & XT); // Définitions des Fonctions void Configuration_PORTB(void) TRISB=0b11000000; // RB0 à RB5 en sortie // RB6 et RB7 en entrée // Fonction principales void main(void) Configuration_PORTB(); while(1) for(portb=0b00000001;portb&0b00111111;portb=portb<<1) E. Expérimentation Saisir et tester votre programme sur les maquettes PIC en utilisant le projet MPLAB prévu à cet effet. IV. TP chenillard à deux sens de défilement A. Présentation L'objectif est de réaliser un chenillard a deux sens de défilement. La première LED à s'allumer est la LED1 reliée à RB0. La LED2 s allume 0,5 seconde plus tard et ainsi de suite jusqu à la LED6. Ensuite, c est au tour de la LED5 de s allumée pour revenir à la LED1.

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) page 7 / 10 B. Algorithme DEBUT ALGORITHME Début RB0 à RB5 en sortie et RB6 et RB7 en entrée FAIRE RB0 à RB5 en sortie et RB6 à RB7 en entrée TANT QUE 1=1 POUR PORTB = (00000001) 2 à PORTB.(00111111) 2 0 et par décalage à gauche de 1 FIN POUR FAIRE Temporisation 0,5s POUR PORTB = (00010000) 2 à PORTB.(00111110) 2 0 et par décalage à droite de 1 FIN POUR FIN TANT QUE FIN ALGORITHME FAIRE Temporisation 0,5s 1 = 1? PORTB = (00000001) 2 PORTB.(00111111) 2 0? Temporisation 0,5s Décalage à gauche du PORTB PORTB = (00010000) 2 PORTB.(00111110) 2 0? Temporisation 0,5s PORTB = (PORTB.(00111111) 2 )>>1 C. Ordinogramme Proposer un ordinogramme structuré traduisant l algorithme précédent en prenant soin de masquer les bits RB6 et RB7 qui sont entrée sur nos cartes électroniques. Fin

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) page 8 / 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 delay.h : DelayMs(x). Pour appeler cette fonction, il suffit d utiliser la syntaxe précédente en remplacant x par la durée en milliseconde. La valeur de x ne doit pas excéder 255. Remarque : Le fichier delay.h doit être ajouté comme fichier d entête et le fichier delay.c doit être inclus au projet MPLAB. b) Fonction à créer Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes : Configuration_PORTB() qui doit fixer la direction de RB0 à RB7. 2. Programme en C #include <pic16f6x.h> // Fichier de définition des adresses des // registres // des PIC de la famille 16F6x #include <pic.h> // Fichier de fonctions prédéfinies #include <delay.h> // Directives d assemblage // Fichier de fonctions prédéfinies // pour temporisations logiciels // voir note page 2 CONFIG(MCLRDIS & LVPDIS & PWRTEN & BORDIS & \ UNPROTECT & DATUNPROT & WDTDIS & XT); // Définitions des Fonctions // Fonction principales void main(void) Configuration_PORTB(); while(1) for(portb=0b00000001;portb&0b00111111;portb=portb<<1) for(portb=0b00010000;portb&0b00111110;portb=(portb&0b00111111)>>1) E. Expérimentation Saisir et tester votre programme sur les maquettes PIC en utilisant le projet MPLAB prévu à cet effet. - Que ce passe-t-il si la condition du dernier teste est PORTB.(00111111) 2 0? Modifier votre programme et commenter le résultat obtenu. La combinaison 00000001 s affiche durant 1 seconde au lieu de 0,5s. void Configuration_PORTB(void) TRISB=0b11000000; // RB0 à RB5 en sortie // RB6 et RB7 en entrée V. TP lecture de l état des boutons poussoirs et clignotement de la LED5 A. Présentation L'objectif est d afficher sur LED1 à LED4 (RB0 à RB3) l'état des boutons poussoirs SW1 à SW4 (RA0 à RA3) tout en faisant clignoter à 1Hz la LED5 (RB4).

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) page 9 / 10 B. Algorithme DEBUT ALGORITHME Début FAIRE Inhiber les comparateurs Inhiber les comparateurs ( CMCON=(00000111) 2 ) FAIRE RB0 à RB5 en sortie et RB6 à RB7 en entrée FAIRE PORTA en entrée RB0 à RB5 en sortie RB6 et RB7 en entrée PORTA en entrée FAIRE PORTB = 0 PORTB=0 TANT QUE 1 = 1 FAIRE RB4 = /RB4 1=1? FAIRE i = 0 RB4= /RB4 FAIRE i = 0 FAIRE RB0=RA0 RB1=RA1 RB2=RA2 RB3=RA3 FAIRE i = i +1 FAIRE Temporisation 250ms RB0=RA0 RB1=RA1 RB2=RB2 RB3=RB3 TANT QUE i < 2 i = i +1 FIN TANT QUE Temporisation 250ms FIN ALGORITHME I<2? C. Ordinogramme Proposer un ordinogramme structuré traduisant l algorithme précédent. Fin

TP PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC (CORRECTION) page 10 / 10 D. Programme en langage C 1. Consignes Afin de structurer le programme, la fonction main devra appeler les fonctions suivantes : Inhiber_comparateur(), Configuration_PORTB(), Configuration_PORTA() et DelayMs(x) identiques à celles utilisée précédemment. char Lecture_Poids_Faible(char a) qui doit lire l état des quatre bits de poids faible du PORTA et les afficher sur les quatre bits de poids faible du PORTB. Elle doit également incrémenter la variable passée en paramètre et retourner cette valeur. 2. Programme en C #include <pic16f6x.h> // Fichier de définition des registres #include <pic.h> // Fichier de fonctions prédéfinies #include <delay.h> // Fonctions tempo voir note page 2 // Directives d assemblage CONFIG(MCLRDIS & LVPDIS & PWRTEN & BORDIS & \ UNPROTECT & DATUNPROT & WDTDIS & XT); // Définitions des Fonctions void Inhiber_comparateur(void) CMCON=0b00000111; void Configuration_PORTB(void) // Inhibition des comparateurs // donc PORTA en entrée numérique TRISB=0b11000000; // RB0 à RB5 en sortie void Configuration_PORTA(void) // RB6 et RB7 en entrée TRISA=0b11111111; // PORTA en entrée char Lecture_Poids_Faible(char a) RB0=RA0; RB1=RA1; RB2=RA2; RB3=RA3; a=a+1; return a; // Fonction principales void main(void) char i; // Déclaration d une variable i Inhiber_comparateur(); Configuration_PORTB(); Configuration_PORTA(); PORTB=0; while(1) // Boucle sans fin RB4=!RB4; // Basculement de RB4 i=0; // initialisation de i à 0 do // Début boucle Faire i=lecture_poids_faible(i); while(i<2); // Tant que i<2 E. Expérimentation Saisir et tester votre programme sur les maquettes PIC en utilisant le projet MPLAB prévu à cet effet.