Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty,...

34
Langage Langage C C Développement logiciel Développement logiciel sur sur micro-contrôleurs PIC en micro-contrôleurs PIC en C C D’après Christian Dupaty, Académie d'Aix-Marseille

Transcript of Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty,...

Page 1: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Langage Langage CCDéveloppement logiciel sur Développement logiciel sur micro-contrôleurs PIC en Cmicro-contrôleurs PIC en C

D’après Christian Dupaty, Académie d'Aix-Marseille

Page 2: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

PréprocesseurRemplace les #define et effectue les #include

Compilateur CTransforme le fichier C en un fichier objet (code machine), les fonctions pré compilées sont déclarées dans les fichiers *.h

Editeur de lien

LINKERLie (donne des adresses aux fonctions) tous les fichiers objets et crée un fichier exécutable

#include <stdio.h>

main(){ puts(" Bonjour à tous ");}

Fichiers header*.h

Bibliothèques en C (texte)*.c

Bibliothèques pré compilées (fichiers objet)

Programme exécutable

Fichier source C contenant la fonction main

Fichier de symboles pour debug FLUX DE DONNEES D’UN

COMPILATEUR C

Page 3: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Syntaxe du CSyntaxe du C

#include <stdio.h> #include <stdio.h> #define pi 3.14#define pi 3.14float d,c;float d,c;

int main()int main(){{

d=2.0 ;d=2.0 ;c=pi*d ;c=pi*d ;puts("bonjour à tous\n");puts("bonjour à tous\n");printf("la circonférence est %f m\n",c);printf("la circonférence est %f m\n",c);

}}

Equivalence : Le pré-processeur remplacera tous les pi par 3.14

Header de la bibliothèque standard in/out. (pour printf)

Déclaration de deux variables réelles globales

En tête du programme principal

Appel de la fonction puts (envoie une chaîne de caractères sur le périphérique de sortie)

appel de la printf (affiche des chaînes formatés, ici c est affiché sous format réel)

Calculs

Début de la fonction main

Fin de la fonction main

Page 4: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

La syntaxe du C – allumer une ledLa syntaxe du C – allumer une led#include "essai.h"#include "essai.h"

void init_micro();void init_micro();

void main()void main(){{

init_micro();init_micro(); output_low(PIN_A0);output_low(PIN_A0); }}

void init_micro()void init_micro(){{ setup_adc_ports(NO_ANALOGS);setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF);setup_adc(ADC_OFF); setup_psp(PSP_DISABLED);setup_psp(PSP_DISABLED); setup_spi(FALSE);setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED);setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1);setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC);setup_comparator(NC_NC_NC_NC); setup_vref(VREF_LOW|-2);setup_vref(VREF_LOW|-2);}}

En tête de la fonction principale (main)

[email protected]

Librairies : les fichiers « header » *.h contiennent en général des équivalences ou les prototypes des fonctions pré-complilées ou non : ici essai.h contient les configurations des fusibles du µC.

Prototype : c’est la déclaration d’une fonction, il indique au compilateur le type de la fonction et ses paramètres de passage.

Appel de la fonction init_micro. (pas de paramètre d’entrée)

Appel de la fonction output_low. (permet de mettre un bit à 0, le paramètre d’entrée est l’adresse du bit)

Page 5: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Les types de données standardLes types de données standard

Type Longueur Domaine de valeurs

signed char ou char 8 bits -128 à 127

unsigned char 8 bits 0 à 255

signed int ou int 16 bits -32768 à 32767

unsigned int 16 bits 0 à 65535

long int 32 bits -2 147 483 648 à 2 147 483 647

unsigned long int 32 bits 0 à 4 294 967 295

float 32 bits ±3.4 * (10-38) à ± 3.4 * (10+38)

double 64 bits ± 1.7 * (10-308) à ± 1.7 * (10+308)

void - vide

[email protected]

Page 6: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Les types de données propres à Les types de données propres à PICCPICC

Par défaut, les types entiers (int, char) de base sont non signés! Ils peuvent être précédés de signed pour forcer le type signé.

Type Longueur Domaine de valeurs

int1 ou short 1 bit 0 ou 1

char 8 bits 0 à 255

int ou int8 8 bits 0 à 255

int16 ou long 16 bits 0 à 65535

int32 32 bits 0 à 4 294 967 295

float 32 bits ± 3.4 * (10-38) à ± 3.4 * (10+38)

void - vide

Page 7: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Exemples de déclarationExemples de déclaration

char tata,blabla,alea ;char tata,blabla,alea ;

int table[100] ; int table[100] ;

char tableau[ ]={10,0x1c,’A’,55,4}char tableau[ ]={10,0x1c,’A’,55,4}  

char *p ;char *p ;le symbole le symbole * * désigne un désigne un pointeur pointeur sur un type définisur un type définip est un pointeur sur des caractèresp est un pointeur sur des caractères

tableau de 100 entierstableau de 100 entiers

trois caractèrestrois caractères

Remarque:un nombre entier en hexadécimal est précédé de 0x ou 0X, (0x1FB9) un nombre entier en décimal n'a pas besoin de préfixeun nombre réel se note 13.145 ou 1.3145e+1.Dans les compilateurs pour µC: notation binaire 0b11010001

Page 8: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

EquivalencesEquivalences

directive #define directive #define Les Les équivalenceséquivalences sont remplacées par leur sont remplacées par leur

valeur par le pré-processeurvaleur par le pré-processeur

#define pi 3.14#define pi 3.14#define fruit pomme#define fruit pomme  

Page 9: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

ConstantesConstantes elles sont rangées dans la ROM et ne sont elles sont rangées dans la ROM et ne sont

donc pas modifiables.donc pas modifiables. constconst int i=16569, char c=0x4c ; int i=16569, char c=0x4c ; constconst float pi=3.14; float pi=3.14;

Le mot réservé « Le mot réservé « constconst » définit une constante » définit une constante

Page 10: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

VARIABLES LOCALES ET GLOBALESVARIABLES LOCALES ET GLOBALESLes variables sont stockées en RAM afin d’être modifiables Les variables sont stockées en RAM afin d’être modifiables au cours du programme. Elles peuvent être à une adresse au cours du programme. Elles peuvent être à une adresse fixe (static) ou dans une pile (volatile).fixe (static) ou dans une pile (volatile).

GLOBLALESGLOBLALESLOCALESLOCALESsoit à une adresse fixe (statique) soit à une adresse fixe (statique)

soit dans une pile LIFO (automatique)soit dans une pile LIFO (automatique)

Déclarées en dehors d’une fonctionDéclarées en dehors d’une fonctiontoujours statiquestoujours statiques

Déclarées dans une fonctionDéclarées dans une fonction

static char toto;static char toto;

char tata; ou auto char tata;char tata; ou auto char tata;

Page 11: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Branchement : if - elseBranchement : if - else

Condition du test : ==, <,>,<=,>=, !=,&&,|| …Condition du test : ==, <,>,<=,>=, !=,&&,|| …

if (A>B) if (A>B) printf(“ A est supérieur à B”);printf(“ A est supérieur à B”);

elseelse

printf(“A est printf(“A est inférieurinférieur ou égal à ou égal à B”);B”);

……sisi (A>B) (A>B)

alorsalors afficher(“ A est supérieur à B”)afficher(“ A est supérieur à B”)

sinonsinonafficher(“A est inférieur ou égal à afficher(“A est inférieur ou égal à

B”)B”)

Page 12: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Boucle WHILEBoucle WHILE

i=0;i=0;while (i<100)while (i<100)

{{a=a+i;a=a+i;i++ ;i++ ;}}

Si la condition de boucle est Si la condition de boucle est faussefausse au départ la au départ la boucle n’est jamais effectuéeboucle n’est jamais effectuée

i i 00tant quetant que (i<100) (i<100)

fairefaire::a a a+i a+ii i i+1  i+1 

Page 13: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Boucle DO WHILEBoucle DO WHILE

dodo{{a=a+i; a=a+i; i++ ;i++ ;}}

while (i<100)while (i<100)

fairefaire::a a a+i a+i i i i+1  i+1 

tant quetant que (i<100) (i<100)

Même si la condition de boucle est fausse au départ Même si la condition de boucle est fausse au départ la boucle est effectuée au moins une foisla boucle est effectuée au moins une fois

Page 14: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Branchement switch-caseBranchement switch-caseswitch (c )switch (c ) {{

case '+' : case '+' : resultat=a+b;break;resultat=a+b;break;case '-' :case '-' : resultat=a-b;break;resultat=a-b;break;case '*' : case '*' : resultat=a*b;break;resultat=a*b;break;case '/' : case '/' : resultat=a/b;breakresultat=a/b;break;;

ddefault : efault : resultat=a+b;resultat=a+b;}}

suivantsuivant la valeur de (c ) la valeur de (c )début suivantdébut suivant

sisi '+' : '+' : resultat resultat a+b a+b

sisi '-' : '-' :resultat resultat a-b a-b

sisi '*' : '*' :resultat resultat a*b a*b

sisi '/' : '/' :resultat resultat a/b a/b

par defaultpar default : :resultat resultat a+b a+b

fin suivantfin suivant

Cette structure est une extension de la structure alternative Cette structure est une extension de la structure alternative si..alors..sinon et permet une meilleur compacité du code.si..alors..sinon et permet une meilleur compacité du code.

Page 15: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Boucle FORBoucle FOR

for (i=0 ;i<100 ;i+for (i=0 ;i<100 ;i++)+) {{ a=a+i;a=a+i;

printf("%d\n",a);printf("%d\n",a); }}

Action(s) à effectuer en dernier dans la boucleAction(s) à effectuer en dernier dans la boucle

Condition pour rester dans la boucleCondition pour rester dans la boucle

Action(s) de départAction(s) de départ

Action(s) à effectuer dans la boucleAction(s) à effectuer dans la boucle

peut se traduire par:peut se traduire par:i i 0 0

tant que (i<100)tant que (i<100))) fairefaire a a a+i a+i

afficher_valeur(a)afficher_valeur(a)i i i+1 i+1Cette structure est une extension de la structure répétitiveCette structure est une extension de la structure répétitive

tant que … fairetant que … faire et permet une meilleure compacité du code. et permet une meilleure compacité du code.

Page 16: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Contrôle des bouclesContrôle des boucles breakbreak permet de sortir de la boucle en cours (for, while, permet de sortir de la boucle en cours (for, while,

do while, switch)do while, switch) continuecontinue permet de sauter directement à l’itération permet de sauter directement à l’itération

suivante d’une bouclesuivante d’une bouclefor(i=0 ;i<100 ;i++) for(i=0 ;i<100 ;i++)

{{if (i<50) if (i<50)

continuecontinueelse a=a+i;else a=a+i;

}} exitexit permet de quitter directement le programme (inutile permet de quitter directement le programme (inutile

sur micro contrôleur)sur micro contrôleur)

[email protected]

Page 17: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

POINTEURSPOINTEURSCe sont des Ce sont des variablesvariables qui contiennent l’adresse d’une autre variablequi contiennent l’adresse d’une autre variable..Sur micro-contrôleur un pointeur est une valeur sur Sur micro-contrôleur un pointeur est une valeur sur 16bits16bits..

Un pointeur est déclaré par une Un pointeur est déclaré par une ** précédée du type de donnée pointée précédée du type de donnée pointéeLe signe & devant une donnée indique l’adresse de celle ci et sa valeur.Le signe & devant une donnée indique l’adresse de celle ci et sa valeur.

char *toto ;char *toto ; déclare un pointeur déclare un pointeur totototo sur un caractère sur un caractère

float *tata ;float *tata ; déclare une pointeur déclare une pointeur tatatata sur un réel. sur un réel.

Au sein d'un programme Au sein d'un programme *toto*toto désigne la valeur pointée par désigne la valeur pointée par totototo, alors que , alors que

totototo désigne l'adresse à laquelle est stockée cette valeur. L'intérêt des désigne l'adresse à laquelle est stockée cette valeur. L'intérêt des

pointeurs est de manipuler des adresses donc des zones entières de pointeurs est de manipuler des adresses donc des zones entières de

données comme par exemple une chaîne de caractères. données comme par exemple une chaîne de caractères.

Page 18: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

manipulation de pointeursmanipulation de pointeurs On pourra se servir des pointeurs pour accéder On pourra se servir des pointeurs pour accéder

directement à un port du µC:directement à un port du µC:// Une led est câblée sur PB4, allumée sur un état bascharchar *portB;*portB; //portB est un pointeur sur un octet.portB = 0x06; portB = 0x06; //on définit l'adresse du pointeur ici le portb à l'adresse $06while(true)while(true)

{{*portB=0b11111111;*portB=0b11111111; //on fait clignoter la led.delay_ms(300);delay_ms(300);*portB=0b11101111;*portB=0b11101111;delay_ms(600);delay_ms(600);

}}

Sous PICC, il existe plusieurs autres possibilités pour accéder aux ports ou aux registres du µC. Celle-ci est plus générale et plus transposable à d'autres compilateurs et d'autres marques de µC.

Page 19: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

TABLEAUX TABLEAUX Un tableau est un regroupement de variables de même typeUn tableau est un regroupement de variables de même type

C'est une façon plus commode, dans certains cas, d'utiliser les pointeurs.C'est une façon plus commode, dans certains cas, d'utiliser les pointeurs.

int chiffres[ ]={1,2,4,8,16,32,64};int chiffres[ ]={1,2,4,8,16,32,64};

int TAB[20]={1,12,13,-100};int TAB[20]={1,12,13,-100};

float toto[10];float toto[10];

char TATA[2][3]={{1,2,3},{4,5,6}}char TATA[2][3]={{1,2,3},{4,5,6}}

le tableau est affecté avec les valeurs entre { } la taille du tableau est automatiquement ajustée à 7 entiers.

TAB est un tableau de 20 entiers dont seuls les 4 premiers sont affectés

TATA est un tableau à 2 dimensions, on utilise 2 indices.

toto est tableau de 10 réels sans affectation.

TAB représente l'adresse de début du tableau, pour accéder aux différentes valeurs du tableau, on utilise un indice qui démarre à 0, ici TAB[0] vaut 1, TAB[1] vaut 12, TAB[2] vaut 13 etc …

Page 20: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Chaînes de caractèresChaînes de caractèresCe sont des tableaux de caractères codés en ASCII Ce sont des tableaux de caractères codés en ASCII finissant par la valeur $00, finissant par la valeur $00, une chaîne est entourée de "  une chaîne est entourée de "  

char message[ ]= "bonjour"; char message[ ]= "bonjour";

char message[ ]={‘b’,’o’,’n’,’j’,’o’,’u’,’r’,0x00} ; char message[ ]={‘b’,’o’,’n’,’j’,’o’,’u’,’r’,0x00} ;

deux façons différentes de déclarer et deux façons différentes de déclarer et d'affecter une chaîne de caractèresd'affecter une chaîne de caractères

Page 21: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Présentation de PIC CPrésentation de PIC C

PIC C :PIC C : un environnement de développement en C complet un environnement de développement en C complet

pour PIC. (éditeur, compilateur, débugger, moniteur pour PIC. (éditeur, compilateur, débugger, moniteur rs232 …)rs232 …)

un nombre assez important de fonctions intégrées et un nombre assez important de fonctions intégrées et de bibliothèques.de bibliothèques.

prise en main rapideprise en main rapide

Ses inconvénients:Ses inconvénients:

On notera surtout un non respect de la norme C ANSI On notera surtout un non respect de la norme C ANSI (comme on l'a déjà vu pour les types), des fonctions (comme on l'a déjà vu pour les types), des fonctions parfois mal documentéesparfois mal documentées

Page 22: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

L'utilisation de PIC CL'utilisation de PIC C

PIC C comprend un "wizard" (assistant) qui permet de se passer PIC C comprend un "wizard" (assistant) qui permet de se passer de connaître parfaitement les registres et les bits de de connaître parfaitement les registres et les bits de configuration. configuration.

On choisit:On choisit: le µCle µC les ports de communication (RS232, SPI, I²C)les ports de communication (RS232, SPI, I²C) les timersles timers les entrées analogiques et le format (8 bits ou 10 bits)les entrées analogiques et le format (8 bits ou 10 bits) les interruptions utiliséesles interruptions utilisées les composants connectésles composants connectés

Cet assistant crée automatiquement le bout de programme Cet assistant crée automatiquement le bout de programme nécessaire qu'il serait fastidieux d'écrire à la main.nécessaire qu'il serait fastidieux d'écrire à la main.

Page 23: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

L'utilisation de PIC C L'utilisation de PIC C (suite)

On se retrouve avec un texte de ce type:On se retrouve avec un texte de ce type:

#include "C:\Program Files\PICC\my examples\test.h"#include "C:\Program Files\PICC\my examples\test.h"

void main()void main()

{{

setup_adc_ports(NO_ANALOGS);setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);setup_adc(ADC_OFF);

setup_psp(PSP_DISABLED);setup_psp(PSP_DISABLED);

setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_4);setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_4);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED,0,1);setup_timer_2(T2_DISABLED,0,1);

setup_comparator(NC_NC_NC_NC);setup_comparator(NC_NC_NC_NC);

setup_vref(FALSE);setup_vref(FALSE);

}}

l'assistant a créé un fichier .h dans lequel se trouve les configurations

l'assistant a placé au début du programme principal toutes les initialisations nécessaires

RayRAMA
#include <16F877A.h>#device adc=8#FUSES NOWDT //No Watch Dog Timer#FUSES HS //High speed Osc (> 4mhz)#FUSES NOPUT //No Power Up Timer#FUSES NOPROTECT //Code not protected from reading#FUSES NODEBUG //No Debug mode for ICD#FUSES NOBROWNOUT //No brownout reset#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O#FUSES NOCPD //No EE protection#FUSES NOWRT //Program memory not write protected#use delay(clock=20000000)#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3,force_hw)
Page 24: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Pratique de PIC CPratique de PIC C

TP1Voir texte du TP et notice de CCS

Page 25: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Entrées/sorties caractèresEntrées/sorties caractères

Les deux fonctions d’E/S sur caractèreLes deux fonctions d’E/S sur caractère

Elle sont définies pour le matériel Elle sont définies pour le matériel support des communicationssupport des communications

char getchar(void)char getchar(void)

int putchar(charint putchar(char))

Envoie un caractère Envoie un caractère (LCD par exemple)(LCD par exemple)

Lit un caractère en entrée Lit un caractère en entrée (CLAVIER par exemple)(CLAVIER par exemple)

Page 26: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Entrées/sorties Chaînes Entrées/sorties Chaînes

A partir de getchar et putcharA partir de getchar et putchar

void puts(char *chaîne)void puts(char *chaîne) ; ;

char *gets(char *chaîne)char *gets(char *chaîne) ;  ; saisie une chaîne de caractère finie par un RC et retourne un pointeur sur le premier caractère de cette chaîne

affiche une chaîne de caractères

Page 27: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

PRINTFPRINTF

printfprintf(format, liste de valeurs) (format, liste de valeurs)

char a=10 ; float b=3.1412char a=10 ; float b=3.1412

printf("  décimal printf("  décimal %d%d, hexa , hexa %x%x, reel , reel %f%f " , " ,aa,,aa,,bb) ;) ;

affichera : affichera :

décimal décimal 1010, hexa , hexa AA, reel , reel 3,14123,1412sprintf(chaîne, format, liste de valeurs) écrit dans chaîne

Page 28: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Formats sur printfFormats sur printf %c%c (char) (char) %s%s (chaîne de caractères, (chaîne de caractères,

jusqu'au \0)jusqu'au \0) %d%d (int) (int) %u%u (entier non signé) (entier non signé) %x%x ou X (entier affiché en ou X (entier affiché en

hexadécimal)hexadécimal) %f%f (réel en virgule fixe) (réel en virgule fixe) %p%p (pointeur) (pointeur) %% (pour afficher le signe %) (pour afficher le signe %)

\ n\ n nouvelle ligne nouvelle ligne \ t\ t tabulation tabulation\ b\ b backspace backspace\ r\ r retour chariot retour chariot \ f\ f form feed form feed \ '\ ' apostrophe apostrophe\ \\ \ antislash antislash\ "\ " double quote double quote\ 0\ 0 nul nul

[email protected]

Page 29: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Bibliothèques standards C ANSIBibliothèques standards C ANSI ctype.hctype.h trouver les types ex: isdigit (chiffre) ou trouver les types ex: isdigit (chiffre) ou

islowerislower limits.hlimits.h indique les limites des typesindique les limites des types string.hstring.h traitement sur les chaînestraitement sur les chaînes math.hmath.h fonctions mathématiquesfonctions mathématiques stdlib.hstdlib.h conversion de chaines (atoi atof) conversion de chaines (atoi atof)

génération d’un nombre aléatoire (rand, srand) génération d’un nombre aléatoire (rand, srand) allocation dynamique de mémoire (malloc, allocation dynamique de mémoire (malloc, calloc), tri (qsort)calloc), tri (qsort)

time.htime.h fonctions liée à l’heure et à la génération fonctions liée à l’heure et à la génération de nombre aléatoiresde nombre aléatoires

[email protected]

Page 30: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Opérateurs unairesOpérateurs unaires() Appel de fonction[] Indice de tableau tableau[3]=5;! Négation logique (NOT)

~ Complément binaire bit à bit b=~a- Moins unaire b=-a;+ Plus unaire b=+a;++ Pré ou postincrément b=a++; -- Pré ou postdécrément b=a--; & Adresse de b=&a; * Indirection b=*a;

Page 31: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Opérateurs binairesOpérateurs binaires

* Multiplication c=a*b;/ Division c=a/b;+ Plus binaire c=a+b;- Moins binaire c=a-b;<< Décalage à gauche c=a<<b; >> Décalage à droite c=a>>b; & ET entre bits c= a & b; ^ OU exclusif entre bits c= a ^b;

| OU entre bits c= a|b;

Page 32: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

TESTSTESTS

< Strictement inférieur if (a < b)<= Inférieur ou égal if (a >= b)> Strictement supérieur if (a > b)>= Supérieur ou égal if (a >= b)== Egal if (a ==b) != Différent if (a != b)&& ET logique if ((a==5) && (b==2)) || OU logique if ((a==5) ||(b==2))?: Condition z=(a>b)?a:b (Si a>b a z=a sinon z=b)

Page 33: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Affectations et Auto-affectationsAffectations et Auto-affectations= Affectation simple a=b; *= Affectation produit a*=2 (a=a*2)/= Affectation quotient a/=2 (a= a/2)%= Affectation reste a%=2 (a= le reste de a/2)+= Affectation somme a+=2 (a=a+2)-= Affectation différence a-=2 (a=a-2)&= Affectation ET entre bits a&=5 (a=a&5)^= Affectation OU EX entre bits a^=5 (a=a^5)|= Affectation OU entre bits a|==5 (a=a|=5)<<= Affectation décalage gauche a<<=5 (a=a<<5)>>= Affectation décalage droite a>>=5 (a=a>>5)

Page 34: Langage C Développement logiciel sur micro-contrôleurs PIC en C Daprès Christian Dupaty, Académie d'Aix-Marseille.

Merci de votre attentionMerci de votre attentionExercez vous, Exercez vous, un langage s’apprend par la pratiqueun langage s’apprend par la pratiqueCompilateur C/C++ gratuits : Compilateur C/C++ gratuits : DOS : TURBO C/C++ V1.01 DOS : TURBO C/C++ V1.01 www.borland.frwww.borland.fr WINDOWS : DEV-C++ www.bloodshed.netWINDOWS : DEV-C++ www.bloodshed.net très performant, orienté C++ mais on peut faire du C, utilisé par très performant, orienté C++ mais on peut faire du C, utilisé par

beaucoup de programmeurs chevronnés; certaines fonctions de beaucoup de programmeurs chevronnés; certaines fonctions de TurboC++ ne sont pas supportéesTurboC++ ne sont pas supportées

Pour PIC: CC5x http://www.bknd.com/cc5x/ Pour PIC: CC5x http://www.bknd.com/cc5x/ (C'est un bon compilateur limité à 1k de code compilé par module, à (C'est un bon compilateur limité à 1k de code compilé par module, à

intégrer à MPLAB. Très peu de fonctions intégrées : impossible intégrer à MPLAB. Très peu de fonctions intégrées : impossible de faire tourner des programmes écrits pour PICC avec CC5x, il de faire tourner des programmes écrits pour PICC avec CC5x, il faut reécrire ses librairies)faut reécrire ses librairies)