Académique Documents
Professionnel Documents
Culture Documents
Chapitre IV :
Programmation du PIC16F84
Plan
-------------------------------------------------------------------------------------
1. Introduction
2. Le langage assembleur
3. Règles de rédaction en langage d'assemblage
4. Le jeu d'instruction et modes d'adressage du PIC 16F84
5. Le logiciel MPLAB
6. Le programmateur
7. Le logiciel ISIS Proteus
8. Applications (Voir TD/TP)
1. INTRODUCTION
- Maintenant que nous avons acquis les rudiments du microcontrôleur .Il est le temps de passer à
pratique.
- Au début on a créé un programme qui répond au cahier des charges de notre projet.
Pour créer le programme source il faut uniquement un éditeur de texte, un logiciel spécifique
permet de compiler le programme. (le plus connu MPLAB chez microchip) c'est - à - dire la
transformation du programme source en un programme dit hexadécimal ou Binaire, suite de 0 et
1.
- Une fois compilé le fichier source est transféré via un logiciel approprié vers la mémoire de
programme du PIC, Cette logiciel appelé « ic-prog » ou bien on utilise un logiciel de simulation
ISIS.
- Cette dernière opération de transformation du programme à mémoire de PIC, elle est faite à
l'aide d'un outil appelé «programmateur des PICs ».
2. LE LANGAGE ASSEMBLEUR
- Le langage assembleur est une interface entre l'homme et le microcontrôleur pour la
compréhension d'un programme.
- En effet, il est difficile pour l'homme d'écrire ou de comprendre une représentation binaire
d'une suite d'instructions .Quant au microcontrôleur, il ne reconnaît qu'une suite de 0 et de 1
(langage binaire).
- Pour une représentation plus explicite d'un langage binaire on utilise le langage assembleur ou
les instructions sont représentées par leur mnémonique .un fichier source contient le programme
écrit dans un langage compréhensible pour l'homme. Edité sous le format ASCII, il décrit sous
une forme le plus souvent mnémonique les instructions que doit exécuter le microcontrôleur.
65 Prof. KHOULJI S.
Microcontrôleur
3. REGLES DE REDACTION EN LANGAGE D'ASSEMBLAGE
3.1. Les pseudo-instruction ou directives d'assemblage .
- Les directives ne sont utiles qu'un logiciel d'assemblage, elles ne font pas partie du programme.
La directive ORG précise à l'assembleur ou sont implantés les codes machines dans la
mémoire de programme. Elle s'écrit après une tabulation (un espace minimum).
On peut placer plusieurs ORG dans un programme.
La directive LIST détermine le type de microcontrôleur utilisé.
Exemple :
LIST P = 16F84
La directive END précise ou doit s'arrêter l'assemblage, les instructions situées après sont
ignorées. En aucun cas cette directive ne signifie la fin du programme.
La directive CONFIG permet de définir les paramètres de fonctionnement du PIC
CONFIG_CP_OFF & _WDT_OFF &_PWRTE_ON & _HS_OSC
Chaque définition est séparée par le symbole &.
- Dans l'exemple ci-dessus le bit CP est à 0, le bit WDT (watchdog) est à 0, le bit PWRTE est à 1
et le terme HS définit le type d'horloge utilisé.
66 Prof. KHOULJI S.
Microcontrôleur
- La macro se termine par la directive << endm >> ( end of macro ).
Exemple de définition :
ALUM macro
Bsf led ;( mise à 1 du bit correspondant à led ) Endm
67 Prof. KHOULJI S.
Microcontrôleur
4.1.2. Adressage direct.
- Le code opératoire est suivi d'un octet non signé qui est l'adresse effective (on appelle adresse
effective, l'adresse qui est directement manipulée par l'instruction) de l'opérande à traiter.
68 Prof. KHOULJI S.
Microcontrôleur
4.2.3. L'INSTRUCTION « DECF » (DECrement File)
SYNTAX: DECF F,D ; (F) - 1 > (D) ,D=0 ou 1
- La valeur contenue dans le registre fichier F est décrémenté de 1. si D=0, le résultat sera alors
dans le registre W. si D=1, le résultat est stocké dans le registre F.
- Les bits du STATUS affectent Z
4.2.6. L'INSTRUCTION « MOVWF » (MOVe W to File) SYNTAX: MOVWF F ; (W) > (F)
- Déplace le contenu du registre W dans le registre fichier F.
69 Prof. KHOULJI S.
Microcontrôleur
- Les bits du STATUS affectent : Z
70 Prof. KHOULJI S.
Microcontrôleur
4.2.20. L'INSTRUCTION << RRF >> ( ROTATE RIGHT THROUGH
CARRY) SYNTAX: RRF F,D ; (F) Rotation droite avec CARRY-> (D) =0 ou
1.
- Le contenu dans le registre fichier F est décalé de 1 bit vers la droite . Le bit qui s'intercale est
le reflet du drapeau de retenue. si D=0, le résultat sera alors dans le registre W. Si D=1, le
résultat est stocké dans le registre F.
- Les bits du STATUS affectent : C
4.2.24. L'INSTRUCTION << INCFSZ >> (INCrement F, Skip if Zero) SYNTAX: INCFSZ
F,D ; (F) + 1 -> (D) : SAUT SI (D) = 0 , D=0 ou 1.
- La valeur contenue dans le registre fichier Fest incrémentée de 1. Si D=0, alors le résultat sera
dans le registre W. si D=1, le résultat est stocké dans le registre F.Si le résultat est nul,
l'instruction suivante est alors sautée.
71 Prof. KHOULJI S.
Microcontrôleur
4.2.28. L'INSTRUCTION << RETLW >> (RETurn with Literal in W) SYNTAX: retlw k ;
(w) = k puis return ; K compris entre 0 et 255.
Instruction utilisée lors d'un retour d'un sous-programme. Le registre W est chargé avec la valeur
littérale K et le PC avec la valeur de l'adresse de retour (la pile).
EXEMPLE:
CALL LAS-BAS ; appelle le sous programme LAS-BAS.
; autres instructions.
LAS-BAS RETLW 0X30 ; le registre W est chargé avec la valeur 30 ; et retour au programme
principal.
72 Prof. KHOULJI S.
Microcontrôleur
5. Le logiciel MPLAB :
- Est un logiciel outil de développement fourni gratuitement par la société Microchip . Il
comprend un éditeur, un assembleur et un simulateur. Il permet la programmation des
composants ( PICs ) en connectant entre l'ordinateur et le programmateur a l'aide d'un logiciel
appelé "ICPROG".
Pour créer un projet sur MPLAB X IDE voici toutes les étapes sur ce lien
:https://www.youtube.com/watch?v=NO9GyHF-MFQ
6. LE PROGRAMMATEUR :
- Une fois le programme compilé, il faut le transférer dans la mémoire du microcontrôleur. Pour
cela il vous faut, Une petite interface matérielle (figure : 2-1 )
- Est l'élément qui permet de charger le programme dans la mémoire du PIC. Il est relié à
l'ordinateur par une liaison série ou parallèle, le programmateur n'a pas les supports pour tous les
PICs .
-A base de pic 16F84 nous gérons un afficheur à cristaux liquides (LCD), seize caractères sur
deux lignes pour afficher un message.
- Avec bouton marche permet de lancer l'écriture de ce message
- transformation des données sur huit bits
- Une led allumée pendant le temps d'écriture
- Un potentiomètre permet de régler le contraste de l'afficheur
- Utilisant un oscillateur XT à quartz 4 MHZ pour cadence le PIC .
- Utilisant battrait de 9 V et alimentation stabiliser fournir un tension de 5V.
Afficheur LCD :
Introduction :
73 Prof. KHOULJI S.
Microcontrôleur
- Dans notre projet on utilise un afficheur à cristaux liquides, donc il faut connaître le principe de
fonctionnement
- Les afficheurs à cristaux liquides , autrement appelés afficheurs LCD (Liquid Crystal Display)
figure :2-2 .Sont des modules compacts intelligents et nécessitent peu de composants externes
pour un bon fonctionnement .Ils consomment relativement peu de 1 à 5 mA ; les afficheurs sont
caractérisés par le nombre de caractères affichables ainsi que par le nombre de lignes disponibles
.Dans notre exemple l'afficheur possède seize caractères sur deux lignes,soit trente-deux
caractères .
-Un circuit intégré spécialisé est chargé de la gestion du module . Il remplit une double fonction
d'une part il commande l'afficheur et de l'autre se charge de la communication avec l'extérieur.
Voire (figure : 2-3 )
74 Prof. KHOULJI S.
Microcontrôleur
1 : Lecture (le contrôleur nous offre la possibilité de lire certain paramètres
interne à l'afficheur.)
C'est l'horloge de l'afficheur,celle-ci va cadencer et valider touts
6 E les échange (transfert d'instruction ou bien pour l'affichage d'un caractère).
7 D0
8 D1
Permettent de transmettre un ordre à l'afficheur selon un code déterminé
9 D2
10 D3 Exemple : effacement.
11 D4
12 D5
13 D6
14 D7
15 A Anode rétroéclairage (+5V)
-Les broches de données permettent également d'afficher un caractère selon le code fournit avec
l'afficheur, il est ainsi possible d'afficher des caractères spéciaux. Ces codes sont mémorisés dans
la CG RAM (Caractère Générator), chaque caractère est formé sur une matrice 5*8 points, Voire
(Tableau 2-2).
- Le transfert peut se faire sur l'ensemble des huit bites (D0 à D7) ou bien sur quatre bits (D4 à
D7) , dans ce dernier cas on économise quatre lignes du PIC mais il faut réaliser le transfert en
deux fois , le choix de huit lignes ou quatre lignes se fait par programme selon le positionnement
de certains bits (voir le tableaux qui suivent).
75 Prof. KHOULJI S.
Microcontrôleur
Organigramme :
COMMENTAIRES
-On utilisera les registres
retard1, retard2 .
-Le port B dans notre exemple est Programmé en sortie et le port A Partiellement en sortie
(RA4 en entrée). -On paramètre l'afficheur en 2 lignes Validation afficheur et curseur
8 bits de données Effacement de l'afficheur .
Déplacement du curseur vers la droite
-Si l'inter est actionné on affiche les caractères.
-On envoie le cod ASCII du 1er caractère à afficher.
-On valide avec une impulsion sur la broche e ( RA2 du port A ) .
-On envoie le cod ASCII du nième caractère à afficher.
-On valide avec une impulsion sur la broche e ( RA2 du port A ) .
-Si l'inter est relâché on refait
l'initialisation de l'afficheur puis on recommence le cycle d'affichage .
76 Prof. KHOULJI S.