Notice Prog C MPLAB & Cc5x
Notice Prog C MPLAB & Cc5x
Notice Prog C MPLAB & Cc5x
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 :
diteur MPLAB
#pragma chip PIC16F84A #pragma config = 0x3FF9 void main() { STATUS=STATUS| 0x20; TRISB=0x00; STATUS=STATUS&0x9F; PORTB = 0x01; }
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
nom.hex
:02400E00F93F78 :00000001FF
hexadcimal programmation
Les bits sont envoys en srie dans la mmoire du pic
programmateur MPLAB
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.
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
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.
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.
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...
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 !
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.
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
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)
Langage C :
{ PORTB=B ; }
Langage C :
else .. .. Exemple :
Exemple :
Exemple : . PA = PORTA; PA0 = PA & 0x01 ; while ( PA0 !=1 ) { PA = PORTA; PA0 = PA & 0x01 ; }
Langage C :
Exemple :
Langage C :
Exemple : .. for (i=0 ; i< 10 ; i++) { traitement 1; } ..