Vous êtes sur la page 1sur 68

Langage MicroC pour PIC

Assisté par: Mm I. SEFRIOUI


À ENSA Kénitra

Année 2021-2022
Plan du cours
Chapitre 1: Introduction au langage MicroC
• Définition du langage MicroC
• Les avantages du MicroC
• Fiche technique du MicroC 2.3
• Règles du langage MicroC
Chapitre 2: ELEMENTS DE PROGRAMMATION EN MIKROC
• Variables
• Constantes
• Séquences d'échappement
• Tableaux
• Pointeurs
• Structures
Chapitre 3: OPERATEURS ET EXPRESSIONS EN MIKROC
• Opérateur d’affectation
• Opérateurs arithmétiques
• Autres opérateurs unaires d’affectation
• Autres opérateurs binaires d’affectation
• Opérateurs de comparaison
• Opérateurs logiques
• Opérateurs de manipulation de bits
• Opérateur de dimension
Chapitre 4: LES STRUCTURES DE CONTROLE
• Instruction if
• Instruction switch
• Instructions d'itération for, while, do, goto, continue et break
Chapitre 5: MikroC pour Microcontrôleur PIC
• Définition du Microcontrôleur PIC
• Présentation du matériel PIC
• Fonctionnalités du Microcontrôleur PIC
• Ports E/S du Microcontrôleur PIC
• mikroC PRO pour les bibliothèques PIC
• Programmation du microcontrôleur Pic en MikroC 2021-2022 2
Chapitre 1: Introduction au langage MicroC

Définition du langage MicroC


Le mikroC PRO for PIC est un outil de développement puissant et riche en fonctionnalités pour
les microcontrôleurs PIC. Il est conçu pour fournir au programmeur la solution la plus simple
possible pour développer des applications des systèmes embarqués, sans compromettre les
performances ou le temps de développement. Les PIC et le langage C s’intègrent bien: Le
microcontrôleur PIC sur 8 bits est le l plus répandu au monde, utilisé dans une grande variété
d’applications, et C, apprécié pour son efficacité, est le choix naturel pour le développement de
systèmes embarqués. mikroC PRO for PIC offre une correspondance réussie avec un compilateur
IDE hautement avancé conforme à la norme ANSI. Il contient un vaste ensemble de bibliothèques,
une documentation complète et de nombreux exemples.
Super-Flash est un système de développement pour la réalisation d'applications de supervision
industrielle (SCADA) et d'interfaces homme-machine (IHM).
Les applications réalisées avec Super-Flash peuvent se limiter au contrôle de l'état d'une installation
ou d'une machine, ou aller jusqu'à inclure des fonctions de supervision et de contrôle, dans le but de
« gérer » la production à l'aide d'un PC.

2021-2022 3
Chapitre 1: Introduction au langage MicroC

Les avantages du MicroC


Simple
MICROC interprète un sous-ensemble simplifié de la norme ANSI C. Comme il s'agit d'une
implémentation cohérente mais "légère" du C, le compilateur est particulièrement adapté à ceux
qui souhaitent également apprendre à utiliser ce langage de programmation.
Puissant et flexible
Outre les fonctions de base typiques des compilateurs C, MICROC offre un ensemble de
potentialités liées aux applications de supervision. En effet, avec MICROC, il est possible
d'augmenter la capacité et la précision des calculs mathématiques, de redéfinir les caractéristiques
des variables de la base de données SUPER-FLASH , d'effectuer des enregistrements différés et de
manipuler les données de tendance et d'alarme, de créer les pilotes de communication, etc.
Fiable
Chacune des instructions MICROC est exécutée sous le contrôle strict d'un moteur d'exécution. Cela
permet uniquement de démarrer l'exécution des instructions correctes. L'utilisation d'un
compilateur traditionnel laisserait un flou inacceptable même après de petites modifications de
réglage, nécessaires au moment de l'installation et du test final du logiciel de supervision.
Indépendant du matériel
Comme il ne produit aucun code INTEL, MICROC n'a pas besoin d'être recompilé pour fonctionner
sur d'autres plates-formes.

2021-2022 4
Chapitre 1: Introduction au langage MicroC
Fiche technique du MicroC 2.3
❑Description
MICROC est un compilateur de fichiers écrits dans un sous-ensemble du langage ANSI C Standard. Les
programmes générés ne peuvent être exécutés que par les produits Automa, parmi lesquels SUPER-FLASH

❑Caractéristiques
3X1 : est composé de 3 objets : le moteur d'exécution et la bibliothèque de fonctions, intégrés dans les
produits Automa, et le compilateur
Capacious : il est capable de compiler des fichiers contenant jusqu'à 10 000 symboles de fonction et 1
000 symboles de variable : il produit des programmes avec des dimensions maximales de 1 Mo
contenant chacun jusqu'à 512 Ko de zone statique
Complete : il implémente les constructions "if", "if...else", "for", "while" et "do...while", et les "int",
"long int", "double", " types byte", ""text"" et "virtual"
Ajustable : le timing d'exécution des programmes MICROC peut être ajusté avec précision jusqu'au
niveau de l'instruction unique

2021-2022 5
Chapitre 1: Introduction au langage MicroC
Fiche technique du MicroC 2.3
Riche : il met à disposition plus de 500 fonctions relatives à de multiples environnements applicatifs
Intégrable : les programmes MICROC générés peuvent communiquer facilement entre eux en partageant
les données de manière contrôlée grâce à la technologie MUTEX
Multi-plateforme : les programmes MICROC fonctionnent à la fois sous DOS et sous Windows
Multilingue : le compilateur dispose d'une interface multilingue (italien et anglais)

❑Exigences minimales
Les exigences minimales sont les mêmes que celles nécessaires pour faire fonctionner Super-Flash .

❑Contenu du produit
Le produit MicroC est inclus dans l'emballage du produit Super-Flash .

2021-2022 6
Chapitre 1: Introduction au langage MicroC

Règles générale d’écriture en mikroC


❑Les instructions propres au langage mikroC doivent être écrites en minuscule (void main
(void)).
❑Les instructions particulières aux microcontrôleurs doivent être écrites en majuscule (TRISB).
❑ Les retours à la ligne et les espaces servent uniquement à aérer le code
❑ Toutes instructions ou actions se terminent par un point virgule « ; ».

Commentaires
En mikroC, les commentaires de programmes peuvent être de deux types : de longs commentaires,
s’étendant sur plusieurs lignes, et de courts commentaires, occupant une seule ligne.
Les longs commentaires commencent par le caractère « /* » et se terminent par le caractère « */ ».
De même, de courts commentaires commencent par le caractère « // » et il n’a pas besoin d'un
caractère de terminaison.

2021-2022 7
Chapitre 1: Introduction au langage MicroC

Début et fin d'un programme

En mikroC, un programme commence avec les mots-clés : void main()


Après cela, une accolade ouvrante est utilisée pour indiquer le début du corps de programme.
Le programme se termine par une accolade fermante. Le programme a la structure suivante :

void main()
{
// Votre code ici
}

2021-2022 8
Plan du cours
Chapitre 1: Introduction au langage MicroC
• Définition du langage MicroC
• Applications et règles du langage MicroC
Chapitre 2: ELEMENTS DE PROGRAMMATION EN MIKROC
• Variables
• Constantes
• Séquences d'échappement
• Tableaux
• Pointeurs
• Structures
Chapitre 3: OPERATEURS ET EXPRESSIONS EN MIKROC
• Opérateur d’affectation
• Opérateurs arithmétiques
• Autres opérateurs unaires d’affectation
• Autres opérateurs binaires d’affectation
• Opérateurs de comparaison
• Opérateurs logiques
• Opérateurs de manipulation de bits
• Opérateur de dimension
Chapitre 4: LES STRUCTURES DE CONTROLE
• Instruction if
• Instruction switch
• Instructions d'itération for, while, do, goto, continue et break
Chapitre 5: MikroC pour Microcontrôleur PIC
• Définition du Microcontrôleur PIC
• Présentation du matériel PIC
• Fonctionnalités du Microcontrôleur PIC
• Ports E/S du Microcontrôleur PIC
• mikroC PRO pour les bibliothèques PIC
• Programmation du microcontrôleur Pic en MikroC

2021-2022 9
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Variables dans le langage MicroC
Une variable est une portion réservée d’une mémoire à laquelle on a donné un nom. Toute variable
utilisée dans un programme doit auparavant être définie.
La définition d’une variable consiste à la nommer et lui donnée un type et éventuellement lui
donner une valeur initiale (initialiser). C’est cette définition qui réserve (alloue) la place mémoire
nécessaire en fonction du type.
La position de la déclaration ou de la définition d’une variable détermine sa portée c’est-à-dire sa
durée de vie et sa visibilité.

❑ Les variables globales sont déclarées en dehors de toute fonction.


❑ Les variables locales sont déclarées à l’intérieur des fonctions et ne sont pas visible à l’extérieur
de la fonction dans laquelle celle-ci est définie.

Les noms des variables ne peuvent contenir que des lettres de a à z et à partir de A à Z, le trait de
soulignement "_" et les chiffres de 0 à 9.
Les noms des variables dans mikroC n'est pas sensible à la casse, de sorte que Som, som et soM
représente le même identifiant.
Certains noms sont réservés pour le compilateur lui-même et ne peut pas être utilisés comme noms
de variables dans un programme.

2021-2022 10
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Variables dans le langage MicroC

Le tableau suivant donne une liste alphabétique de ces noms réservés.

2021-2022 11
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Constantes dans le langage MicroC
Les constantes représentent des valeurs fixes (numérique ou caractère) dans des programmes qui ne
peuvent pas être changées. En mikroC, les constantes peuvent être entiers, flottants, caractères,
chaînes ou des types énumérés.
Integer Constants
Les constantes entières (Integer Constants) peuvent être en décimal, hexadécimal, octal ou binaire.
Le suffixe u ou U force la constante d'être non signé (unsigned) et le suffixe l ou L force la constante
d'être longue (long). L’utilisation de U (ou u) et L (ou l) oblige la constante d'être unsigned long.
Les constantes sont déclarées en utilisant le mot-clé const et sont stockées dans le flash de mémoire
du microcontrôleur PIC. Par exemple, MAX est déclaré comme la constante 100 :
const MAX =100;
Les constantes hexadécimales commencent par les caractères 0x ou 0X et peuvent contenir des données
numériques de 0 à 9 et les caractères hexadécimaux de A à F. Dans l'exemple suivant, TOTAL est la
constante de la valeur hexadécimale FF:
const TOTAL = 0xFF;
Les constantes octales ont un zéro au début du nombre et peuvent contenir des données numériques
de 0 à 7. Dans l'exemple suivant, une constante CNT est affectée une valeur octale 17 :
const CNT = 017;
Les constantes binaires commencent par 0b ou 0B et ne peuvent contenir que 0 ou 1. Par exemple
une constante nommée Min est déclarée comme ayant la valeur binaire 11110000 :
const Min = 0b11110000
2021-2022 12
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Constantes dans le langage MicroC
Floating Point Constants
Les constantes à virgule flottante (Floating Point Constants) se compose de :
❑Entier décimal
❑Point décimal
❑Partie décimale fractionnaire
❑e ou E et l'ordre du signe
Dans l'exemple suivant, une constante nommée TEMP est déclarée comme ayant la valeur
fractionnelle 37.50 :
const TEMP = 37.50 ou const TEMP = 3.750E1

2021-2022 13
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Constantess dans le langage MicroC
Character Constants
Une constante de caractère (Character Constants) est un caractère renfermé dans des guillemets
simples. Par exemple, une constante nommée First_Alpha est déclarée comme ayant la valeur du
caractère ‘A’:
const First_Alpha = ‘A’;

String Constants
Les constantes de chaîne (String Constants) sont des séquences fixes de caractères stockées dans la
mémoire flash du microcontrôleur. La chaîne doit commencer et se terminer par un guillemet « " ».
Un exemple d’une constante de type chaîne est la suivante :
const First_Alpha = "Il s'agit d'un exemple de chaine constante"

2021-2022 14
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Constantess dans le langage MicroC

Enumerated Constants
Les constantes énumérées (Enumerated Constants) sont de type entier et sont utilisées pour faire un
programme plus facile à suivre. Dans l'exemple suivant, une constante nommée couleur stocke les
noms de couleurs. Le premier élément de couleur a la valeur 0:
enum couleur {noir, marron, rouge, orange, jaune, vert, bleu, gris, white};

2021-2022 15
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Séquences d'échappement dans le langage MicroC

Les séquences d'échappement sont utilisées pour représenter les caractères ASCII non imprimables.
Par exemple, la combinaison de caractères « \n » représente le caractère de nouvelle ligne.

2021-2022 16
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC

Tableaux dans le langage MicroC

Les tableaux sont utilisés pour stocker des éléments liés dans le même bloc de mémoire. Un tableau
est déclaré en spécifiant son type, le nom, et le nombre d’éléments à stocker. Par exemple :
unsigned int Total [5] ;
Dans le langage de programmation mikroC, nous pouvons aussi déclarer des tableaux aux
dimensions multiples. Tableaux unidimensionnels sont généralement appelés vecteurs, et des
tableaux bidimensionnels sont appelés matrices. Un réseau bidimensionnel est déclaré en spécifiant
le type de données de la matrice, le nom de tableau, et la taille de chaque dimension.
Dans l'exemple suivant, réseau bidimensionnel Q a deux rangées et deux colonnes, ses éléments
diagonaux sont mis à 1, et de ses éléments non diagonaux sont remis à 0 :
unsigned char Q[2][2] = { {1,0}, {0,1} };

2021-2022 17
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Pointeurs dans le langage MicroC
Notion de pointeur
Les pointeurs (Pointers) sont une partie importante du langage mikroC, car ils occupent les adresses
mémoire des autres variables. Les pointeurs sont déclarés de la même manière que d’autres
variables, mais avec le caractère « * » en face du nom de variable.
Dans l'exemple suivant, un pointeur de caractère non signé du nom pnt est déclaré :
unsigned char *pnt;
Quand un nouveau pointeur est créé, son contenu est d'abord indéterminé et il ne tient pas l'adresse
d'une variable. Nous pouvons attribuer l'adresse d'une variable à un pointeur à l'aide le « & » :
pnt = &Count;
Maintenant pnt affecte l'adresse de variable Count. La variable Count peut être affectée à une valeur
en utilisant le caractère « * » en avant de son pointeur. Par exemple, le Count peut être attribuée à
10 à l'aide de son pointeur :
* pnt = 10; // Count = 10
c’est la même chose que
Count = 10; // Count = 10
ou, la valeur du Count peut être copié à la variable Cnt en utilisant son pointeur :
Cnt = *pnt; // Cnt = Count

2021-2022 18
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Pointeurs dans le langage MicroC
Pointeurs et tableaux
Dans le langage mikroC, le nom d'un tableau est aussi un pointeur de tableau. Ainsi, pour le tableau:
unsigned int Total[10];
Le nom Total est également un pointeur de ce tableau, et il contient l'adresse du premier élément de
la matrice. Ainsi, les deux énoncés suivants sont égaux :
Total[2] = 0;
et
*(Total + 2) = 0;

2021-2022 19
Chapitre 2: ELEMENTS DE
PROGRAMMATION EN MIKROC
Structures dans le langage MicroC
Une structure peut être utilisée pour recueillir des éléments connexes, qui sont ensuite traités
comme un seul objet. Contrairement à un tableau, une structure peut contenir un mélange de types
de données. Par exemple, une structure permet de stocker les données personnelles (nom, prénom,
âge, date de naissance, etc.) d'un étudiant.
Une structure est créée en utilisant le mot-clé struct, suivi d'une structure de nom et d’une liste des
déclarations de membre. Éventuellement, des variables de même type que la structure peuvent
déclarer à l'extrémité de la structure.
L'exemple suivant déclare une structure nommée Personne :
struct Personne
{
unsigned char nom[20];
unsigned char prenom[20];
unsigned char nationalite[20];
unsigned char age;
}
Nous pouvons attribuer des valeurs aux élements d'une structure en spécifiant le nom de la
structure, suivi d'un point «.» et le nom de l'élément.

2021-2022 20
Plan du cours
Chapitre 1: Introduction au langage MicroC
• Définition du langage MicroC
• Règles du langage MicroC
Chapitre 2: ELEMENTS DE PROGRAMMATION EN MIKROC
• Variables
• Constantes
• Séquences d'échappement
• Tableaux
• Pointeurs
• Structures
Chapitre 3: OPERATEURS ET EXPRESSIONS EN MIKROC
• Opérateur d’affectation
• Opérateurs arithmétiques
• Autres opérateurs unaires d’affectation
• Autres opérateurs binaires d’affectation
• Opérateurs de comparaison
• Opérateurs logiques
• Opérateurs de manipulation de bits
• Opérateur de dimension
Chapitre 4: LES STRUCTURES DE CONTROLE
• Instruction if
• Instruction switch
• Instructions d'itération for, while, do, goto, continue et break
Chapitre 5: MikroC pour Microcontrôleur PIC
• Définition du Microcontrôleur PIC
• Présentation du matériel PIC
• Fonctionnalités du Microcontrôleur PIC
• Ports E/S du Microcontrôleur PIC
• mikroC PRO pour les bibliothèques PIC
• Programmation du microcontrôleur Pic en MikroC

2021-2022 21
Chapitre 3: OPERATEURS ET
EXPRESSIONS EN MIKROC
Les opérateurs sont appliqués aux variables et d'autres objets dans les expressions pour assurer
certaines conditions ou des calculs.
Une expression est un objet syntaxique obtenu en assemblant des constantes, des variables et
des opérateurs.

Opérateur d’affectation
L’opérateur le plus important dans un langage de programmation est celui qui consiste à
donner une valeur à une variable. Cette opération est désignée par le symbole « = ».

2021-2022 22
Chapitre 3: OPERATEURS ET
EXPRESSIONS EN MIKROC

opérateurs arithmétiques

Les opérateurs +, -, *, fonctionnent comme en arithmétique. Par contre, l’opérateur / (division)


se comporte de manière différente selon que les opérandes sont des entiers ou des nombres
flottants.

2021-2022 23
Chapitre 3: OPERATEURS ET
EXPRESSIONS EN MIKROC

Autres opérateurs unaires d’affectation

2021-2022 24
Chapitre 3: OPERATEURS ET
EXPRESSIONS EN MIKROC

autres opérateurs binaires d’affectation

2021-2022 25
Chapitre 3: OPERATEURS ET
EXPRESSIONS EN MIKROC

opérateurs de comparaison

En mikroC, le résultat d’une comparaison est 1 (!= 0) ou 0 selon que cette comparaison est
vraie ou fausse. Il n’existe pas de type booléen en mikroC : la valeur entière 0 sera considérée
comme équivalente à la valeur faux et toute valeur différente de 0 équivalente à la valeur vraie.

2021-2022 26
Chapitre 3: OPERATEURS ET
EXPRESSIONS EN MIKROC

opérateurs logiques
Une variable booléenne est une variable pouvant prendre la valeur vrai ou faux. La valeur
d’une expression booléenne est, comme le résultat des comparaisons, une valeur entière.

2021-2022 27
Chapitre 3: OPERATEURS ET
EXPRESSIONS EN MIKROC

opérateurs de manipulation de bits

2021-2022 28
Chapitre 3: OPERATEURS ET
EXPRESSIONS EN MIKROC

Opérateur de dimension
Cet opérateur donne l’occupation mémoire (en octets) d’une variable ou d’un type de donné.

Exemple :
La valeur de l’expression sizeof(c) est 1 si c est une variable de type char.

2021-2022 29
Plan du cours
Chapitre 1: Introduction au langage MicroC
• Définition du langage MicroC
• Règles du langage MicroC
Chapitre 2: ELEMENTS DE PROGRAMMATION EN MIKROC
• Variables
• Constantes
• Séquences d'échappement
• Tableaux
• Pointeurs
• Structures
Chapitre 3: OPERATEURS ET EXPRESSIONS EN MIKROC
• Opérateur d’affectation
• Opérateurs arithmétiques
• Autres opérateurs unaires d’affectation
• Autres opérateurs binaires d’affectation
• Opérateurs de comparaison
• Opérateurs logiques
• Opérateurs de manipulation de bits
• Opérateur de dimension
Chapitre 4: LES STRUCTURES DE CONTROLE
• Instruction if
• Instruction switch
• Instructions d'itération for, while, do, goto, continue et break
Chapitre 5: MikroC pour Microcontrôleur PIC
• Définition du Microcontrôleur PIC
• Présentation du matériel PIC
• Fonctionnalités du Microcontrôleur PIC
• Ports E/S du Microcontrôleur PIC
• mikroC PRO pour les bibliothèques PIC
• Programmation du microcontrôleur Pic en MikroC

2021-2022 30
Chapitre 4: LES STRUCTURES DE
CONTROLE

Instruction if
Cette instruction conditionnelle permet d’exécuter des instructions de manière sélective en fonction
du résultat d’un test. La déclaration du format général de l’instruction if est la suivante :
if (expression)
instruction1
else
instruction2

Si l’expression est vraie, l’instruction1 s’exécute sinon, dans le deuxième cas, c’est l’istruction2 qui
s’exécute.
Exemple:
if (x> 0 && x <10)
{
Total + = Sum;
Sum++;
}
else
{
Total = 0;
Sum = 0;
} 2021-2022 31
Chapitre 4: LES STRUCTURES DE
CONTROLE

Instruction switch
L'instruction switch est utilisée pour assurer la commutation entre des différentes déclarations si un
certain nombre des conditions est vrai ou faux.
La syntaxe de commutation :

switch (condition)
{
case condition1: Instructions1; break;
case condition2: Instructions2; break;
.....................
case conditionN: InstructionsN; break;
default: InstructionsN+1;
}
Exemple:
switch (Cnt)
{
case 1: A=1; break;
case 10: B=10; break ;
case 100: C=100; break;
default: D=1;
} 2021-2022 32
Chapitre 4: LES STRUCTURES DE
CONTROLE

Instructions d'itération for, while, do, goto, continue et break


Les instructions d'itération nous permettent d'effectuer des boucles dans un programme, où une partie
d'un code doit être répétée un certain nombre de fois. Dans mikroC, l'itération peut être effectuée de
quatre façons :
❑ Utilisation de for
❑ Utilisation de while
❑ Utilisation de do
❑ Utilisation de goto, continue et break

Instruction for
La syntaxe d'une instruction for est :
for (expression initiale; expression de condition; expression increment)
{
Instructions;
}
Exemple:
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++) Sum = Sum + M[i][j];
}
2021-2022 33
Chapitre 4: LES STRUCTURES DE
CONTROLE

Instructions d'itération for, while, do, goto, continue et break


Instruction while
La syntaxe d'une instruction while est la suivante :
while (condition)
{
Instructions;
}
Ici, les instructions sont exécutées jusqu'à ce que la condition devienne fausse, ou les instructions
sont exécutées de façon répétée aussi longtemps que la condition est vraie. Si la condition est fausse à
l'entrée de la boucle, la boucle ne sera pas exécutée et le programme continue de l'extrémité de la
boucle while. Il est important que la condition change à l’intérieur de la boucle, sinon une boucle sans
fin sera formée.
Le code suivant montre comment mettre en place une boucle d'exécuter 10 fois :
// Une boucle qui s'exécute 10 fois
k = 0;
while (k <10)
{
Instructions;
k++;
}
2021-2022 34
Chapitre 4: LES STRUCTURES DE
CONTROLE

Instructions d'itération for, while, do, goto, continue et break


Une boucle sans fin peut également être formée par réglage de la condition qui doit être toujours vrai:
// Une boucle sans fin
while (k == k)
{
Instructions;
}
Il est possible d'avoir une déclaration while sans corps. Une telle déclaration est utile, pour par exemple,
si nous attendons un port d'entrée pour changer sa valeur.
Voici un exemple où le programme va attendre aussi longtemps que le bit 0 de PORTB (PORTB.0)
est au niveau logique 0. Le programme se poursuivra jusqu’au changement à la valeur logique 1 sur
les broches du port.
while (PORTB.F0 == 0); // Attendre jusqu'a ce que PORTB.0 devient un 1
ou
while (PORTB.F0);

2021-2022 35
Chapitre 4: LES STRUCTURES DE
CONTROLE

Instructions d'itération for, while, do, goto, continue et break


Instruction do
Une déclaration do est similaire à une déclaration while sauf ce que la boucle s’exécute jusqu'à ce
que la condition devienne fausse, ou, la boucle s'exécute tant que la condition est vraie. La condition
est testée à la fin de la boucle. La syntaxe d'une déclaration do est la suivante :
do
{
Instructions;
} while (condition);
La première itération est toujours effectuée si la condition est vraie ou fausse. Il s'agit de la principale
différence entre une déclaration while et une déclaration do.
Le code suivant montre comment mettre en place une boucle d'exécuter 10 fois en utilisant la
déclaration do :
/*Exécution 10 fois */
k = 0;
do
{
Instructions;
k++;
} while (k <10);
2021-2022 36
Chapitre 4: LES STRUCTURES DE
CONTROLE
Instructions d'itération for, while, do, goto, continue et break
Une boucle sans fin peut également être créée si la condition est réglée pour être vrai tout le temps:
/* Une boucle sans fin */
do
{
Instructions;
} while (k == k);

Instructions goto, continue et break


Une instruction goto peut être utilisée pour modifier le flux normal de contrôle dans un programme.
Elle provoque le programme à sauter à une étiquette spécifiée.
Une étiquette peut être n'importe quel jeu de caractères alphanumériques commençant par une lettre
et se terminant par le caractère « : ».
L’instruction goto peut être utilisée conjointement avec une instruction if.
L'exemple suivant montre comment mettre en place une boucle pour l’exécuter 10 fois en utilisant
goto et if :
/ * Exécution 10 fois * /
k = 0;
Boucle:
Instructions;
k++;
2021-2022 37
if (k < 10) goto Boucle;
Chapitre 4: LES STRUCTURES DE
CONTROLE

Instructions d'itération for, while, do, goto, continue et break


La boucle commence par l’étiquette Boucle et la variable k = 0. Les instructions sont exécutées à
l'intérieur de la boucle et k est incrémenté de 1. La valeur de k est alors comparée à 10 et le
programme retourne à l’étiquette Boucle si k <10. Ainsi, la boucle est exécutée 10 fois jusqu'à ce que
la condition à la fin devienne fausse. À la fin de la boucle la valeur de k est 10.
Les instructions continue et break peuvent être utilisés à l'intérieur d’itérations pour modifier le flux
de commande. Une instruction continue est généralement utilisée avec une instruction if et provoque
le saut de la boucle d’itération.
Voici un exemple qui calcule la somme des nombres de 1 à 10, sauf le nombre 5 :
/* Calculer la somme des nombres 1, 2, 3, 4, 6, 7, 8, 9, 10 */
Sum = 0;
i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5) continue; // Passer le numéro 5
Sum = Sum + i;
}

2021-2022 38
Chapitre 4: LES STRUCTURES DE
CONTROLE

Instructions d'itération for, while, do, goto, continue et break


De même, une instruction break peut être utilisé pour mettre fin à une boucle à l'intérieur de la
boucle.
Dans l'exemple suivant, la somme des nombres de 1 à 5 est calculée, même si les paramètres de la
boucle sont mis à parcourir 10 fois :
/ * Calculer la somme des nombres 1, 2, 3, 4, 5 * /
Sum = 0;
i = 1;
for (i = 1; i <= 10; i++)
{
if (i > 5) break; // Stopper la boucle si i > 5
}

2021-2022 39
Plan du cours
Chapitre 1: Introduction au langage MikroC
• Définition du langage MikroC
• Applications et règles du langage MikroC
Chapitre 2: ELEMENTS DE PROGRAMMATION EN MIKROC
• Variables
• Constantes
• Séquences d'échappement
• Tableaux
• Pointeurs
• Structures
Chapitre 3: OPERATEURS ET EXPRESSIONS EN MIKROC
• Opérateur d’affectation
• Opérateurs arithmétiques
• Autres opérateurs unaires d’affectation
• Autres opérateurs binaires d’affectation
• Opérateurs de comparaison
• Opérateurs logiques
• Opérateurs de manipulation de bits
• Opérateur de dimension
Chapitre 4: LES STRUCTURES DE CONTROLE
• Instruction if
• Instruction switch
• Instructions d'itération for, while, do, goto, continue et break
Chapitre 5: MikroC pour Microcontrôleur PIC
• Définition du Microcontrôleur PIC
• Présentation du matériel PIC
• Fonctionnalités du Microcontrôleur PIC
• Ports E/S du Microcontrôleur PIC
• mikroC PRO pour les bibliothèques PIC
• Programmation du microcontrôleur Pic en MikroC
2021-2022 40
Chapitre 5: MicroC pour microcontrôleur
PIC

Définition du Microcontrôleur PIC

Un microcontrôleur pic (parfois abrégé en uC ou MCU ) est un petit ordinateur dans un seul circuit
intégré contenant un cœur de processeur, une mémoire et des périphériques d'E/S programmables. La
mémoire de programme sous forme de flash NOR est également souvent incluse sur la puce, ainsi
qu'une petite quantité typique de RAM. Les microcontrôleurs Pic sont conçus pour les applications
embarquées contrairement aux microprocesseurs utilisés dans les ordinateurs personnels ou d'autres
applications à usage général.
Les microcontrôleurs sont fabriqués par un certain nombre de sociétés avec des fonctionnalités
différentes. Au fur et à mesure que la technologie progresse, non seulement de nouvelles
fonctionnalités sont ajoutées dans la famille de contrôleurs précédente, mais de nouvelles familles sont
également introduites. Les contrôleurs les plus couramment utilisés sont PIC, Atmel, AVR , Intel,
ATmega, etc. Même dans une seule famille, vous trouverez de nombreuses variations, du nombre de
broches de la puce au nombre de fonctionnalités fournies.

2021-2022 41
Chapitre 5: Introduction au monde des
microcontrôleurs

2021-2022 42
Chapitre 5: MicroC pour microcontrôleur
PIC

Présentation du matériel PIC


Microchip propose une large gamme de microcontrôleurs 8 bits qui sont généralement connus sous le
nom de PIC ( Peripheral Interface Controller ). 8051 est basé sur l'architecture CISC (ordinateur à jeu
d'instructions complexe) tandis que les PIC sont basés sur l'architecture RISC (ordinateur à jeu
d'instructions réduit). La famille PIC18FxxKxx fait partie des microcontrôleurs 8 bits les plus
performants et les plus utilisés. Ils ont une vitesse allant jusqu'à 16 MIPS (millions d'instructions par
seconde). Comme les autres contrôleurs, il possède les composants internes suivants :
- Fonctionnement jusqu'à 16 MIPS.
- Jusqu'à 35 broches d'E/S plus 1 broche d'entrée uniquement.
- Trois interruptions externes programmables.
- Deux modules de capture/comparaison/PWM (CCP).
- Deux modules MSSP (Master Synchronous Serial Port).
- ADC de résolution 10 bits.
- Communication série (USART, I 2 C SPI etc.)

2021-2022 43
Chapitre 5: MicroC pour microcontrôleur
PIC

Présentation du matériel PIC


Les microcontrôleurs sont des équipements très sensibles. Toute erreur dans la connexion des broches
d'alimentation peut endommager de façon permanente le matériel interne. Veuillez consulter la fiche
technique de votre contrôleur pour connaître la tension nominale maximale absolue sur V DD par
rapport à V SS . Alimentez votre microcontrôleur en utilisant la sortie 5V de vos alimentations.
L'horloge
Vous devriez être bien conscient maintenant que chaque circuit numérique fonctionne sur une
horloge. Il en va de même pour notre microcontrôleur, cette horloge peut être fournie à l'aide d'un
oscillateur à cristal, d'un oscillateur RC externe, d'une onde carrée et d'un bloc oscillateur interne d'un
microcontrôleur. Dans nos laboratoires, nous utiliserons un cristal pour l'horloge car il est tout à fait
précis et nécessite un minimum de circuits. Les deux condensateurs connectés au cristal sont
appelés condensateurs de charge , ils sont nécessaires au bon fonctionnement des cristaux.
La réinitialisation
Chaque microcontrôleur a une broche de réinitialisation active-bas, lorsque la broche de réinitialisation
est connectée à la terre, le microcontrôleur oublie tout et commence à exécuter le code depuis le
début. Pendant le fonctionnement normal, cette broche est tirée vers le haut à l'aide d'une résistance à
VCC, pour éviter les réinitialisations involontaires.

2021-2022 44
Chapitre 5: MicroC pour microcontrôleur
PIC

Fonctionalités du Microcontrôleur PIC

E/S à usage général (GPIO): les microcontrôleurs contiennent généralement de plusieurs à des dizaines
de broches d'entrée/sortie à usage général (GPIO). Les broches GPIO sont configurables par logiciel
sur un état d'entrée ou de sortie. Lorsque les broches GPIO sont configurées sur un état d'entrée, elles
sont souvent utilisées pour lire des capteurs ou des signaux externes. Configurées à l'état de sortie, les
broches GPIO peuvent piloter des périphériques externes tels que des LED ou des moteurs.
Convertisseurs analogique-numérique (ADC) : De nombreux systèmes embarqués ont besoin de lire
des capteurs qui produisent des signaux analogiques. C'est le but du convertisseur analogique-
numérique (CAN). Les processeurs étant conçus pour interpréter et traiter des données numériques,
c'est-à-dire des 1 et des 0, ils ne sont pas en mesure de faire quoi que ce soit avec les signaux
analogiques qui peuvent leur être envoyés par un appareil. Ainsi, le convertisseur analogique-
numérique est utilisé pour convertir les données entrantes sous une forme que le processeur peut
reconnaître. Une caractéristique moins courante sur certains microcontrôleurs est un convertisseur
numérique-analogique (DAC) qui permet au processeur de produire des signaux analogiques ou des
niveaux de tension.

2021-2022 45
Chapitre 5: MicroC pour microcontrôleur
PIC

Fonctionalités du Microcontrôleur PIC

Minuteries : Dans les microcontrôleurs pic, les minuteries de programmation sont très utiles. En plus
des convertisseurs, de nombreux microprocesseurs intégrés incluent également une variété de
minuteries. L'un des types de minuteries les plus courants est la minuterie d'intervalle programmable
(PIT). Un PIT peut soit compter à rebours d'une valeur à zéro, soit jusqu'à la capacité du registre de
comptage, débordant jusqu'à zéro. Une fois qu'il atteint zéro, il envoie une interruption au processeur
indiquant qu'il a fini de compter. Ceci est utile pour les appareils tels que les thermostats, qui testent
périodiquement la température autour d'eux pour voir s'ils doivent allumer le climatiseur, le chauffage,
etc. Les minuteries sont une partie très importante des microcontrôleurs sur lesquels se concentreraient
les laboratoires ultérieurs. .
Modulation de largeur d'impulsion (PWM) : un bloc dédié à la modulation de largeur d'impulsion
(PWM) permet au CPU de contrôler les convertisseurs de puissance, les charges résistives, les moteurs,
etc., sans utiliser beaucoup de ressources CPU dans des boucles de temporisation serrées. Le matériel
de génération PWM reste occupé à générer un signal d'horloge de la fréquence et du cycle de service
souhaités tandis que le processeur peut exécuter des programmes réguliers.
Universal Synchronous Asynchronous Receiver/Transmitter (USART) : Ce bloc permet de recevoir et
de transmettre des données sur une ligne série avec très peu de charge sur le CPU. Le matériel sur puce
dédié comprend également souvent des capacités pour communiquer avec d'autres appareils (puces)
dans des formats numériques tels que I²C et Serial Peripheral Interface (SPI).
2021-2022 46
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Afin de synchroniser le fonctionnement des ports d'E/S avec l'organisation interne à 8 bits du
microcontrôleur, ils sont regroupés en cinq ports notés A, B, C, D et E. Tous possèdent plusieurs traits
communs :Pour des raisons pratiques, de nombreuses broches d'E/S sont multifonctionnelles. Si une
broche remplit l'une de ces fonctions, elle ne peut pas être utilisée comme broche d'entrée/sortie à
usage général.
Chaque port a son 'satellite', c'est-à-dire le registre TRIS correspondant : TRISA, TRISB, TRISC etc.
qui détermine les performances des bits du port, mais pas leur contenu.
En effaçant n'importe quel bit du registre TRIS (bit=0), la broche de port correspondante est configurée
en tant que sortie. De même, en définissant n'importe quel bit du registre TRIS (bit=1), la broche de
port correspondante est configurée comme une entrée. Cette règle est facile à retenir 0 = O utput, 1
= I nput.

2021-2022 47
Chapitre 5: MicroC pour microcontrôleur
PIC

2021-2022 48
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Registre PORTA et TRISA
Le port A est un port bidirectionnel de 8 bits de large. Les bits des registres TRISA et ANSEL
contrôlent les broches du port A. Toutes les broches du port A agissent comme des entrées/sorties
numériques. Cinq d'entre elles peuvent également être des entrées analogiques (notées AN) :

2021-2022 49
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Registre PORTA et TRISA
RA0 = AN0 (déterminé par le bit ANS0 du registre ANSEL) RA1 = AN1 (déterminé par le bit ANS1 du
registre ANSEL) RA2 = AN2 (déterminé par le bit ANS2 du registre ANSEL) RA3 = AN3 (déterminé
par le bit ANS3 du Registre ANSEL) RA5 = AN4 (déterminé par le bit ANS4 du registre ANSEL) De
la même manière que les bits du registre TRISA déterminent quelles broches doivent être configurées
comme entrées et lesquelles comme sorties, les bits appropriés du registre ANSEL déterminent si les
broches sont à configurer comme entrées analogiques ou entrées/sorties numériques.

2021-2022 50
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Registre PORTB et TRISB
Le port B est un port bidirectionnel de 8 bits de large. Les bits du registre TRISB déterminent la
fonction de ses broches

2021-2022 51
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Registre PORTB et TRISB
Semblable au port A, un un logique (1) dans le registre TRISB configure la broche du portB appropriée
comme entrée et vice versa. Six broches de ce port peuvent servir d'entrées analogiques (AN). Les bits
du registre ANSELH déterminent si ces broches doivent être configurées comme entrées analogiques
ou entrées/sorties numériques : RB0 = AN12 (déterminé par le bit ANS12 du registre ANSELH) RB1 =
AN10 (déterminé par le bit ANS10 du registre ANSELH ) RB2 = AN8 (déterminé par le bit ANS8 du
registre ANSELH) RB3 = AN9 (déterminé par le bit ANS9 du registre ANSELH) RB4 = AN11 (déterminé
par le bit ANS11 du registre ANSELH) RB5 = AN13 (déterminé par le Bit ANS13 du registre ANSELH)

2021-2022 52
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Registre PORTC et TRISC
Le port C est un port bidirectionnel de 8 bits de large. Les bits du registre TRISC déterminent la
fonction de ses broches. Semblable à d'autres ports, un un logique (1) dans le registre TRISC configure
la broche portC appropriée comme entrée.

2021-2022 53
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Registre PORTD et TRISD
Le port D est un port bidirectionnel de 8 bits de large. Les bits du registre TRISD déterminent la
fonction de ses broches. Un un logique (1) dans le registre TRISD configure la broche portD appropriée
comme entrée.

2021-2022 54
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Registre PORTE et TRISE
Le port E est un port bidirectionnel de 4 bits de large. Les bits du registre TRISE déterminent la
fonction de ses broches. Semblable à d'autres ports, un un logique (1) dans le registre TRISE configure
la broche portE appropriée comme entrée. L'exception est la broche RE3 qui est toujours configurée
comme entrée.

2021-2022 55
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Registre ANSEL et ANSELH
Les registres ANSEL et ANSELH sont utilisés pour configurer le mode d'entrée d'une broche d'E/S en
analogique ou numérique.

2021-2022 56
Chapitre 5: MicroC pour microcontrôleur
PIC

Ports E/S du Microcontrôleur PIC


Registre ANSEL et ANSELH
La règle est la suivante : pour configurer une broche comme entrée analogique, le bit approprié des
registres ANSEL ou ANSELH doit être défini (1). Pour configurer une broche comme entrée/sortie
numérique, le bit approprié doit être effacé (0). L'état des bits ANSEL n'a aucune influence sur les
fonctions de sortie numérique. Le résultat de toute tentative de lecture d'une broche de port
configurée comme entrée analogique sera 0.

2021-2022 57
Chapitre 5: MicroC pour microcontrôleur
PIC

Récapitulatif
Vous n'écrirez probablement jamais un programme qui n'utilise pas les ports, donc l'effort que vous ferez
pour tout apprendre à leur sujet sera certainement payant. Quoi qu'il en soit, ce sont probablement les
modules les plus simples du microcontrôleur.
Voici comment ils sont utilisés :
Lors de la conception d'un appareil, sélectionnez un port via lequel le microcontrôleur communiquera avec
l'environnement périphérique. Si vous n'utilisez que des entrées/sorties numériques, sélectionnez le port de
votre choix. Si vous avez l'intention d'utiliser certaines des entrées analogiques, sélectionnez les ports
appropriés prenant en charge une telle configuration de broches (AN0-AN13).
Chaque broche de port peut être configurée en entrée ou en sortie. Les bits des registres TRISA, TRISB,
TRISC, TRISD et TRISE déterminent comment les broches de port appropriées - PORTA, PORTB,
PORTC, PORTD et PORTE agiront.
Si vous utilisez certaines des entrées analogiques, il est d'abord nécessaire de définir les bits appropriés des
registres ANSEL et ANSELH au début du programme.
Si vous utilisez des commutateurs et des boutons-poussoirs comme source de signal d'entrée, connectez-les
aux broches du port B car ils ont des résistances de rappel.
Il est généralement nécessaire de répondre dès que les broches d'entrée changent d'état logique. Cependant,
il n'est pas nécessaire d'écrire un programme pour vérifier l'état logique des broches. Il est beaucoup plus
simple de connecter de telles entrées aux broches PORTB et de permettre à une interruption de se produire
à chaque changement de tension.
2021-2022 58
Chapitre 5: MicroC pour microcontrôleur
PIC

MikroC PRO pour les bibliothèques PIC


MikroC PRO pour PIC fournit un ensemble de bibliothèques qui simplifient l'initialisation et l'utilisation
des MCU compatibles PIC et de leurs modules:

➢Bibliothèque ADC
➢Bibliothèque CAN
➢Bibliothèque CANSPI
➢Bibliothèque Compact Flash
➢Bibliothèque EEPROM
➢Bibliothèque graphique LCD Epson S1D13700
➢Bibliothèque Ethernet PIC18FxxJ60
➢Bibliothèque de mémoire flash
➢Bibliothèque graphique LCD
➢Bibliothèque I²C
➢Bibliothèque de claviers
➢Bibliothèque LCD
➢Bibliothèque de codes de Manchester
➢Bibliothèque du gestionnaire de mémoire
➢Bibliothèque de cartes multimédia
➢Bibliothèque OneWire
2021-2022 59
Chapitre 5: MicroC pour microcontrôleur
PIC

MikroC PRO pour les bibliothèques PIC


mikroC PRO pour PIC fournit un ensemble de bibliothèques qui simplifient l'initialisation et l'utilisation des
MCU compatibles PIC et de leurs modules :

➢Sélection de broche périphérique


➢Bibliothèque d'extension de port
➢Bibliothèque PS/2
➢Bibliothèque PWM
➢Bibliothèque RS-485
➢Bibliothèque I²C logicielle
➢Bibliothèque de logiciels SPI
➢Bibliothèque de logiciels UART
➢Bibliothèque de sons
➢Bibliothèque SPI
➢Bibliothèque remappable SPI
➢Bibliothèque Ethernet SPI
➢Bibliothèque SPI Ethernet ENC24J600
➢Bibliothèque graphique LCD SPI
➢Bibliothèque LCD SPI
➢Bibliothèque SPI Lcd8
2021-2022 60
Chapitre 5: MicroC pour microcontrôleur
PIC

MikroC PRO pour les bibliothèques PIC


mikroC PRO pour PIC fournit un ensemble de bibliothèques qui simplifient l'initialisation et l'utilisation des
MCU compatibles PIC et de leurs modules:

➢Bibliothèque graphique LCD SPI T6963C


➢Bibliothèque graphique LCD T6963C
➢Bibliothèque d'affichage TFT
➢Bibliothèque d'affichage TFT 16 bits
➢Bibliothèque d'écrans tactiles
➢Bibliothèque TFT à écran tactile
➢Bibliothèque UART
➢Bibliothèque remappable UART
➢Bibliothèque USB

2021-2022 61
Chapitre 5: MicroC pour microcontrôleur
PIC

Programmation du microcontrôleur Pic en MikroC


Exemple 1: Programme de clignotement des LED qui allume la led pendant 1 seconde et l'éteint après 1
seconde.

#define LED PORTB.B0


//L'utilisation des macros du préprocesseur #define fera //code plus facile à lire, écrire et déboguer
void main()
{
TRISB=0;//Définir PORTB sur Sortie
LED = 0;//Initialiser la LED à 0
tandis que(1)
{
LED = ~LED ; //Pas au niveau du bit, pour basculer la LED
delay_ms(1000);//Retard de 1000ms = 1s
}
}

2021-2022 62
Chapitre 5: MicroC pour microcontrôleur
PIC

Programmation du microcontrôleur Pic en MikroC


Exemple 2: Ce programme permet de créer un système de feux de circulation en marche , Par souci de
simplicité, votre système de circulation ne sera que pour deux routes, chacune équipée de trois LED,
#define RED1 PORTB.B0
#define ORANGE1 PORTB.B1
#define GREEN1 PORTB.B2
#define RED2 PORTB.B5
#define ORANGE2 PORTB.B6
#define GREEN2 PORTB.B7
#définir REDTIME 1000
#définir ORANGETIME 500
//L'utilisation des macros de préprocesseur #define rendra votre //code plus facile à lire, écrire, mettre à
jour et déboguer /* Carte des broches 0 ROUGE 1 ORANGE 2 VERT 3 fois 4 fois 5 ROUGE 6 ORANGE 7
VERT */
void main()
{ TRISB=0;//Définir PORTB sur Sortie
tandis que(1)
{

2021-2022 63
Chapitre 5: MicroC pour microcontrôleur
PIC

Programmation du microcontrôleur Pic en MikroC


Exemple 2: Ce programme permet de créer un système de feux de circulation en marche , Par souci de
simplicité, votre système de circulation ne sera que pour deux routes, chacune équipée de trois LED,
ROUGE1=1 ;
ORANGE1=0;
VERT1=0 ;
ROUGE2=0 ;
ORANGE2=0;
VERT2=1 ;
delay_ms(REDTIME);
ROUGE1=1 ;
ORANGE1=0;
VERT1=0 ;
ROUGE2=0 ;
ORANGE2=1 ;
VERT2=0 ;
delay_ms(ORANGETIME);
ROUGE1=0 ;
ORANGE1=1 ;
VERT1=0 ;
2021-2022 64
Chapitre 5: MicroC pour microcontrôleur
PIC

Programmation du microcontrôleur Pic en MikroC


Exemple 2: Ce programme permet de créer un système de feux de circulation en marche , Par souci de
simplicité, votre système de circulation ne sera que pour deux routes, chacune équipée de trois LED,
ROUGE2=1 ;
ORANGE2=0;
VERT2=0 ;
delay_ms(ORANGETIME);
ROUGE1=0 ;
ORANGE1=0;
VERT1=1 ;
ROUGE2=1 ;
ORANGE2=0;
VERT2=0 ;
delay_ms(REDTIME);
ROUGE1=0 ;
ORANGE1=1 ;
VERT1=0 ;
ROUGE2=1 ;
ORANGE2=0;

2021-2022 65
Chapitre 5: MicroC pour microcontrôleur
PIC

Programmation du microcontrôleur Pic en MikroC


Exemple 2: Ce programme permet de créer un système de feux de circulation en marche , Par souci de
simplicité, votre système de circulation ne sera que pour deux routes, chacune équipée de trois LED,
VERT2=0 ;
delay_ms(ORANGETIME);
ROUGE1=1 ;
ORANGE1=0;
VERT1=0 ;
ROUGE2=0 ;
ORANGE2=1 ;
VERT2=0 ;
delay_ms(ORANGETIME);
}
}

2021-2022 66
Chapitre 5: MicroC pour microcontrôleur
PIC

Programmation du microcontrôleur Pic en MikroC


Exemple 3: clignotement de 8 LED
Le but de cet exemple est de faire clignoter 8 LED de couleur rouge connectées au port B du PIC16f877A
de 8MhZ correspondant aux broches allant de RB0 jusqu'à RB7 (Figure ci-dessous). Les LED s’allument
pendant une seconde et s’éteignent pendant la seconde suivante.

2021-2022 67
Chapitre 5: MicroC pour microcontrôleur
PIC

Programmation du microcontrôleur Pic en MikroC


Exemple 3: clignotement de 8 LED

//Programme source
//Editeur du compilateur MikroC Pro V6
void main()
{
trisb =0x00;
do
{
portb=0x00;//port B reçoit 0x00
delay_ms(1000);//pause d’une seconde
portb=0xff;//port B reçoit 0xFF
delay_ms(1000);//pause d’une seconde
}while(1); //boucle do-while (boucle // infinie avec while(1) )
}

2021-2022 68

Vous aimerez peut-être aussi