Vous êtes sur la page 1sur 28

L.P.

GABES

Objectifs :
OO.1 : Identifier un µC. OO.2 : Programmer des applications sous Flowcode
V5.
OO.3 : Etudier les interruptions d’un µC.
OO.4 : Mettre en œuvre le registre timer TMR0 d’un µC.
OO.5 : Appliquer une méthode de résolution d’un problème de logique programmé.
I- Mise en situation:
 Réaliser l’activité de découverte .
Compléter par : logique programmée, 16F628A, 16F84A, programme chargé, le circuit programmable.

Avec le même microcontrôleur PIC……………………….………….., on a pu réaliser deux applications


différentes. La différence s’aperçoit à travers le …………………………….. dans le circuit programmable.
Le µC fait partir de la …………………………………………..………………..

II- Les microcontrôleurs PIC de la famille Microchip:


1) Présentations des µC.
 Voir manuel de cours aux pages 170, 171, 172, 173, 174, 175, 176, 177 et 178.
 Réaliser les exercices 1,2 et 3 du manuel de cours aux pages 180 et 181.
2) Simulation des applications sous Flowcode.
a) Présentation du logiciel Flowcode.

Le logiciel payant Flowcode, vous permet de créer des programmes relativement complexes pour les
microcontrôleurs de la famille des PIC.
Flowcode vous permet de créer des applications pour des microcontrôleurs en sélectionnant et plaçant
des icônes sur un organigramme pour créer des programmes simples. Ces programmes peuvent
contrôler des périphériques externes connectés au microcontrôleur comme des LEDs, un afficheur LCD
etc.
Une fois que l’organigramme est élaboré, Flowcode vous permet de simuler son comportement avant
de le compiler, de l’assembler et de le transférer dans un microcontrôleur PIC
Pour atteindre cet objectif avec Flowcode, il suffit de réaliser les étapes suivantes :
1. Créer un nouvel organigramme, spécifier le microcontrôleur cible que vous utiliserez au final.
2. Sélectionner et faire glisser les icônes de la barre d’outils sur l’organigramme pour programmer
votre application.
3. Ajouter les périphériques externes nécessaires en cliquant sur les boutons correspondants dans
la barre d’outils des composants, éditer leurs propriétés, spécifier comment ils sont connectés au
microcontrôleur et appeler les macros correspondants aux périphériques utilisés.
4. Faire tourner la simulation pour vous assurer que l’application se comporte comme vous le
voulez.
5. Transférer l’application dans le microcontrôleur cible en compilant le programme en C, puis en
l’assemblant et finalement en produisant le code objet.
L’environnement de Flowcode consiste en une aire de travail principale dans laquelle s’affiche
l’organigramme, plusieurs barres d’outils qui vous permettent d’ajouter des icônes et des composants à
votre application, trois fenêtres spécifiques pour montrer l’état du microcontrôleur ainsi que les

Les µC __- __ PIC __-__ Page: 1 / 28


L.P.GABES

composants attachés et enfin deux fenêtres qui montrent les variables et les appels de macros lorsque
vous simulez votre application.
b) Exemples.
▪Exemple -1- Clignotement d’une diode LED.
Une diode LED branchée sur RA2 clignote périodiquement 2s.
La LED est initialement éteinte.
* Répondre par OUI ou NON.
- La broche RA2 est configurée en entrée : ……….….
- La broche RA2 est configurée en sortie : …………….
* En utilisant les symboles graphiques suivants, traduire le cahier de charge en un programme.
DÉBUT BOUCLE FIN BOUCLE
DÉBUT PROGRAMME FIN PROGRAMME
TANT QUE 1=1 FAIRE TANT QUE

A2 REÇOIT 0 A2 REÇOIT 1 PAUSE 1S

* Programme :

Retaper cet algorigramme sous Flowcode tout en se reposant sur le mini guide suivant :

Les µC __- __ PIC __-__ Page: 2 / 28


L.P.GABES

* Simulation :
Simuler votre programme précédent en respectant la démarche suivante :

* Compilation:
La compilation consiste à traduire le programme source déjà édité en un fichier exécutable ( .Hex )
Compiler alors votre programme en respectant la démarche suivante :

Les µC __- __ PIC __-__ Page: 3 / 28


L.P.GABES

* Simulation:
La simulation est une phase très importante. Elle nous informe sur le comportement du système réel
avant de charger le programme étudié dans le µC.
Sous Isis8, charger votre fichier (.Hex)dans le µC et tester votre application.

* Transfert:
Le transfert est une opération d’implantation d’un programme dans un microcontrôleur. Le transfert de
fichier ( .hex ) vers le microcontrôleur exige deux composantes :
Composante ………….…………………… : ……………..……………………. ;
Composante …….…………….…..……..……… : ………….……….…….…………..…….. ;

Charger alors votre fichier ( .hex ) dans le microcontrôleur en se reposant sur la démarche suivante :

Les µC __- __ PIC __-__ Page: 4 / 28


L.P.GABES

* Essai:

L’essai consiste à mettre le microcontrôleur dans la carte électronique pour valider le fonctionnement.

Valider votre projet en utilisant la valise PIC qui se trouve dans votre laboratoire de Génie Electrique.

Ainsi, pour traduire un cahier de charge en un programme exécutable par un PIC quelconque, il faut

toujours suivre le parcours suivant :

▪Exemple -2- Fonction logique NAND

Retaper l’algorithme ci-dessous sous Flowcode et valider votre travail expérimentalement.

Les µC __- __ PIC __-__ Page: 5 / 28


L.P.GABES

Boucle infini « structure répétitive »

L’icône « Entrée » lit le port spécifié ou certains bits seulement du port)


Et place le résultat dans la variable spécifiée

2- Cliquer 2 fois sur l’icône entrée puis cliquer sur variable puis BD
Sur variables Ajout Nouveau

Ajouter Nouveau
Effacer non utilisé(s)

▪Exemple -2- Fonction logique NON : S= a S


3- Déclarer une variable a de type Booléenne RB1 RB2
1- Sous Flowcode, en utilisant le PIC16F877A, retaper l’algorithme de S en s’aidant de la démarche
suivante :

On lit l’état logique de la broche RB1 et on place le résultat à la variable a

4- - Cliquer 2 fois sur la décision « Test » et introduire la variable a

Les µC __- __ PIC __-__ Page: 6 / 28


L.P.GABES

5- Cliquer 2 fois sur l’icône sortie La sortie est sur la broche RB2

Bit unique

Placer la valeur que doit prendre la sortie RB2 : 1 ou 0 suivant le résultat du test
Si a=1 le bit 2 du Port B reçoit la valeur 0 si non il reçoit la valeur 1

N.B On peut écrire la valeur en hexadécimal (précédée par 0x) ou binaire (précédée par 0b)
Finalement on obtient l’algorigramme suivant :

Simulation :(Utilisation du panneau de simulation)


A partir de la boite outils de composant Cliquer sur un composant Switch et un composant LED

Les µC __- __ PIC __-__ Page: 7 / 28


L.P.GABES

7- Connexion des composants


BD sur switch à partir du panneau
puis propriétés Ext

BD sur switch à partir du panneau puis connexion « le bouton est connecté à la broche RB1)

BD sur LED à partir du panneau puis propriétés Ext Choisir la forme et la couleur de la diode

La diode est connectée à la broche RB2

Toujours valider par terminé


Les µC __- __ PIC __-__ Page: 8 / 28
L.P.GABES

8- Lancer la simulation

▪Exemple -3- Fonction logique NOR à deux entrées :


a b S
On se propose de réaliser cette fonction S = a ↓b par plusieurs méthodes avec :
RB1 RB2 RB3
1ière méthode : En faisant des tests sur les différentes variables a et b.

Les µC __- __ PIC __-__ Page: 9 / 28


L.P.GABES

a) Retaper cet algorigramme sous Flowcode et simuler-le sous Isis8.

b) Charger ce programme dans le µC et vérifier


expérimentalement le bon fonctionnement.
ième
2 méthode : Avec l’icône CALCUL (Les
variables a et b et S sont de types booléenne) « bit »

Les µC __- __ PIC __-__ Page: 10 / 28


L.P.GABES

▪Exemple -4- Programmation de plusieurs fonctions logiques :

Soit à programmer les équations suivantes: S1 = a+b , S2 = ,S3 = a.b , S4 = a  b , S5 = ab

Entrées Sorties

entrées Brochage pic sorties Broches pic 16F84A

a RA0 S1 RB0
b RA1 S2 RB1
S3 RB2
S4 RB3
S5 RB4

1°) Compléter le tableau puis taper l’algorigramme sous Flowcode, enregistrer puis, simuler.
PORTA= 31 PORTA= 21 PORTA=1 PORTA=1
ba
S 11100100S1S2S3S4S5
1 1 1 0
0 1 1 1
TRISA= 1 1 1 1
D’
0 1 1 0
0 1 1 1
TRISB=
D’ PORTB=1 PORTB=1 PORTB= 111 PORTB= 181

 Algorigramme avec l’icône CALCUL


Si PORTA=
D’ 1 0
1

PORTB=
Si PORTA=
D’ D’ 0
1

Si PORTA=
D’ 0
1

PORTB=
Si PORTA=
D’ D’ 0
1

PORTB=
D’

TRISB=
D’

Les µC __- __ PIC __-__ Page: 11 / 28


L.P.GABES

Charger ce programme dans le µC et vérifier expérimentalement le bon fonctionnement.

▪Exemple -5- Mémoire à arrêt prioritaire : Activité N°10 du manuel d’actvités à la page 140.

a a m Sortie
RA0 RA1 RB0

m X
X = …………………………………………………………………………….

X
Déclarer 3 variables de types Booléennes « a », « m » et « X »

Mémoire à marche prioritaire

a m Sortie
RA0 RA1 RB0
a

m X
X= m + a . X

▪Exemple -6- Activité N°7 du manuel d’activités à la page 130.


▪Exemple -7- Système de vote – Activité N°8 du manuel d’activités à la page 136 – Système combinatoire
Trois délègues d’entreprise représente respectivement le nombre de voix suivantes :
A = 350 voix, b = 250 voix et c = 150 voix.
Pour être acceptée lors des réunions, une proposition doit recueillir au moins 400 voix des voix
représentées.
1/ Compléter la table de vérité suivante : 2/ Déduire l’équation logique simplifiée :
ab
c b a S 0001111001
0 0 0 Sc = . . . . . . . . . . . . . . . . . . . . . . . .
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
3/ Taper l’algorigramme ci-dessous sous Flowcode puis tester-le.

Les µC __- __ PIC __-__ Page: 12 / 28


L.P.GABES

Déclarer les variables X0, X1, X2,


X3, dcy, a, b et c de type
booléennes

Initialiser les étapes du grafcet

Boucle infini

GRAFCET PC GRAFCET codé microcontrôleur


Exemple -8- Système de perçage – GRAFCET.
On vous donne le Grafcet PC du système de perçage et le tableau 0 0
d’affectation des entrées Dcy …….
Affectation des /sorties
capteurs pour le microcontrôleur PIC 16F84A :
Entrées Sorties 1 14M1 1 ….
Broches Broches a …….
Capteurs Préactionneur
pic pic
Dcy RB0 14M1 RA0 2 KM2 2 …...
a RB1 KM2 RA1 b …..
b RB2 12M1 RA2
c RB3 3 12M1 3 ……...
c …
Taper l’algorigramme ci-dessous
L’icône de calcul et les
pour écrire vérifier le bon fonctionnement.
équations de chaque étape
Marche prioritaire ou arrêt
prioritaire

Commander les sorties

Les µC __- __ PIC __-__ Page: 13 / 28


L.P.GABES

Activité -9- Gestion d’un afficheur LCD.


1- Lancer un nouveau projet
2- Choisir le Pic
3- A partir de la boite outils composants ajouter composant LCD

Il apparait dans le panneau :

4- Glisser vers la zone de travail deux icônes « Routine composant »

Les µC __- __ PIC __-__ Page: 14 / 28


L.P.GABES

5- Paramétrer les routines composants comme indiqué sur l’algorigramme

6- Pour afficher des caractères sur l’LCD, utiliser la macro: Ecrit_caractère.

Simuler le fonctionnement. Sur le panneau, on visualise:

Les µC __- __ PIC __-__ Page: 15 / 28


L.P.GABES

7- Ajouter la routine « Curseur »

Activité – 10 - : Gestion d’un afficheur LCD COMPTEUR


1- Lancer un nouveau projet
2- Choisir le Pic
3- A partir de la boite outils composants ajouter composant LCD

Sur le panneau, on visualise:

4- Saisir l’algorigramme suivant :

Les µC __- __ PIC __-__ Page: 16 / 28


L.P.GABES

5- Ajouter une entrée de remise à zéro

Les µC __- __ PIC __-__ Page: 17 / 28


L.P.GABES

Activité -11- Gestion d’un Clavier.


1- Lancer un nouveau projet
2- Choisir le Pic
3- A partir de la boite outils composants ajouter un LCD et un Keypad
Sur le panneau, on visualise

4- Glisser vers la zone de travail une boucle et deux icônes « Routine composant »

Les µC __- __ PIC __-__ Page: 18 / 28


L.P.GABES

5- Paramétrer les routines composants comme indiqué sur l’algorigramme

6- Lire la touche appuyée et affectée sa valeur à la variable K

7- Tester K:
K : de 0  255
Si aucune touche n’est enfoncée alors le test recommence

Les µC __- __ PIC __-__ Page: 19 / 28


L.P.GABES

Si une touche est enfoncée alors elle sera affichée sur le LCD

8- Algorigramme

Les µC __- __ PIC __-__ Page: 20 / 28


L.P.GABES

III- Les interruptions:


1) Définition :
 En se basant sur l’animation préparée par le professeur, énumérer les sources des interruptions.
Une interruption provoque l’arrêt du programme principal pour aller exécuter une procédure
d'interruption. A la fin de cette procédure, le microcontrôleur reprend le programme à l’endroit où il
s’était arrêté. Le PIC16F84 par exemple possède 4 sources d'interruption. A chaque interruption on
associe deux bits: un bit de validation et un bit de drapeau. Le premier permet d'autoriser ou non
l'interruption, le second permet au programmeur de savoir de quelle interruption il s'agit. Tous ces bits
sont dans le registre INTCON à part le drapeau EEIF de l'interruption EEI qui se trouve dans le
registre EECON1.
GIEEEIET0IFINTERBIET0IFINTFRBIF---
INTCON
EEIFWRERRWRENWRRDOPTION_REGRBPUINTEDGTOCSTOSEPSAPS2PS1PS0

2) Sources d’interruptions
EECON1
Le nombre de sources d’interruptions dépend de type du microcontrôleur utilisé.
Microcontrôleur 16F84A 16F628A 16F88 16F876A 16F877A
Sources d’interruptions 4 10 12 14 15
3) Différents types d’interruptions
On distingue deux types d’interruptions:
 Les interruptions externes, qui sont déclenchées lorsqu’un
événement exterieur se produit tels que le changement
d’état d’une entrée destinée à l’interruption.
 Les interruptions internes, qui sont déclenchées par le
déroulement du pro- gramme tels que le résultat d’un
calcul ou le débordement d’un Timer.
4) Registre de configuration des interruptions (INTCON):

Les µC __- __ PIC __-__ Page: 21 / 28


L.P.GABES

Le registre de configuration des interruptions est en lecture et écriture. Il permet de configurer les
différentes sources d’interruptions.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


GIE PEIE TOIE INTE RBIE TOIF INTF RBIF

 Bit 7: GIE = Global Interrup Enable bit


1 = Autorise toutes les interruptions non masquées par leur bit individuel.
0 = Désactive toutes les interruptions.

 Bit 6: PEIE = Peripheral Interrupt Enable bit.


1 = Autorise les interruptions causées par les périphériques.
0 = Désactive les interruptions causées par les périphériques.

 Bit 5: TOIE = Timer TMR0 Overflow Interrup Enable bit.


1 = Autorise l’interruption du Timer TMR0.
0 = Désactive l’interruption du Timer TMR0.

 Bit 4: INTE = RB0/Int Interrup Enable bit.


1 = Autorise l’interruption sur la broche : RB0
0 = Désactive l’interruption sur la broche : RB0
 Bit 3: RBIE = RB Port Change Interrup Enable bit.
1 = Autorise l’interruption par changement d’état du Port B (RB4 à RB7).
0 = Désactive l’interruption par changement d’état du Port B (RB4 à RB7).
 Bit 2: TOIF = Timer TMR0 Overflow Interrup Flag bit.
Ce bit est un indicateur ou drapeau (Flag); il est mis à 1 si une interruption est générée par le
débordement du TMR0.
1 = Le Timer a débordé.
0 = Le Timer n’a pas débordé.
Ce drapeau doit être remis à zéro par le programme de traitement de l’interruption.

 Bit 1: INTF = RB0/Int Interrup Flag bit.


1 = Une interruption sur la broche RB0 est survenue.
0 = Pas d’interruption sur la broche RB0.
Ce drapeau doit être remis à zéro par le programme de traitement de l’interruption.

 Bit 0: RBIF = RB Port Change Interrup Flag bit. Ce drapeau doit être remis à zéro par le
programme.
1 = Quand au moins une entrée du port B (de RB4 à RB7) a changé d’état.
0 = Aucune entrée de RB4 à RB7 n’a changé d’état.

NB : dans le cas du 16F84 le bit 6 sert à gérer l’interruption causée par la fin

Les µC __- __ PIC __-__ Page: 22 / 28


L.P.GABES

d’écriture dans l’EEPROM, il est donc impératif de revenir au document constructeur pour plus de
détails.

5) L'interruption INT (Entrée RB0 du port B)


Cette interruption est provoquée par un changement d'état sur l'entrée RB0 du port B quand
elle est programmée en entrée. Elle est gérée par les bits :
- INTE : bit de validation (1=oui,0=non)
- INTF : drapeau
- INTEDG : front de déclenchement, 1=montant, 0=descendant (registre OPTION_REG)
L’interruption est autorisée si le registre INTCON = $90

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


GIE PEIE TOIE INTE RBIE TOIF INTF RBIF
1 0 0 1 0 0 0 0

Lorsque l’interruption a eu lieu, le registre INTCON = $12

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


GIE PEIE TOIE INTE RBIE TOIF INTF RBIF
0 0 0 1 0 0 1 0
6) Exemples:
a) Compléter, en code Bin et Hexa, le mot que doit recevoir le registre INTCON lorsqu’on :
 Désire appliquer une interruption sur RBO.
GIE EEIE TOIE INTE RBIE TOIF INTF RBIF

… … … … … … … …

INTCON = ………..Hex

 Désire activer TMR0.


GIE EEIE TOIE INTE RBIE TOIF INTF RBIF

… … … … … … … …

INTCON = ……….. Hex

b) Réaliser les exercices 1, 2 et 3 du manuel d’activités à la page 189.


Le programme principal se déroule
1
normalement.

Une interruption survient sur (RB0),


2
le microcontrôleur :

Exécute les instructions de la procédure



(instructionY0 -> Fin procédure)

Termine l’instruction en cours de traitement



(instruction Xn)

REVIENT à l’instruction qui suit


Les µC __- __ PIC __-__ Page: 23 / 28


L.P.GABES

immédiatement la dernière instruction

exécutée dans programme principal

(instruction Xn+1)

Saute vers la routine d’interruption (début

procédure)

c) En se référant au schéma de déroulement d’une interruption ci-dessous, mettre dans l’ordre les
tâches exécutées par le microcontrôleur.
d) Réaliser l’activité N°15 du manuel d’activités à la page 149.
 Analyse de fonctionnement :
Bp = 0 (Fonctionnement normal) Bp = 1 (Interruption sur RB0/INT est active)

Feu Automobile Feu Automobile

RA0 R 0s RA0 R 20 s

RA1 O 0s
RA1 O 10 s

RA2 RA2
V Infiniment V 0s

Feu Piéton Feu Piéton

RA3 RA3
V 0s V 20 s

RA4 R Infiniment RA4 R 0s

 Algorigramme sous Flowcode :

Les µC __- __ PIC __-__ Page: 24 / 28


L.P.GABES

IV- Les Timers :

1) Définition :

Le Timer (TMR0) est un module intégré dans les microcontrôleurs type PIC. Il assure la fonction d’un

compteur ascendant à 8 bits qui peut être chargé intialement. Il s’incrémente à chaque coup de

l’horloge interne jusqu’à ce que le débordement ait lieu (passage de FF à 00) ; ou à chaque

changement de niveau logique sur la broche RA4. Le choix de la source d’incrémentation et de mode

de fonctionnement se fait par programmation.

Le nombre des timers dans un PIC vari selon de type de celui-ci. Par exemple le PIC 16F84A ne

contient qu’un seul timer TMR0 de 8 bits et les µC 16F628A, 16F877A et 16F88 contiennent chacun 3

timers : 1 TMR0 de 8 bits et 2 timers (TMR1 +TMR2) de 16 bits

2) Configuration de TMR0

Afin de configurer ce Timer, on fait recours au registre interne du PIC (16F84A ou 16F628 ou

16F877A ou …) OPTION_REG

Les µC __- __ PIC __-__ Page: 25 / 28


L.P.GABES

*Ce Timer est incrémenté en permanence soit par l’horloge interne Fosc/4 (mode timer) soit par une
horloge externe appliquée à la broche RA4 du port A (mode compteur). Le choix de l'horloge se fait à
l'aide du bit T0CS du registre OPTION_REG
o TOCS = 0 : horloge interne

o TOCS = 1 : horloge externe appliquée à RA4

* Dans le cas de l'horloge externe, on peut choisir le front sur lequel le TIMER s'incrémente

o TOSE = 0 : incrémentation sur fronts montants

o TOSE = 1 : incrémentation sur fronts descendants

* Quel que soit l'horloge choisie, on peut la passer dans un diviseur de fréquence programmable
(prescaler) dont le rapport est fixé par les bits PS0, PS1 et PS2 du registre OPTION_REG
L'affectation ou non du prédiviseur se fait à l'aide du bit PSA du registre OPTION_REG
e) En se basant sur la simulation préparée par le professeur, vérifier le bon fonctionnement de deux
schémas ci-dessous.

o PSA = 0 : on utilise le prédiviseur comme suit :

o PSA = 1 : pas de prédiviseur (affecté au chien de garde)

Les µC __- __ PIC __-__ Page: 26 / 28


L.P.GABES

• Le contenu du timer TMR0 est accessible par le registre qui porte le même nom. Il peut être lu

ou écrit à n'importe quel moment. Après une écriture, l'incrémentation est inhibée pendant deux

cycles instruction

• Au débordement de TMR0 (FF à 00), le drapeau T0IF est placé à 1. Ceci peut déclencher

l'interruption T0I si celle-ci est validée

o Remarques :

• Les fonctions des deux bits de gauche de ce registre ne sont pas données. Ces deux bits sont

utilisés pour d'autres ressources du PIC.

3) Activité : Exemple 1 du manuel de cours à la page 194.

Contrairement au Flowcode, le logiciel de programmation graphique LogiPic permet un accès direct au

registre option_reg afin de configurer le timer TMR0.

Dans ce sens, tapez, sous LogiPic, l’algorigramme suivant :

Les µC __- __ PIC __-__ Page: 27 / 28


L.P.GABES

Pour configurer les registres TRISA, TRISB, PORTB, OPTION_REG,


TMR0
Suivre la démarche suivante :

Ensuite choisissez votre registre et configurez le :

Refaire le même travail afin de configurer le registre OPTION_REG comme suit :


0 0 1 0 0 0 0 1

Les µC __- __ PIC __-__ Page: 28 / 28

Vous aimerez peut-être aussi