Sie sind auf Seite 1von 10

TSTI2 anne 2010/2011

LANGAGE C Compilateur CC5X MPLAB v8

SECTION STI

ELECTRONIQUE

Le logiciel utilis est MPLAB IDE. MPLAB est un environnement de dveloppement intgr (IDE) qui permet entre autres le dveloppement sur les microcontrleurs PIC de la socit Microchip. MPLAB permet dditer le fichier source crit en langage C. MPLAB fait ensuite appel au compilateur CC5X. Le compilateur fournit un fichier assembleur (.asm). MPASM intgr MPLAB permet l'assemblage et donc la cration d'un fichier hexadcimal (.hex) tlcharger dans le PIC. La chane de dveloppement est la suivante :

dition du fichier source

diteur MPLAB

#pragma chip PIC16F84A #pragma config = 0x3FF9 void main() { STATUS=STATUS| 0x20; TRISB=0x00; STATUS=STATUS&0x9F; PORTB = 0x01; }

// PIC 16F84A // mot de configuration du PIC

// RP0 1; bank1 // PORTB en sortie // RP0 0; bank0

nom.c

langage C

compilation

compilateur cc5x

main BSF 0x03,RP0 CLRF TRISB MOVLW 159 ANDWF STATUS,1 MOVLW 1 BCF 0x03,RP0 MOVWF PORTB SLEEP GOTO main END

16F84A.h

nom.a sm

assembleur

assemblage

MPASM
:100000000128831686019F30830501308312860004 :040010006300012860

mot de configuration du PIC

nom.hex

:02400E00F93F78 :00000001FF

hexadcimal programmation
Les bits sont envoys en srie dans la mmoire du pic

programmateur MPLAB

carte de dveloppement PIC

c PIC : MPLAB - cc5x

{\tp\prog_c\notice_prog_c_MPLAB & cc5x.odt} - page 2/10

1. CRATION D'UN PROJET SOUS MPLAB


Avant de dmarrer l'dition d'un fichier vous devez crer un projet en suivant les tapes ci-dessous : 1.1 Lancement de MPLAB Pour dmarrer MPLAB IDE, cliquer sur l'icne 1.3 Choix du processeur

depuis le bureau. 1.2 Lancement de Project Wizard

1.4 Slection des outils La fentre suivante permet la slection des outils logiciels ncessaires la cration du fichier .hex. On slectionne ici le compilateur CC5X.

La fentre ci-dessous s'ouvre :

De mme pour MPASM : C:\Program Files\MPLAB IDE\MCHIP_Tools\MPASMWIN.EXE et pour MPLINK : C:\Program Files\MPLAB IDE\MCHIP_Tools\MPLINK.EXE

Pour continuer, cliquer sur Suivant

c PIC : MPLAB - cc5x

{\tp\prog_c\notice_prog_c_MPLAB & cc5x.odt} - page 3/10

1.5 Cration du projet La fentre suivante permet de nommer votre projet et d'indiquer son chemin. Cliquer sur Browse puis indiquer votre rpertoire de travail.

1.7 Validation du projet La fentre suivante rsume les caractristiques du projet cr :

Cliquer sur Suivant ; l'arborescence de votre projet apparat l'cran : Pour continuer, cliquer sur Suivant 1.6 Insertion du fichier source La fentre suivante permet d'ajouter au projet des fichiers sources existants. Si vous dmarrez un nouveau projet et que vous n'avez pas encore de fichiers sources, cliquer sur suivant.

Vous allez dfinir le chemin des fichiers .h inclure lors de l'assemblage. Cliquer sur Project puis Build Options puis Project.

Choisir Include Search Path et donner le chemin vers le dossier de cc5x


c PIC : MPLAB - cc5x
{\tp\prog_c\notice_prog_c_MPLAB & cc5x.odt} - page 4/10

2. dition et compilation du fichier source


2.1 Cration du fichier source (.c) Pour crer un fichier source, faire File puis New

2.2 Intgration du fichier dans le projet Un clic droit sur Source File permet d'intgrer votre fichier source dans votre projet.

Slectionner le fichier source puis valider. Une fentre d'dition s'ouvre alors, permettant l'criture du fichier source. L'arborescence suivante apparat l'cran :

Une fois le fichier crit, vous devez l'enregistrer aprs l'avoir nomm. Cliquer sur File puis Save As...

N'oubliez pas de lui donner l'extension .c .

c PIC : MPLAB - cc5x

{\tp\prog_c\notice_prog_c_MPLAB & cc5x.odt} - page 5/10

3. Compilation du fichier source


La compilation et l'assemblage se lance en cliquant sur l'icne BUILD.

Le rsultat de la compilation est fourni dans la fentre ci-dessous. Vrifiez que le message BUILD SUCCEEDED apparat. Dans le cas contraire, corrigez les erreurs !

c PIC : MPLAB - cc5x

{\tp\prog_c\notice_prog_c_MPLAB & cc5x.odt} - page 6/10

4. Le langage C sous Flowcode et cc5x


4.1 Dclarations de variables Pour pouvoir lire ou mmoriser linformation dlivre par un capteur, la traiter, il est ncessaire dutiliser des variables qui sont des cases de la mmoire donne dans lequel sera stocke cette information. Pour pouvoir commander un actionneur, on pourra utiliser aussi des variables qui permettront dcrire dans les ports du microcontrleur.
Algorigramme :
Type de variable Le seul type de variable autoris sous FLOWCODE est le type entier de 8 bits positif (non sign). Les entiers sont uniquement des dcimaux. Exemple :

Langage C :
Type de variable Plusieurs types de variable sont autorises sous CC5X unsigned char (entier de 8 bits non sign) et int (entier de 16 bits non sign).,,, Exemple : unsigned char x; int y=300; // variable 8 bits // variable 16 bits initialise la valeur 300

Adresse absolue Pour accder un registre du processeur (exemple le PORTE) on peut dfinir une variable qui pointe sur ladresse de ce registre. Pour cela il faut ajouter @ et ladresse de la variable. Exemple : unsigned char PORTE@0x09; //Variable PORTE l adresse 9 a = PORTE; //lit le PORTE et mettre le rsultat dans 'a' Format des donnes a = 1563 ; a = 0xFFA8 ; a = 0b10000001; a = S ; // Dcimal // Hexadcimal // Binaire // ASCII

Format des donnes Seules les donnes avec le format dcimal sont acceptes.

4.2 Affectation, calcul, lecture, criture


Algorigramme :
Exemple : C= (A + B 2) /3 *4 D = B MOD C C=C+1 C=C-1 C= B<<2 B = NOT A D= (A AND B) OR ( B AND C) XOR A Pour lire un PORT il faut avec Flowcode utiliser : C = PORTA ; Pour crire sur un PORT il faut avec Flowcode utiliser : PORTA=B ;

Langage C :
Exemple : char A,B,C,D ; //Toutes les variables sont dclares den len-tte C=(A+B 2) / 3 * 4 ; D = B % C; C++ ; C-- ; C= B<<2 B= ~ A ; D = (A & B) | (B & C) ^ A ; //modulo //dcalage de 2 bits vers la gauche //complment 1

c PIC : MPLAB - cc5x

{\tp\prog_c\notice_prog_c_MPLAB & cc5x.odt} - page 7/10

4.3 Oprateurs conditionnels Il existe plusieurs oprateurs qui permettent dlaborer des conditions logiques qui seront values vraies (=1) ou fausses (=0).
Algorigramme :
Exemple : (C >2) AND (B <=3) OR ( D<>3) (C= 2) AND (B>=3)

Langage C :
Exemple : (C>2) && ( B<=3) || (D!=3) (C= =2) && (B>=3)

4.4 structure alternative simple si...alors...


Algorigramme :
if (condition ) { traitement 1; } .. .. Exemple : Exemple : . if ( (A= =2) && (B>=3))

Langage C :

{ PORTB=B ; }

4.5 structure alternative complte si...alors...sinon


Algorigramme :
if (condition ) { traitement 1; } { traitement2 ; }

Langage C :

else .. .. Exemple :

Exemple : . if ((A= =2) && (B>=3)) { PORTB=B ; } else { PORTA=B ; }

c PIC : MPLAB - cc5x

{\tp\prog_c\notice_prog_c_MPLAB & cc5x.odt} - page 8/10

4.6 structure rptitive tant que faire fin tant que


Algorigramme : Langage C :
while ( condition ) { traitement1; } ..

Exemple :

Exemple : . PA = PORTA; PA0 = PA & 0x01 ; while ( PA0 !=1 ) { PA = PORTA; PA0 = PA & 0x01 ; }

4.7 structure rptitive rpter tant que


Algorigramme :
do { traitement1; } while ( condition );

Langage C :

Exemple : . .. Exemple : do { PA = PORTA; PA3 = PA & 8 ; } while ( PA3 != 8 );

c PIC : MPLAB - cc5x

{\tp\prog_c\notice_prog_c_MPLAB & cc5x.odt} - page 9/10

4.8 boucle infinie


Algorigramme : Langage C :
.. while ( 1 ) { traitement1; } ..

Exemple :

Exemple : .. while ( 1 ) { PA = PORTA; PORTB = PA; } ..

4.9 structure rptitive pour fin pour


Algorigramme :
Exemple :

Langage C :
Exemple : .. for (i=0 ; i< 10 ; i++) { traitement 1; } ..

c PIC : MPLAB - cc5x

{\tp\prog_c\notice_prog_c_MPLAB & cc5x.odt} - page 10/10