Nous avons 30 invités et aucun membre en ligne

Allez voir ma vidéo Youtube : [1] Programmation PIC en C : La Base

Pour programmer un microcontrôleur PIC, il faut créer un programme qui est constitué d’une série d'actions ou d'instructions que le microcontrôleur va lire indéfiniment. Le langage utilisé dans cette série de cours est le « .C ». C'est un langage déjà élaboré, facile à comprendre puisqu’il s’approche de notre mode de communication, mais un logiciel spécifique doit se charger de traduire le programme « .C » en un langage machine que le microcontrôleur peut comprendre. Si l’on souhaite travailler dans le langage spécifique du microcontrôleur, il faut utiliser un autre langage comme l'assembleur (.asm), qui présente l’intérêt d’être immédiatement compréhensible par le microcontrôleur.

Pour faciliter la communication avec la famille des PICs, j’ai conçu cette série de cours de programmation en « .C » afin de rendre la programmation plus intéressante et passionnante.

Il existe plusieurs logiciels qui permettent de programmer les PICs. On appelle ces logiciels des compilateurs puisqu'ils compilent (traduisent) notre programme (« .C ») en un langage que le PIC peut comprendre. Parmi les logiciels disponibles, on trouve MPLAB et MikroC Pro.

Dans le langage en «.C», nous trouvons plusieurs règles de base qu'il faut respecter pour que tout fonctionne correctement.

Les barres obliques

Pour commencer, nous trouvons les doubles barres obliques « // ». Lorsque vous rencontrerez deux barres obliques consécutives (« // »), cela veut dire que le texte qui suit, n'est pas pris en compte par le microcontrôleur. C'est très utile lorsqu'on commence ou lorsqu'on écrit des longs programmes. On peut écrire divers commentaires pour nous aider à nous repérer rapidement dans la logique du programme. Je les utilise, entre autres, dans l’en-tête de chaque programme ce qui me permet d'afficher plusieurs informations importantes concernant le projet, à savoir : le nom, la date, le PIC utilisé, une description et la version du projet.

Les doubles barres permettent également de préciser l’objet d’une ligne particulière de programmation à l’exemple de celles décrites ci-dessous :

LED = 1;                        // Active la LED.
Variable = Variable + 1;    // Incrémente la variable.

Pour regrouper une grande section en commentaire, on peut utiliser les barres obliques avec des étoiles. Observez l’exemple ci-dessous, vous voyez qu’il faut insérer une barre oblique avec une étoile en début de commentaire et finir ce même commentaire avec une étoile suivie d'une barre oblique.

/*
Cette section est réservée pour des commentaires et n'est pas prise en compte par le compilateur.
On peut faire des en-têtes avec ce type de ponctuation.

Projet de Domotique
Date : 01/01/15
Conception : Philippe Bourgault
Version : 1.0
*/

Les points virgules

Dans le langage « .C », on utilise beaucoup les points virgules. Ils signifient la fin d'une action ou d’une instruction. Il faut en insérer à chaque fin d’instruction sans quoi le programme ne peut comprendre l’intention du programmeur. Ils servent donc à séparer les instructions et indiquent au microcontrôleur qu'une action est terminée.

LED = 1;
if(Bouton == 1) LED = 1;

Les accolades

Les accolades servent à regrouper plusieurs actions d'un même type. Elles sont souvent utilisées dans les structures conditionnelles qu'on va étudier dans le cours 3.

Exemple d'une structure conditionnelle avec des accolades :

if(Bouton == 1)
{
   LED = 1;
   Delay_ms(1000);
   LED = 0;
}

Autres informations

En informatique, il faut savoir qu’un bit équivaut à 0 ou 1. 0 désigne 0V et 1 désigne 5V. On peut aussi les désigner par LOW pour 0 et HIGH pour 1. En programmation, on utilise également beaucoup l’instruction « char » qui représente un octet, c'est-à-dire un nombre compris entre 0 et 255. Il faut bien maîtriser ces 2 types d'unités car on va les utiliser énormément tout au long de la programmation. Il existe plusieurs autres types d’unités, mais pour l'instant nous nous contenterons de ces deux-là.

Pour programmer un PIC, il faut faire quelques réglages de base pour s’assurer que tout fonctionne correctement. Le premier réglage utilise l’instruction « TRIS » qui permet d’initialiser les broches. Cette fonction indique au microcontrôleur si la broche doit être interprétée comme une entrée ou comme une sortie.

Pour cela, il faut connaître le nom du PORT. Les ports sont désignés par les lettres A, B, C, D... Il faut écrire TRISA si l’on souhaite parler du port A et vous changez de lettre si vous souhaitez utiliser les autres ports. Pour connaître la position du PORT, prenez le temps de regarder la fiche technique du microcontrôleur. Dans un second temps, vous devez initialiser chaque broche.

On procède comme suit :

TRISA = 0b00001111;
TRISA = 0x0F;

Les deux lignes ci-dessus veulent dire la même chose. La première est exprimée par une écriture binaire tandis que la deuxième est écrite en hexadécimal.

0b désigne une écriture binaire. (0,1). Les 4 premiers 0 veulent dire que les bits 7, 6, 5 et 4 du port A sont initialisés en sortie et les bits 3, 2, 1 et 0 du même port sont initialisés en entrée. Il est extrêmement important de savoir que les bits se lisent à l'envers (de droite à gauche !) et s’écrivent à l’envers (de gauche à droite !). Bit 7, Bit 6, Bit 5, Bit 4, Bit 3, Bit 2, Bit 1 et Bit 0.

0x désigne une écriture hexadécimale. Pour les conversions binaire/hexadécimal, allez consulter mon cours 6 !

Le deuxième réglage consiste à paramétrer le PORT. Par défaut, il se met en mode HIGH (5V). Pour contrôler chaque port au niveau LOW, il faut intégrer la commande suivante : PORTA = 0 qui indique que le PORT A doit être initialisé à 0V. Le A peut être remplacé par B, C, D...

Programmer PORTA = 0 va initialiser, au démarrage du PIC, toutes les broches du PORT A à 0V.

Les expressions

Dans les programmes, il arrive souvent que l'on veuille réaliser des opérations mathématiques avec des variables. Pour ce faire, il faut connaître les différentes opérations possibles. Nous trouvons le « + » qui sert à additionner des constantes ou des variables. Il y a le « – » qui réalise la soustraction, le « * » qui accomplit la multiplication et le « / » qui effectue la division.

Ex : c = a + b : dans cette instruction, la somme des variables a et b vient se mettre dans la variable c.

On peut aussi utiliser les symboles « > »,  « < », « >= »,  « <= » pour créer une instruction conditionnelle.

if(x > 200) LED = 1;  // Si x prend une valeur strictement plus grande que 200 alors la LED va s’allumer.

On trouve également les symboles « ++ » et « –– ». Ils servent à incrémenter ou à décrémenter une variable d’une unité.

Ex : x++; (On ajoute 1 à la variable x qui prend alors la valeur x+1 ce qui se traduit informatiquement par l’égalité : x = x + 1)

Ex : x––; (On soustrait 1 à la variable x qui prend alors la valeur x– 1 ce qui se traduit informatiquement par l’égalité : x = x –  1)

On trouve encore le signe « = » qui est utilisé pour réaliser le changement de la valeur d’une variable. Par exemple, si on écrit : LED = 1; cela veut dire que la LED change de valeur pour prendre l'état 1. Si la variable LED était à 0, elle prend la valeur 1. Si la variable LED était déjà à 1, elle conserve son état et reste à 1.

Enfin le « == » exprime la comparaison : on teste l’état d’une variable. Par exemple, si on écrit :

if(inter == 1)

Cela veut dire que le programme attend que l’état de l'interrupteur soit à 1 pour réaliser une action spécifique. Contrairement au « = », le  « == » ne procède pas au changement de la valeur de la variable, il réalise une comparaison sans modification de valeurs.

Allez voir ma vidéo Youtube : [1] Programmation PIC en C : La Base