Académique Documents
Professionnel Documents
Culture Documents
SOMMAIRE
Exemples :
// Définition des modes de FCT
#define MODE_BISTABLE 0
#define MODE_TEMPO 1
Exemples :
// Entier non signé
int CODE_TOUCHE; // Variable 8 bits
long CMP_TOUCHE; // Variable 16 bits
int CMP_SEC;
int CMP_ML;
int VIT_MOT;
int TPS_MIN, TPS_HEURE, TPS_SECONDE ;
// Entier signé
signed int TAMB ; // Variable 8 bits signée
signed long LUM ; // Variable 16 bits signée
// Réel
float VALEUR_CAN ; // Variable de type réel
// Tableau
int ETAT_RE[4]; // Tableau de 4 éléments entier
// chaîne de caractères
char MESSAGE_N1[10] ; // chaîne de 9 caractères
Oui Non
Si condition vraie condition if (condition)
vraie ?
Alors {
instruction;
Actions Actions }
Fin Si
Exemple
Algorithme Programme source
Variable Compteur : Double Octet long Compteur ;
Exemple
Algorithme Programme source
Variable NoTouche : Octet int NoTouche ;
if (NoTouche == 3 )
Si NoTouche = 3 {
Alors NoTouche ← 0 NoTouche = 0;
Sinon NoTouche ← NoTouche + 1 }
FinSi else
{
NoTouche = NoTouche + 1;
}
Algorithme Algorigramme
Selon expression E
Cas expression E1 E = E1 E = E2 E = E3
Instruction A ? Non ? ?
Non Non
Cas expression E2
Instruction B
Cas expression E3
Instruction C Instruction Instruction Instruction Instruction
Cas sinon A B C D
Instruction D
Fin Selon
Chaque expression est évaluée l’une après l’autre jusqu’à ce que l’une d’elles
Syntaxe C corresponde à l’expression entre parenthèses.
switch (expression E) L’instruction de branchement inconditionnel break provoque la sortie de la
{ structure de choix multiples.
case E1 : instruction A; L’oubli de break après une instruction entraîne l’évaluation du cas suivant, même
break ; si le résultat de l’évaluation est vrai.
case E2 : instruction B;
break ; L’étiquette default est utile dans le cas ou aucune évaluation n’a été satisfaisante.
case E3 : instruction C; Elle n’est pas obligatoire.
break ;
default :instruction D; Attention : Le choix entre les diverses possibilités est régit par la valeur d’une
} expression de type entier ou caractère et non plus par une condition.
Exemple
Algorithme Programme source
Exemple
Algorithme Programme source
Répéter do
{
Incrémenter Compteur Compteur = Compteur + 1 ;
}
Jusqu'à Compteur = 100 while( !( Compteur == 100)) ;
Exemple
Algorithme Programme source
Variable Compteur2 : Octet signé signed int Compteur2 ;
Actions
Exemple
Algorithme Programme source
Pour Indice Allant de 1 à NbDecalage for (Indice=1 ;Indice < NbDecalage ;Indice = Indice + 1)
Faire {
Décaler Mot d'1 bit à gauche Mot = Mot << 1;
FinFaire }
Fonction logicielle
Paramètres
d'entrée
Appel de la Paramètres de
fonction sortie
1.3.1) Syntaxe :
// Nom de la fonction :
// Description du rôle de la fonction :
// Paramètres d’entrée : Noms et types des paramètres d’entrée
// Paramètre de sortie : Nom et type du paramètre de sortie
Type_de_la_valeur_de_retour nom_de_la_fonction( types nom_des_paramètres )
{
instruction 1 ;
.
.
.
instruction n ;
return(valeur) ; // Valeur a renvoyer
}
Remarque : Tous les paramètres d’entrées deviennent des variables locales de la fonction.
Fonction logicielle
Appel de la
fonction
En anglais, dépourvu ou sans se traduit par void, donc la définition de la fonction sera :
// Nom de la fonction :
// Description du rôle de la fonction :
// Paramètres d’entrée : Rien
// Paramètre de sortie : Rien
void nom_de_la_fonction( void )
{
instruction 1 ;
.
.
.
instruction n ;
}
Exemple :
// Procédure AFF_PURGE
// Description: Affichage du message PurG
// Entrée : Rien
// Sortie : Rien
void AFF_PURGE(void)
{
// commande de l'affichage multiplexé
PORTA=C_P; SEL1=1; SEL0=1; MEMO=1; MEMO=0;
PORTA=C_uu; SEL1=1; SEL0=0; MEMO=1; MEMO=0;
PORTA=C_r; SEL1=0; SEL0=1; MEMO=1; MEMO=0;
PORTA=C_G; SEL1=0; SEL0=0; MEMO=1; MEMO=0;
}
Exemple : AFF_PURGE() ;
1.3.3) Une fonction avec des paramètres d’entrée et sans paramètres de sortie.
Fonction logicielle
Paramètres
d'entrée
Appel de la
fonction
// Nom de la fonction :
// Description du rôle de la fonction :
// Paramètres d’entrée : Noms et types des paramètres d’entrée
// Paramètre de sortie : Rien
void nom_de_la_fonction(types nom_des_paramètres )
{
instruction 1 ;
.
instruction n ;
}
Remarque : Tous les paramètres d’entrées deviennent des variables locales de la fonction.
Exemple :
// Procédure d'affichage du logo
// Entrée : Entier CODE
// sortie : Rien
// Description : Affichage des codes du logo
void AFF_LOGO(int CODE)
{
PORTA=CODE;
SEL1=1; SEL0=1;
MEMO=1;
MEMO=0;
}
Fonction logicielle
Paramètres
d'entrée
Appel de la Paramètres de
fonction sortie
// Nom de la fonction :
// Description du rôle de la fonction :
// Paramètres d’entrée : Noms et types des paramètres d’entrée
// Paramètre de sortie : Nom et type du paramètre de sortie
Type_de_la_valeur_de_retour nom_de_la_fonction(types nom_des_paramètres )
{
instruction 1 ;
.
.
.
instruction n ;
return(valeur) ; // Valeur a renvoyer
}
Exemple :
// Procédure DECALAGE_DROITE
// Description : DECALAGE à droite de NB bits
// Entrée : Entier VAL, Entier NB
// Sortie : Entier RESULTAT
int DECALAGE_DROITE(int VAL, int NB)
{
int RESULTAT;
Exemple :
A = 16 ;
B = DECALAGE_DROITE (A,2) ; // La valeur de A sera affectée à VAL
// La valeur 2 sera affectée à NB
// Le résultat de la fonction sera affecté à B
Fonction logicielle
INTERRUPTION
FL 4
FL 3
FL 6
Déclenchement
FL 2 Prog
Déclenchement Principal
événement FL 7
extérieur
FL 1
Périphérique interne
I2C, TIMER, CAN, USART, ....
PIC
RESET
Une fonction d’interruption n’a pas de paramètres d’entrée et de sortie. Le compilateur CCS utilise
une directive spéciale INT_XXXX (XXXX nom de l’interruption) pour les différencier avec les autres fonctions
logicielles.
// Nom de la fonction :
// Description du rôle de la fonction :
#INT_xxxx // Nom de l’interruption
void nom_de_la_fonction( void )
{
instruction 1 ;
.
instruction n ;
}
Exemple :
// Procédure CLOCK_TIMER2
// Description: Interruption toutes les secondes
// Fréquence du quartz
#use delay (clock=20000000)
// Programme Principal
main()
{
Instruction_1 ;
Instruction_n ;
}
// Par exemple
// Nom de la fonction : INIT_UC
// Description du rôle de la fonction : Initialisation du uC
// Paramètres d’entrée : Rien
// Paramètre de sortie : Rien
void INIT_UC(void)
{
PORTA=0x00 ;
set_tris_A(0b11100000) ;
PORTB=0x00 ;
set_tris_B(0b11000000) ; // RB6 & RB7 entrées pour l’ICD
}