Cours PIC16F877 2019/2020 Hmaied Sarhene Page 26 CHAPITRE 2:INITIATION A LA PRO

Cours PIC16F877 2019/2020 Hmaied Sarhene Page 26 CHAPITRE 2:INITIATION A LA PROGRAMMATION EN C POUR PIC 8. Les qualités du langage C Le langage C est : - PORTABLE : Les modifications d'un programme pour passer d’un système à un autre sont minimes. - COMPLET : Un texte C peut contenir des séquences de bas niveau (proches du matériel) en assembleur. - SOUPLE : Tout est possible en C mais une grande rigueur s’impose. - EFFICACE : On réfléchit (devant une feuille de papier) et on écrit (peu). 9. Notion de filière de développement On désigne ainsi l’ensemble des outils qui interviennent entre le texte source C et le code objet téléchargé dans le microcontrôleur PIC. Les étapes de génération d’un programme écrit en langage C sont : - L’édition du fichier source mon_programme.C avec un éditeur de texte (simple sans mise en forme du texte). - La compilation du fichier source pour obtenir un fichier objet : mon_programme.ASM. La compilation est la transformation des instructions C en instructions assembleur pour microcontrôleur PIC. - L’édition de liens permet d’intégrer des fonctions prédéfinies. Le programme auxiliaire Éditeur de liens (linker ou binder) génère à partir du fichier mon_programme.ASM un fichier exécutable mon_programme.HEX compatible avec le PIC Cours PIC16F877 2019/2020 Hmaied Sarhene Page 27 Structure d’un programme en C /* Tout ce qui se trouve entre ces symboles est du commentaire */ // Ce qui est à droite de ces symboles est également du commentaire void main() // Un programme en C comporte au moins une fonction // principale appele main. // Nous verrons plus loin le terme void. { // Les accolades définissent l’intérieur de la // fonction. fonction_1() ; // Les espaces doivent être remplacés par _ fonction_2() ; // Les fonctions sont séparée par un ; … fonction_n() ; // Attention à la casse car le C fait la différence // entre minuscules et majuscules. } // On aligne les accolades et on décale le corps de la // fonction par souci de lisibilité. Le programme doit également contenir la définition des différentes fonctions créées par le programmeur . Les fonctions doivent être définies (au moins leur prototype) avant d’être appelées par une autre fonction. Le langage C comporte des bibliothèques de fonctions prédéfinies sous forme de fichiers comportant l’extension .h. Ces fonctions seront ajoutées au programme exécutable lors de l’édition de liens. Pour incorporer dans un programme un fichier .h, on utilise la commande #include <fichier.h> placée habituellement en début de fichier. Exemples : Cours PIC16F877 2019/2020 Hmaied Sarhene Page 28 #include <delay.h> // delay.h contient des fonctions réalisant des // temporisations logiciels. #include <pic16f6x.h> // Grâce à ce fichier .h, le compilateur connaît // l’adresse de chaque registre et port // Ex : PORTB correspond à l’adresse 06, etc. 10. Composition d’un programme en C Un programme en C utilise 2 zones mémoire principales : - La zone des VARIABLES est un bloc RAM où sont stockées des données manipulées par le programme. - La zone des FONCTIONS et CONSTANTES est un bloc ROM qui recevra le code exécutable du programme. Avant d’utiliser une variable, une fonction ou une constante, il faut la déclarer afin d’informer le compilateur de son existence. Leur nom que l'on utilise est un identificateur. Leur écriture doit : - Utiliser les lettres de l'alphabet, de a à z, et de A à Z, les chiffres de 0 à 9 (sauf pour le premier caractère), le souligné ( _ ). - Ne contenir ni espace, ni caractère accentué. - Être représentative de leur rôle dans le programme Les différents types de valeur du langage C Toutes les valeurs (constantes et variables) utilisée en C sont classées selon des types. Un type décide de l’occupation mémoire de la donnée. Pour déclarer correctement une variable ou une constante, il faut donc savoir auparavant ce qu’elle va contenir. On distingue les types suivants : char a ; // Déclare un entier signé 8 bits [-128 à +127 ] unsigned char b ; // Déclare un caractère non signé 8 bits [0 à 255] int c ; // Déclare un entier signé 16 bits [-32768 à +32767 ] unsigned int d ; // Déclare un entier non signé 16 bits [0 à 65535] long e ; // Déclare un entier signé 32 bits Cours PIC16F877 2019/2020 Hmaied Sarhene Page 29 // [-2147483648 à +2147483647] unsigned long f ; // Déclare un entier non signé 32 bits // [0 à 4292967295] float g; // Déclare un réel signé 32 bits dont la valeur // absolue est comprise entre 3,4.10 -38 et 3,4.10 +38 double h; // Déclare un réel signé 64 bits dont la valeur // absolue est comprise entre 1,7.10 -308 et 1,7.10 +308 long double i; // Déclare un réel signé 80 bits dont la valeur // absolue est comprise entre 3,4.10 -4932 et 3,4.10 +4932 11. Représentation des différentes bases et du code ASCII int a = 4 ; // Un nombre seul représente un nombre décimal. int b = 0b1010 ; // Un nombre précédé de 0b est un nombre binaire. int p = 0x00FF ; // Un nombre précédé de 0x est un nombre hexadécimal. char c = ‘x’ ; // Un caractère entre ‘’ représente son code ASCII. 12. Les opérateurs 12.1. L’opérateur d’affectation Cet opérateur a déjà été utilisé dans les exemples précédents. Il permet, entre autres, d’initialiser une variable. = Exemple : a = 5 ; // Range 5 dans a. PORTB = 0 ; // le PORTB est mis à 0 Attention : Le transfert de la valeur va toujours de la droite vers la gauche du signe égal 12.2. Les opérateurs arithmétiques + Exemple : a = 5 ; b = 4 ; x = a+b ; // rend la somme de a et b. Cours PIC16F877 2019/2020 Hmaied Sarhene Page 30 // x vaut 9 - Exemple : a = 5 ; b = 4 ; x = a-b ; // rend la soustraction de a et b. // x vaut 1 * Exemple : a = 5 ; b = 4 ; x = a*b ; // rend la multiplication de a et b. // x vaut 20 / Exemple : a = 10 ; b = 3 ; x = a/b ; // rend le quotient de la division // entière de a et b. // x vaut 3 % Exemple : a = 10 ; b = 3 ; x = a%b ; // rend le reste de la division // entière de a et b. // x vaut 1 // % se prononce « modulo » 12.3. Les opérateurs de manipulation de bits ~ Exemple : a = 0b0110 ; x = ~a ; // rend le complément de a. // x vaut 0b1001 & Exemple : a = 2 ; b = 3 ; x = a&b ; // rend le ET bit à bit de a et b. // x vaut 0b10 | Exemple : a = 2 ; b = 5 ; x = a|b ; // rend le OU bit à bit de a et b. // x vaut 0b111 ^ Exemple : a = 2 ; b = 7 ; x = a^b ; // rend le OU EXCLUSIF bit à // bit de a et b. // x vaut 0b101 >> Exemple : a = 2 ; b = 1 ; x = a>>b ; // rend la valeur de a décalée à // droite de b bits. Cours PIC16F877 2019/2020 Hmaied Sarhene Page 31 // x vaut 0b01 << Exemple : a = 2 ; b = 3 ; x = a<<b ; // rend la valeur de a décalée à // gauche de b bits. // x vaut 0b10000 12.4. Les opérateurs de test Remarque : En C, FAUX est la valeur 0, VRAI est tout ce qui est ≠ 0. > Exemple : a = 6 ; x = a>4 ; // rend VRAI si a est supérieur à 4. FAUX sinon. // x vaut VRAI >= Exemple : a = 2 ; x = a>= 2 ; // rend VRAI si a est supérieur ou égal à 2. //FAUX sinon. // x vaut VRAI < Exemple : a = 6 ; x = a<3 ; // rend VRAI si a est inférieur à 3. FAUX sinon. // x vaut FAUX <= Exemple : a = 3 ; x = a<= 6 ; // rend VRAI si a est inférieur ou égal à 6. //FAUX sinon. // x vaut VRAI == Exemple : a = 6 ; x = a == 5 ; // rend VRAI si a est égal à 5. // FAUX sinon. // x vaut FAUX != Exemple : a = 4 ; x = a != 2 ; // rend VRAI si a est différent de 2. //FAUX sinon. // x vaut VRAI && Exemple : a = 9 ; b = 1 ; // ET LOGIQUE : rend VRAI uploads/S4/ chapitre-2-initiation-programmation-c-pic.pdf

  • 23
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jul 04, 2022
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.4048MB