Vous êtes sur la page 1sur 7

CI11 Systmes logiques et numriques

Algorithmique

Sciences de lIngnieur

PROGRAMMATION DE MICROCONTROLEUR PIC EN LANGAGE ALGORITHMIQUE SOMMAIRE


1. Dmarche algorithmique, algorithme et algorigramme... 2. Les diffrentes structures d'algorigrammes...... 2.a La structure linaire...... 2.b Les structures alternatives (ou conditionnelles) .... 2.c Les structures itratives ou rptitives. page 2 page 3 page 3 page 4 pages 4, 5

3. Types de variables ou de constantes. page 6 4. Entres -Sorties de donnes sur un port du microcontrleur ... page 6 5. Fonctions d'attente page 6 6. Expressions (ou calculs) Oprateur daffectation..... page 6 Oprateurs bit bit sur un octet... Oprateurs de dcalage sur un octet..... Oprateurs arithmtiques. page 6 page 7 page 7 Oprateurs logiques sur un octet page 7

Oprateurs relationnels... page 7

Ce document sappuie en partie sur les spcificits du progiciel Flowcode utilis pour la programmation de microcontrleurs partir dalgorigrammes.

Les symboles d'algorigrammes utiliss par Flowcode sont conformes la norme internationale ISO 5807 (*), trs proche de la norme franaise NF Z 61-100. La diffrence principale se situe au niveau des itrations (boucles rptitives) pour lesquelles la norme ISO utilise un symbole spcifique alors que la norme NF utilise le symbole de dcision (alternative). Flowcode effectue une 1re compilation de l'algorigramme en langage C, puis en assembleur, puis en langage machine. Ce passage par le langage C transparat dans la mise en uvre de certaines fonctionnalits du logiciel (par exemple le symbole daffectation est le signe = au lieu du := ou du prescrits par la norme.

CI11 Systmes logiques et numriques

Algorithmique

Sciences de lIngnieur

1. Algorithme et algorigramme (ou ordinogramme) :


Un algorithme est un ensemble de rgles opratoires rigoureuses ordonnant, un processeur particulier, d'excuter dans un ordre dtermin, un nombre fini d'oprations lmentaires pour rsoudre tous les problmes d'un type donn (NF Z 61-100) Un algorithme peut tre reprsent : soit littralement grce au langage algorithmique en respectant un formalisme d'criture, soit graphiquement l'aide de l'algorigramme en respectant un formalisme de symboles et de structure. Algorigramme : les symboles dcrivant un algorigramme sont dfinis par des normes (NF Z 67-010 et ISO 5807) :

2. Les diffrentes structures algorithmiques :


Un algorithme fait appel diverses structures et met en uvre un ensemble doprations et dactions lmentaires appeles primitives et constituant un rpertoire. Comme nous l'avons vu dans le paragraphe prcdent, un problme tant pos, il sera dcompos pour scrire en une succession de fonctions et dactions lmentaires faisant appel aux primitives de la machine thorique. Lalgorithme sera ensuite traduit dans le langage de la machine relle (pour nous le langage C) et constituera un programme. Chaque primitive pourra tre convertie en une ou plusieurs instructions.

CI11 Systmes logiques et numriques

Algorithmique

Sciences de lIngnieur

Principales primitives : Affectation, transfert Oprations arithmtiques : addition, soustraction, multiplication, division, incrmentation, dcrmentation Oprations logiques : oui, non, et, ou, ou exclusif Oprations de dcalage. Prsentation d'un algorithme littral : Nota : les primitives doivent tre diffrencies des autres textes (en gras soulign par exemple). Les commentaires doivent tre dlimits par des accolades. Algorithme nom_algorithme Dclarations : type octet non sign : chiffre1, chiffre2, type entier : codebon, codelu, type Dbut programme principal {Initialisations} codebon 4375 Rpter linfini Sous-programme Acqurir_tat _capteurs Fin rpter linfini Fin programme principal

a. Structure linaire :
La structure linaire consiste en une suite dactions excuter dans lordre de leur nonc.

ALGORITHME : Dbut algorithme Structure linaire Excuter Instruction 1 Excuter Instruction 2 Excuter Instruction n Fin algorithme Structure linaire

Lalgorithme de la structure linaire se traduit par lcriture de la suite dinstructions caractrisant le processus ou la partie du processus considr.

ALGORIGRAMME :
DEBUT INSTRUCTION 1 INSTRUCTION 2

Nota : les systmes automatiss ncessitent le plus souvent la mise en uvre de structures plus complexes que la structure linaire, savoir : les structures alternatives lorsque des traitements sont lis des choix (voir 2.b) les structures itratives lorsque le traitement ncessite la rptition de boucles (voir 2.c)

INSTRUCTION N FIN

CI11 Systmes logiques et numriques

Algorithmique

Sciences de lIngnieur

b. Structures alternatives :
Les structures alternatives (ou conditionnelles) mettent en uvre une fonction de choix (dcision) entre : lexcution ou non d'un traitement alternative simple lexcution d'un traitement ou d'un autre alternative complte (double) l'excution de diffrents traitements en fonction des valeurs d'une variable alternative gnralise Algorigramme
condition faux

Algorithme littral si <condition vraie> alors <excuter action1> fin_si

Langage C if (<condition vraie>) { <excuter action1> ; }

Structure alternative simple

vrai Action

Structure alternative complte

si <condition vraie> alors <excuter action1> sinon <excuter action2> fin_si

if (<condition vraie>) { <excuter action1> ; } else { <excuter action2> ; } switch (X) { case c1 : {<action1> ; break} case c2 : {<action2> ; break} case c3 : {<action3> ; break} default <action4> ; } Remarque X est une variable pouvant prendre les valeurs c1, c2, c3 ou autre.

X=c1 vrai

faux X=c2 vrai faux X=c3 vrai Action 3 faux

Structure alternative gnralise


Action 1

Action 2

Action 4

c. Structures itratives ou rptitives (boucles) :


Les structures itratives, ou structures rptitives, se caractrisent par la rptition de lexcution dun traitement. Il existe trois types principaux de structures itratives :

Itration 0..N : Le nombre de boucles n'est pas pralablement connu et l'action peut ne jamais tre excute. Itration 1..N : Le nombre de boucles n'est pas pralablement connu et l'action est excute au moins une fois. Itration 0..Nf avec variable de contrle : Le nombre de boucles est pralablement connu.

Rgles de conception : La conception du programme principal doit permettre une vision globale du fonctionnement du systme technique. Pour cela l'utilisation de sous-programmes permet d'allger le programme principal. Le traitement se fera ensuite dans lordre suivant : 1- Lecture dune entre, 2- Modifier la ou les variables, effectuer des calculs, 3- Agir sur une ou plusieurs sorties. Important : Les boucles peuvent tre successives ou imbriques, par contre, sauf rare exception, il ne faut jamais quelles soient enchevtres car elles sont dstructurantes (risques de dysfonctionnements). Flowcode ne permet pas de crer des boucles enchevtres sauf dans le cas d'utilisation de sauts inconditionnels (points de jonction). Loutil point de jonction est donc utiliser avec beaucoup de prcautions.

CI11 Systmes logiques et numriques

Algorithmique
Algorigramme ISO 5807 (*)

Sciences de lIngnieur
Algorithme littral tant que <condition vraie> faire <excuter instruction1> fin_faire Variante avec proposition inverse : jusqu' <condition vraie> rpter <excuter instruction1> fin_rpter Langage C while (<condition vraie>) { <excuter instruction1> ; } while !(<condition vraie>) { <excuter instruction1> ; } while (1) //cette boucle est infinie { } do { <excuter instruction1> ; } while (<condition vraie>) ; do { <excuter instruction1> ; } while !(<condition vraie>) ;

Algorigramme NF Z 67-010
faux

Condition vrai Instruction 1

Itration 0..N
vrai Condition faux Instruction 1

Proposition inverse

Proposition inverse

Instruction 1 vrai Condition faux

faire <excuter instruction1> tant que <condition vraie>

Itration 1..N

Proposition inverse

Instruction 1 faux Condition vrai

Proposition inverse

Variante avec proposition inverse : rpter <excuter instruction1> jusqu' <condition vraie>

X := Xi

Pas de 1
faux

pour X:=Xi jusqu' Xf faire <excuter instruction1> fin_pour Si le pas est diffrent de 1 crire : pour X:=Xi jusqu' Xf pas Y faire <excuter instruction1> fin_pour

Itration 0..Nf avec variable de contrle

X>Xf
vrai

Instruction 1 X:=X+pas

for (X = Xi ; X Xf ; X+pas) { <excuter instruction1> ; } Explication for (<initialisation> ; <condition> ; <opration>)


// la boucle est ralise tant que la condition est vraie

for (a=0 ; a<=10 ; a++)


// la boucle est ralise 11 fois

Xi est la valeur initiale de X Xf est la valeur finale de X

for ( ; ;) // cette boucle est infinie

Dbut algorithme Structure linaire

CI11 Systmes logiques et numriques

Algorithmique

Sciences de lIngnieur

3. Types de constantes ou de variables :


Type des constantes Aucun prfixe* ou 0d le nombre est exprim en dcimal Prfixe 0b le nombre qui suit est exprim en binaire Prfixe 0x le nombre qui suit est exprim en hexadcimal (*) ne pas utiliser le prfixe 0d sous Flowcode (pas reconnu) Variables Les noms des objets (variables, fonctions* ou sous-programmes ) sont des identifieurs. Leur criture doit : utiliser : les lettres de l'alphabet, de a z, et de A Z, les chiffres de 0 9 (sauf pour le premier caractre), le soulign ( _ ). ne contenir ni espace, ni caractre accentu. (*) sous Flowcode les fonctions sappellent des macros Attention : dans Flowcode, pour les noms de variables, caractre en minuscule = caractre en MAJUSCULE Type des variables Il existe un assez grand nombre de types de variables. Flowcode permet de spcifier les types de variables suivants : Octet la variable est du type entier non sign, cod sur un octet, soit 8 bits => 0 < variable < +255 Entier la variable est du type entier sign, cod sur deux octets (16 bits) => -32768 < variable < +32767 Tableau doctets ou dentiers [x] tableau une dimension et x cellules. Attention : lindice des cellules dbute par 0 => table[0] , table[1] , table[2] , etc

Exemple : 219 (0d219) Exemple : 0b01110101 Exemple : 0xfa

Nombre rel virgule flottante (ou flottant ) cod sur 32 bits Chane de caractres la variable contient des caractres alphanumriques

4. Entres - Sorties de donnes sur un port du microcontroleur :


Un port correspond un groupe de broches du microcontrleur (8 en gnral), configurables en entres ou en sorties. Sous Flowcode lutilisation de licne Entre ou de licne Sortie , qui ont le mme graphisme, permet au progiciel de programmer automatiquement le registre de direction de port correspondant.

5. Fonction d'attente :
Pour raliser des temporisations on peut utiliser la fonction dattente primplante dans le progiciel. La fonction dattente est rglable de 1 microseconde 1000 secondes. Attention : pendant lexcution de cette fonction le processeur excute des oprations et nest pas rceptif aux vnements extrieurs sauf dans le cas dutilisation de la fonction interruption . La valeur d'attente est paramtre par le progiciel en fonction de la frquence dhorloge du processeur. Il est donc important que la frquence spcifie en configuration corresponde celle du quartz utilis.

6. Expressions (calculs) :
Une expression est compose dau moins une constante ou une variable et dun oprateur. Oprateur d'affectation : = Flowcode utilise le mme signe quen langage C alors quen algorithmique on utilise := ou Oprateurs bit bit (sur octet) : AND ou & OR ou | XOR ou ^ NOT pour le ET binaire, ralisant un ET logique, bit bit, entre les oprandes pour le OU binaire qui ralise un OU logique, bit bit, entre les oprandes pour le OU exclusif binaire, ralis bit bit entre les oprandes pour la complmentation un sur chaque bit

CI11 Systmes logiques et numriques

Algorithmique

Sciences de lIngnieur

Oprateurs logiques (sur octet) : Ces oprateurs agissent principalement sur des comparaisons ; ils supposent agir sur des valeurs logiques et donner un rsultat logique ( 0 ou 1 ). Ils peuvent sappliquer sur nimporte quel nombre : 0 comme valeur dentre tant considr comme FAUX, toute valeur non nulle est prise pour VRAI ; en sortie, FAUX sera reprsent par 0 et VRAI par 1. && pour le ET logique || pour le OU logique ! pour la complmentation logique Exemple : c = a && b c=1 si a et b sont diffrents de 0 Exemple : c = a || b c=0 si a et b sont gaux 0 Exemple : b = !a b=1 si a=0, b=0 si a0

Rappel : a, b et c sont des variables de type octet. L'octet de sortie c n'a que deux tats possibles : 0 ou 1 Oprateurs de dcalage (sur octet) : << >> pour le dcalage de bits vers la gauche Exemple : b = a << 3 b est le rsultat d'un dcalage de 3 bits gauche de a, les 3 bits de droite de b prennent la valeur 0 pour le dcalage de bits vers la droite

Attention : le rsultat est videmment toujours un octet.


Oprateurs arithmtiques : + * / pour laddition pour la soustraction pour la multiplication pour la division Ex : 7 MOD 3 est gal au reste de la division entire de 7/3 soit 1

MOD pour le reste de la division entire (modulo) Oprateurs relationnels :

Ils sont utiliss pour les structures conditionnelles ou les structures itratives comme expliqu dans les rubriques qui suivent. > >= <= < = <> pour suprieur pour suprieur ou gal pour infrieur ou gal pour infrieur pour gal pour diffrent de renvoie VRAI si le 1er oprande est plus grand que le 2me, et FAUX dans le cas contraire renvoie VRAI si le 1er oprande est suprieur ou gal au 2 me, et FAUX dans le cas contraire renvoie VRAI si le 1er oprande est infrieur ou gal au 2 me, et FAUX dans le cas contraire renvoie VRAI si le 1er oprande est plus petit que le 2 me, et FAUX dans le cas contraire renvoie VRAI si le 1er oprande est gal au 2 me, et FAUX dans le cas contraire renvoie VRAI si le 1er oprande est diffrent du 2 me, et FAUX dans le cas contraire

Remarque : sauf exceptions prcises plus haut, sous Flowcode les oprateurs sappliquent aux types de variables octet, entier ou flottant . Dautres oprateurs plus puissants sont galement disponibles, concernant notamment les oprations arithmtiques sur les flottants . Consulter pour cela la documentation du progiciel. Oprateurs sur chanes de caractres : Des oprateurs spcifiques la manipulation de variables de type chane de caractres sont disponibles sous Flowcode. Consulter pour cela la documentation du progiciel.