Professional Documents
Culture Documents
1) GNRALITS
Ce document se rfre la version 3.2. Il est bas sur un autre document crit pour une version
antrieure. Il subsiste peut tre quelques incohrences.
Une version gratuite du compilateur, avec quelques limitations, peut tre tlcharge sur le site
de lditeur.
1.1) UTILISATION
Le compilateur CC5x est constitu dun excutable CC5X.exe lanc par une ligne de commande.
Cette ligne peut tre gnre par un environnement de dveloppement intgr (ex : MPLAB).
CC5X sinterface parfaitement avec MPLAB. Il y a interactivit entre la fentre des messages et la
ou les fentres ddition (un double clic sur un message derreur renvoie la ligne de lerreur
dans la fentre ddition).
Le compilateur CC5x peut tre utilis avec tous les PIC dentre de gamme et de milieu de
gamme. Un compilateur spcifique est disponible pour les PIC haut de gamme de la srie 18C
(CC8E).
Le compilateur peut produire seul un fichier excutable .hex partir dun seul fichier source en C
(avec dautres fichiers inclus ventuellement). Il ny a pas de ce cas utilisation dun diteur de
liens. Cette faon de travailler, peu courante pour un compilateur, a t retenue pour pouvoir
produire un fichier excutable compact et rapide lexcution.
Avec CC5X, il est aussi possible de raliser des compilations spares, avec un projet constitu
de plusieurs fichiers source en C, suivies dune dition de liens. Dans ce cas, ldition de liens
seffectue avec lditeur de liens MPLINK fourni avec MPLAB. Le fichier excutable produit est
moins optimis que lorsquil ny a quun seul fichier source. De plus, il existe certaines limitations, notamment dans lutilisation des fonctions.
Le prsent document ne traite pas de ldition de liens avec MPLINK. Voir CC5X Users Manual
6.8 Linker support.
Pour ce compilateur, la priorit de la conception na pas t dassurer une conformit avec le C
ANSI, mais dobtenir un code compact et rapide en faisant le meilleur usage possible des ressources limites du PIC. Certains types de donnes noccupent pas en mmoire la taille dfinie
par le C ANSI. Voir 3.
Le compilateur dispose dextensions au C ANSI pour gagner de la place en mmoire (type bit
pour les donnes) et pour sadapter aux particularits du C (possibilit de manipuler un bit dun
port avec une seule instruction machine, etc.).
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
Par exemple, avec la version dvaluation, il est impossible de compiler la ligne suivante :
ResultatCAN1+=ADRESH*256+ADRESL ;
La dcomposition suivante est accepte :
ResultatCAN1 = ADRESH*256;
ResultatCAN1 += ADRESL;
ResultatCumulCAN1+=ResultatCAN1; // 1 variable de plus ncessaire
Pour plus de dtail, voir le WRITING CODE THAT CAN BE COMPILED BY CC5X en fin du
fichier ReadMe.txt dans le dossier dinstallation du compilateur.
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
Pour une utilisation de plusieurs fichiers source en langage C, il faut utiliser lditeur de liens
MPLINK de Microchip dont il faut donner le chemin daccs (Tool Name : MPLINK) .Il est aussi
possible de lier des fichiers objet crs avec CC5X et MPASM, lassembleur de Microchip. Le
chemin daccs de ce dernier doit alors tre dfini.
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
4.2) DONNES
Seuls les types char (char, signed char, etc.) sont cods selon le C ANSI.
Les types int et long sont cods comme suit (non conformes au C ANSI)
Type
codage
int
long
8 bits
16 bits
Pour les entiers, en plus des types de donnes du C ANSI, le compilateur dispose des types mentionns ci-dessous :
Type
bit
int8, s8
int16, s16
int24, s24
int32, s32
uns8, u8
uns16, u16
uns24, u24
uns32, u32
codage
1 bit
8 bits
16 bits
24 bits
32 bits
8 bits
16 bits
24 bits
32 bits
valeurs
0 ou 1
-128 127
-32768 32767
-8388608 8388607
-2147483648 2147483647
0 255
0 65535
0 16777215
0 4294967295
Pour les donnes virgule flottante de types float ou double, le compilateur dispose des types
mentionns ci-dessous :
Type
float16
float, float24
double, float32
codage
16 bits
24 bits
32 bits
Il est possible de convertir les float24 et 32 au format IEEE754. Voir manuel de lutilisateur page 15.
Le compilateur dispose aussi des types dcimaux virgule fixe. Voir manuel page 16. Lutilisation
de ce type de donnes est rare.
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
Utilisation
Comme nimporte quelle donne. Ex :
if (Fonctionnement == NORMAL)
{} /* NORMAL vaut 1 par exemple */
Pour la dclaration dun bit plac dans un registre avec adresse, voir ci-dessous.
Utilisation avec MPLAB
Lors du dboguage, il est impossible de visualiser une donne de type bit avec MPLAB.
ACCS UN BIT DUNE DONNE
Il est possible daccder individuellement chacun des bits dune donne, en mentionnant le
numro du bit prcd de . (point) aprs le nom de la variable.
Exemples : PORTA.0 = 1 ;
if (PORTB.4 == 1)
CODAGE DES DONNES SUR PLUSIEURS OCTETS
Loctet de poids faible est rang ladresse basse. Cest la convention petit boutiste (little endian).
BASES POUR LES ENTIERS
En plus des bases du C ANSI, le compilateur CC5X accepte la base 2.
Notation : 0bnombre ou 0Bnombre. Ex : 0b01110011
Il est possible de sparer les bits par des points pour plus de visibilit.
Exemple : 0b1101.1001, 0b1.101.11.00
CHAMPS DE BITS
Indiquer lordre de rangement des bits
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
QUALIFICATEUR BANK
Les donnes dfinies sans qualificateur bankx sont places dans la banque 0.
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
4.5) POINTEURS
Le compilateur permet dutiliser 2 tailles pour les pointeurs, 1 octet ou 2 octets, pour accder
tout ou partie de la ROM et de la RAM.
Le choix de la taille des pointeurs peut tre laiss linitiative du compilateur pour les pointeurs
qui ne sont pas inclus dans des tableaux ou des structures.
Lutilisateur peut spcifier la taille dun pointeur lors de sa dfinition laide du qualificateur size1 ou size2. Ces qualificateurs sont utiliser essentiellement dans les tableaux de pointeurs ou
avec des structures dont les champs sont des pointeurs.
Les diffrents types de pointeurs sont donns dans le tableau suivant :
Taille pointeur
8 bits
16 bits
8 bits
16 bits
8 bits
16 bits
Exemples de dfinition :
bank1 size2 char* PtVar1 ; /* dfinition dun pointeur de 2 octets sur des entiers 8 bits. Le pointeur est plac en banque 1. Il permet daccder tout lespace RAM et ROM */
char* PtVar2 ; /* dfinition dun pointeur sans prcision de taille. Le compilateur fixera la taille en
fonction des accs mmoire raliss avec ce pointeur */
Le choix pour la taille dun pointeur seffectue selon les priorits suivantes :
1_ qualificateur
2_ choix automatique (pointeurs simples)
3_ choix daprs le modle par dfaut fix par les options de la ligne de commande
Pour plus de dtail, voir la manuel de lutilisateur pages 23 et suivantes.
4.6) INTERRUPTION EN C
Le nom de la fonction doit tre prcde de interrupt. Len-tte de la fonction ne doit pas mentionner de valeur de retour et ne doit pas avoir de paramtre.
En tte : interrupt TraitementInter(void)
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
int_restore_registers
}
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
4.8) COMMENTAIRES
Le compilateur accepte les commentaires du style C++ ainsi que les commentaires imbriqus.
Les commentaires imbriqus sont pratiques pour ne pas compiler une partie du programme qui
contient des commentaires.
Exemples :
// Ceci est un commentaire sur une ligne
/* passage supprim pour gagner quelques octets
if (BP2 == 0){
AffichageMsgAccueil(); /* avec animation */
}
*/
Comme les commentaires imbriqus sont accepts, les commentaires de titres de la forme suivante ne sont pas accepts :
/***************************************************************************/
/* Nom fonction : ReinitDureePhaseInst
/* Appele par: ReglageDateHeure()
/* Appelle : /* Niveau de pile: +1
/***************************************************************************/
Il faut utiliser le style suivant :
/***************************************************************************/
// Nom fonction : ReinitDureePhaseInst
// Appele par: ReglageDateHeure()
// Appelle : // Niveau de pile: +1
/***************************************************************************/
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
10
Lemplacement du fichier en-tte nest pas dfinir si on utilise les fichiers fournis. La ligne de
commande automatiquement gnre lors de la compilation donne lemplacement.
Si on veut utiliser un autre dossier, on peut
spcifier le chemin pour les fichiers include
dans la bote de paramtrage du projet.
Il est aussi possible de spcifier le chemin
daccs pour chaque nud du projet.
Attention, si le dossier est dans Program Files,
il faut utiliser le nom court de ce dossier progra~1.
Appellation CC5X
OPTION A vrifier
GO
De nombreux bits de contrle / tat sont dfinis (avec le type bit voir ci-dessus-).
Pour voir le dtail des bits dfinis, diter le fichier en-tte spcifique au PIC utilis.
6) PROGRAMME DE DMARRAGE
Avec CC5X, il ny a pas de programme de dmarrage proprement parler. Un programme de
dmarrage sert mettre les variables globales non initialises 0 et placer les valeurs initiales
pour les variables globales initialises.
CC5X se contente de placer un goto main en dbut de programme.
Les variables globales initialises ne sont pas acceptes le programmeur doit leur affecter
une valeur avant leur utilisation.
Les variables globales non initialises sont dans une valeur inconnue en dbut de programme.
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
11
VARIABLES LOCALES
Les variables locales de mme nom dans des blocs diffrents sont renommes. Par exemple, avec 2 variables i,
CC5X conserve ce nom pour la 1re apparaissant dans le
fichier source et renomme la 2me i_2. Ce sont ces noms
qui apparaissent dans la bote de dialogue Edit Watch.
La difficult est de faire la relation entre le nom apparaissant dans la bote de dialogue et la
bonne variable locale du programme.
Le plus simple est dutiliser des noms diffrents pour toutes les variables locales. Pour une
application pdagogique simple avec peu de variables cela est trs facile mettre en uvre.
Si on conserve de noms identiques, il est
possible dditer le fichier de listage pour
voir comment ont t renommes les
variables locales (en utilisant loutil de
recherche avec lidentificateur dorigine).
Ci-contre, on peut voir un extrait du fichier de listage.
0070
;void Tempo2(void)
0071
;{
0072 Tempo2
0073
;char i;
0074
;for(i=0x80;--i;)
0019 3080 0075 MOVLW .128
001A 1283 0076 BCF 0x03,RP0
001B 1303 0077 BCF 0x03,RP1
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
12
8) BIBLIOTHQUES
CC5X ne permet pas la cration et lutilisation de bibliothques au sens habituel du terme, cest-dire des fichiers qui contiennent des fonctions dj compiles.
Cependant on peut utiliser un fichier .c comme une bibliothque avec lemploi de 2 directives
particulires qui permettent de ne pas compiler les fonctions non utilises.
Il sagit de #pragma library1 et #pragma library 0. Les fonctions doivent tre places entre ces 2
directives.
Le fichier bibliothque .c doit tre inclus dans le fichier principal avec une directive #include.
Prsentation rapide du compilateur C CC5X pour PIC / Philippe Morenton Lyce Technique PE Martin Bourges
13