Systèmes Microprogrammés
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 1
Plan
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 2
1
14/04/2020
Plan
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 3
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 4
2
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 5
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 6
3
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 7
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 8
4
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 9
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 10
5
14/04/2020
Programme compilé
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 11
Programmation du MCU
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 12
6
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 13
Types de données
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 15
7
14/04/2020
Les variables
Le nom de la variable peut contenir des caractères alphabétiques de A à Z (a -z),
les chiffres 0-9 et le caractère de soulignement '_'. Le compilateur est sensible à
la casse
Les noms de variables ne doivent pas commencer par un chiffre
Un nom d’une variable ne peut pas prendre le nom d’un nom réservé du langage
: exemple if , while …
Chaque variable doit être déclarée en spécifiant son type au début du
programme avant son utilisation
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 16
Les pointeurs
La valeur contenue dans une variable de type pointeur est l’adresse d’une
donnée stockée en mémoire
Une variable pointeur est déclaré comme suit :
Exemples :
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 17
8
14/04/2020
Les pointeurs
L’opérateur & permet d’initialiser le pointeur qui obtient ainsi l’adresse de
n’importe quelle variable (on parle également de référence) et retourne ainsi un
pointeur sur la variable manipulée. Il convient de vérifier que la variable et le
pointeur sont de type compatible
L’opérateur * permet à un pointeur sur une variable, de lire et de modifier la
valeur de celle-ci
Il faut faire attention à ne jamais accéder à une donnée pointée avec un
pointeur qui n’a pas été correctement initialisé. Ceci est source de bug et
provoque en général l’arrêt involontaire du programme
La représentation en mémoire d’un pointeur p sur un entier i est donnée comme
suit :
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 18
Les pointeurs
Exemple 1 :
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 19
9
14/04/2020
Les pointeurs
Exemple 2 :
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 20
Les constantes
Une constante est un nombre ou un caractère ayant une valeur fixe qui ne peut
être modifiée pendant l'exécution du programme
Contrairement aux variables, les constantes sont stockées dans la mémoire flash
de programme du microcontrôleur dans le but d'économiser l'espace RAM
Le compilateur les reconnaît par le préfixe const :
Constantes entières
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 21
10
14/04/2020
Les constantes
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 22
Les constantes
Constantes énumérées
• C’est un type spécial de constantes entières qui permet de rendre un programme
plus complet et plus facile à suivre en assignant aux éléments des nombres
ordinaux
• Dans l'exemple suivant, on attribue automatiquement au premier élément
la valeur 0, au second la valeur 1, au troisième la valeur 2, etc :
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 23
11
14/04/2020
Les constantes
• Sur chaque occurrence des mots «UP», «DOWN» ,«LEFT» et «RIGHT», dans le
programme, le compilateur va les remplacer par les numéros appropriés (0-3)
• Concrètement, si les broches 0, 1, 2 et 3 du port B sont reliés à des moteurs, la
commande pour démarrer le moteur 'RIGHT' relié à bit 3 du port B se présente
comme suit :
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 24
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 25
12
14/04/2020
Structures conditionnelles
Instruction if-else
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 26
Structures conditionnelles
Instruction switch
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 27
13
14/04/2020
Instruction while
Instruction for
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 28
Instruction do-while
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 29
14
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 30
Les tableaux
• Un tableau est un regroupement consécutif de données de même type et de
taille fixe
• À chaque entrée du tableau correspond un indice pouvant prendre une valeur
dans l’intervalle [0, taille – 1]
• Il est possible de déclarer des tableaux avec de multiples indices (tableaux à
plusieurs dimensions) comme les matrices
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 31
15
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 32
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 33
16
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 34
Les fonctions
Une fonction consiste en un sous-programme appliquant des commandes précises
sur des variables données
En règle générale, il est recommandé d'avoir un programme composé d'un grand
nombre de fonctions simples que de quelques fonctions complexes
Chaque fonction doit être correctement déclarée afin d'être correctement interprétés
lors du processus de compilation. La déclaration contient les éléments suivants :
• Nom de la fonction
• Corps de la fonction
• Liste des paramètres
• Déclaration des paramètres
• Type du résultat de la fonction
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 35
17
14/04/2020
Les fonctions
Exemple
Notez que la fonction peut ne pas avoir besoin des paramètres, mais les
parenthèses restent obligatoires pour que le compilateur interprète la fonction
La fonction peut aussi ne pas retourner de résultats. Le compilateur reconnaît
ces fonctions par le type void de leur résultat :
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 36
Les fonctions
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 37
18
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 38
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 39
19
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 40
Interface
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 41
20
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 42
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 43
21
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 44
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 45
22
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 46
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 47
23
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 48
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 49
24
14/04/2020
Edition du programme
• Ecrire le programme de clignotement suivant :
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 50
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 51
25
14/04/2020
Débogage du programme
• Cliquer sur Run/Start debugger :
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 52
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 53
26
14/04/2020
• Choisir Step Into /Over pour faire un débogage pas à pas et vérifier le
déroulement du programme et l’état du bit RB1
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 54
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 55
27
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 56
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 57
28
14/04/2020
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 58
Exemples
Exemple 1
• On se propose de faire clignoter 8 LEDs branchées sur le port B du
PIC16F84A de deux façons différentes:
Dès que le PIC est activé, tous les LEDS clignotent avec une période d’une
seconde. Et ça doit se répéter 10 fois
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 59
29
14/04/2020
Exemples
• Montage de l’application sous PROTEUS ISIS
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 60
Exemples
• Programme de l’application sous miKroC
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 61
30
14/04/2020
Exemples
Exemple 2
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 62
Exemples
• Montage de l’application sous PROTEUS ISIS
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 63
31
14/04/2020
Exemples
• Programme de l’application sous miKroC
RST+GMA(S6)-ENSA
RST(S6)-ENSA -KENITRA
-KENITRA 64
32