uCONTROLEUR PIC 16F84
C.Rigot/Ph Dondon © Copyright 2000
Sommaire
Les outils de programmation de microcontrôleurs PICs *
· Définition des étapes de programmation d’un microcontrôleur PIC *
· Configuration du mode de développement : *
· Créer un nouveau projet simple: *
· Création d’un simple fichier source : *
Cet environnement MPLAB fonctionne actuellement avec tous les microcontrôleurs PIC. De plus il est multifenêtres, fonctionne sous Windows 3.1, 95, 98 et Me et permet de développer avec un maximum de confort toutes applications à base de microcontrôleurs PIC.
Il comporte :
Le simulateur intégré permet de tester toutes applications grâce à de multiples possibilités de visualisation des registres, de la mémoire et des entrées/Sorties du circuit simulé.
L’assembleur MPASM contenu dans MPLAB dispose de toutes les fonctions dont on peut avoir besoin :Il dispose de multiples modes d’affichages et permet ainsi de visualiser le contenu de registres, de mémoires particulières ou de ports d’entrées/sorties.
On peut afficher, dans une autre fenêtre le listing source du programme en cours d’exécution avec une mise en évidence de chaque instructions au fur et à mesure qu’elles s’exécutent. On peut alors détecter les erreurs de programmation facilement.
On peut modifier un programme en cours de simulation.
Le programmateur P16PRO est destiné à être relié à un PC.Pour programmer les microcontrôleurs PIC on utilise le logiciel PICALL.
Celui-ci a trois avantages majeurs :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| PIC16F83 |
|
|
|
|
|
|
| PIC16CR83 |
|
|
|
|
|
|
| PIC16C84 |
|
|
|
|
|
|
| PIC16F84 |
|
|
|
|
|
|
| PIC16F84A |
|
|
|
|
|
|
| PIC16CR84 |
|
|
|
|
|
|
| PIC16F627 |
|
|
|
|
|
|
| PIC16F628 |
|
|
|
|
|
|
| PIC16F870 |
|
|
|
|
|
|
| PIC16F871 |
|
|
|
|
|
|
| PIC16F872 |
|
|
|
|
|
|
| PIC16F873 |
|
|
|
|
|
|
| PIC16F874 |
|
|
|
|
|
|
| PIC16F876 |
|
|
|
|
|
|
| PIC16F877 |
|
|
|
|
|
|
| PIC16F73 |
|
|
|
|
|
|
| PIC16F74 |
|
|
|
|
|
|
| PIC16F76 |
|
|
|
|
|
|
| PIC16F77 |
|
|
|
|
|
|
| PIC16C432 |
|
|
|
|
|
|
| PIC16C432 |
|
|
|
|
|
|
| PIC16C505 |
|
|
|
|
|
|
| PIC12C508 |
|
|
|
|
|
|
| PIC12C508A |
|
|
|
|
|
|
| PIC12C509 |
|
|
|
|
|
|
| PIC12C509A |
|
|
|
|
|
|
| PIC12C518 |
|
|
|
|
|
|
| PIC12C519 |
|
|
|
|
|
|
| PIC12C671 |
|
|
|
|
|
|
| PIC12CE673 |
|
|
|
|
|
|
| PIC12C672 |
|
|
|
|
|
|
| PIC12CE674 |
|
|
|
|
|
|
| PIC14000 |
|
|
|
|
|
|
| PIC16C52 |
|
|
|
|
|
|
| PIC16C54 |
|
|
|
|
|
|
| PIC16C55 |
|
|
|
|
|
|
| PIC16C56 |
|
|
|
|
|
|
| PIC16C57 |
|
|
|
|
|
|
| PIC16C57C |
|
|
|
|
|
|
| PIC16C58 |
|
|
|
|
|
|
| PIC16C554 |
|
|
|
|
|
|
| PIC16C556 |
|
|
|
|
|
|
| PIC16C558 |
|
|
|
|
|
|
| PIC16C61 |
|
|
|
|
|
|
| PIC16C62 |
|
|
|
|
|
|
| PIC16C62A |
|
|
|
|
|
|
| PIC16C62B |
|
|
|
|
|
|
| PIC16CR62 |
|
|
|
|
|
|
| PIC16C63 |
|
|
|
|
|
|
| PIC16C63A |
|
|
|
|
|
|
| PIC16C64 |
|
|
|
|
|
|
| PIC16C64A |
|
|
|
|
|
|
| PIC16C64B |
|
|
|
|
|
|
| PIC16CR64 |
|
|
|
|
|
|
| PIC16C65 |
|
|
|
|
|
|
| PIC16C65A |
|
|
|
|
|
|
| PIC16C65B |
|
|
|
|
|
|
| PIC16C66 |
|
|
|
|
|
|
| PIC16C67 |
|
|
|
|
|
|
| PIC16C620 |
|
|
|
|
|
|
| PIC16C620A |
|
|
|
|
|
|
| PIC16C621 |
|
|
|
|
|
|
| PIC16C621A |
|
|
|
|
|
|
| PIC16C622 |
|
|
|
|
|
|
| PIC16C622B |
|
|
|
|
|
|
| PIC16CE623 |
|
|
|
|
|
|
| PIC16CE624 |
|
|
|
|
|
|
| PIC16CE625 |
|
|
|
|
|
|
| PIC16C710 |
|
|
|
|
|
|
| PIC16C71 |
|
|
|
|
|
|
| PIC16C711 |
|
|
|
|
|
|
| PIC16C712 |
|
|
|
|
|
|
| PIC16C716 |
|
|
|
|
|
|
| PIC16C72 |
|
|
|
|
|
|
| PIC16C73 |
|
|
|
|
|
|
| PIC16C73A |
|
|
|
|
|
|
| PIC16C73B |
|
|
|
|
|
|
| PIC16C74 |
|
|
|
|
|
|
| PIC16C74A |
|
|
|
|
|
|
| PIC16C74B |
|
|
|
|
|
|
| PIC16C76 |
|
|
|
|
|
|
| PIC16C77 |
|
|
|
|
|
|
| PIC16C717 |
|
|
|
|
|
|
| PIC16C770 |
|
|
|
|
|
|
| PIC16C771 |
|
|
|
|
|
|
| PIC16C773 |
|
|
|
|
|
|
| PIC16C774 |
|
|
|
|
|
|
| PIC16C745 |
|
|
|
|
|
|
| PIC16C765 |
|
|
|
|
|
|
| PIC16C923 |
|
|
|
|
|
|
| PIC16C924 |
|
|
|
|
|
|
| PIC16C715 |
|
|
|
|
|
|
| PIC16C642 |
|
|
|
|
|
|
| PIC16C662 |
|
|
|
|
|
|
Pour installer MPLAB, vous devez lancer le fichier MPL530.exe sur la première disquette d’installation.
Pour installer MPLAB vous devez :
Tapez a:\mpl530.exe dans le champ LIGNE DE COMMANDE.
Cliquez sur OK et suivez la procédure d’installation
Tapez a:\mpl530.exe dans le champ LIGNE DE COMMANDE.
Cliquez sur OK et suivez la procédure d’installation
Lors de l’installation je vous recommande d’installer
MPLAB sur un disque Local plutôt qu’un disque partagé sur
un réseau.
Lancer MPLAB en cliquant sur DEMARRER, PROGRAMMES,
MICROSHIP MPLAB, MPLAB.
Figure 3.1 : La fenêtre de travail sous MPLAB
Pour régler le mode de développement de MPLAB allez dans le menu
OPTIONS > DEVELOPMENT MODE et cliquez sur l’onglet TOOLS.
Ce menu permet de choisir les outils de développement et le type de microcontrôleur utilisé.
Figure 3.2 : La boîte de dialogue du mode de Développement
Sélectionnez MPLAB SIM simulator et choisissez le PIC16F84 car MPLAB supporte la simulation avec ce microcontrôleur. Cliquez sur OK.
Le simulateur est initialisé et vous devez voir PIC16F84 et SIM dans la barre d’état.
Vous êtes maintenant en mode simulation
pour le PIC16F84.
Pour avoir le fichier assemblé avec l’extension .hex, vous devez créer un projet. Par la suite une fois le fichier assemblé créé, vous n’avez pas besoin de vous resservir de l’environnement MPLAB pour programmer un PIC. Vous utilisez le fichier assemblé directement.
Pour créer un nouveau projet il faut aller dans le menu FILE > NEW.
Une boite de dialogue alors s’ouvre à vous
( figure 3.3 ).
Figure 3.3 : Boite de dialogue de création de projet
Cliquer YES, une autre boite de dialogue
s’ouvre alors ( figure 3.4 ) et vous demande où enregistrer votre
nom de projet et le lieu où vous voulez l’enregistrer.
Figure 3.4 : Boîte de dialogue pour un nouveau projet
Pour commencer nous allons appeler notre projet essai et nous allons le sauvegarder dans c:\program files\MPLAB. Par la suite vous pouvez choisir le nom de projet que vous voulez mais sachez que le fichier.hex portera le nom du projet.
Cliquez sur OK et une nouvelle fenêtre
s’ouvre alors ( figure 3.5 ). Il s’agit de la définition du Projet.
Figure 3.5 : Boîte de définition du Projet
Vérifiez que le DEVELOPMENT SETUP
est bien MPLAB SIM PIC 16F84 et que le LANGUAGE TOOL SUITE est bien
MICROCHIP.
Dans cette fenêtre vous devez trouver dans
la fenêtre PROJECT FILES essai[.hex]
Avant toutes choses, vous devez indiquer à MPLAB le format du fichier.hex. Pour Cela sélectionnez essai[.hex] et cliquez sur NODE PROPERTIES… Une nouvelle fenêtre apparait alors (figure 3.6)
Vérifiez que le LANGUAGE TOOL est bien MPASM
Pour la programmation du PIC 16F84 choisissez les mêmes options de format que la figure 3.6 et cliquez sur OK
Figure 3.6 : Node Properties
Apres avoir cliquez sur OK, vous revenez sur la fenêtre d’édition de projet (figure 3.5).
Cliquez maintenant sur ADD NODE…. Une fenêtre apparaît alors (figure 3.7) et vous demande le nom et l’endroit du fichier asm.
Figure 3.7 : Ajout de fichier ASM
Tapez le même nom de fichier que le nom du projet. Ici nous appellerons notre fichier essai.asm et nous le laisserons dans c:\program files\MPLAB
Puis cliquez sur OK.
Vous devez revenir sur la fenêtre d’édition de projet et vous devez voir apparaître en dessous de ESSAI [.hex] le fichier ESSAI [.asm] comme sur la figure 3.8.
Figure 3.8 : Boîte de définition du Projet
Cliquez maintenant sur OK pour revenir sur l’espace de travail MPLAB.
Voilà votre projet est maintenant bien
définit. Maintenant il vous reste à créer le fichier
source essai.asm.
Une fois cette fenêtre obtenue, enregistrez la en faisant FILE > SAVE AS… et appelez la essai.asm en prenant soin de l’enregistrer la où vous l’avez indiqué dans le projet. Pour notre cas il s’agit de C:\program files\MPLAB. (figure 3.9 )
Une fois le nom et le chemin choisis cliquez sur OK.
Figure 3.9 : Enregistrement du fichier source
Votre programme doit commencer par les lignes suivantes afin de définir le PIC utilisé :
List p=16f84
Include <p16F84.inc>
Un exemple est donné à la fin de ce fascicule.
Après avoir rentré votre programme
faîtes FILE > SAVE afin de sauvegarder votre travail.
Après l’assemblage, un message apparait
et normalement vous dit qu’il a été réussi (Figure
3.10). Si ce n’est pas le cas c’est qu’il y a une erreur dans vote fichier
source. L’assembleur vous indique où se trouve l’erreur et vous
pouvez directement cliquer sur l’erreur pour qu’il vous montre où
elle se trouve dans votre fichier source.
Figure 3.10 : Build successfully
Toutes les commandes de simulation sont dans le menu DEBUG >> RUN.
Pour visualiser vos variables ou vos ports, il faut créer une Watch Windows.
Pour cela il faut aller dans le menu WINDOW >> WATCH WINDOWS >> NEW WATCH WINDOWS… Une fenêtre apparaît alors pour vous demander les variables que vous voulez visualiser.
Par exemple si vous voulez voir la valeur du Port B, sélectionnez portb, faites Properties pour choisir le format (decimal, Hexadecimal ou binaire ), cliquez ensuite sur OK et enfin ADD.
Une fois toutes les variables choisies, vous pouvez faire CLOSE. La fenêtre WATCH_1 vous affiche alors les valeurs des variables choisies.
Pour ajouter une variable dans la Watch Windows,
allez dans le menu Window >> Watch Windows >> Add to active Watch Windows.
Figure 4.1 : Le Logiciel PICCALL
Ouvrez votre .HEX en allant dans le menu FILE >> OPEN PROGRAMM. (ou F2).
Allez dans c:\Pograms files\MPLAB et choisissez votre fichier .Hex.
Si une message Warning apparait, c’est que dans votre programme vous n’avez pas définit les options du compilateur (Chien de garde, Oscillateur … ).
figure 4.2 : Message Warning
Ceci n’est pas grave puisque vous pouvez définir ces options
manuellement en allant dans le menu CONFIG.
Figure 4.3 : Menu Config
Par défaut, je vous conseille Power Up timer et XT (Oscillation
par Quartz) cochés quand au reste laissez le non coché. Une
fois cette opération réalisée faites OK.
Enfin vérifier que les options sont cochées de la façon suivante et que le PIC16F84 est bien sélectionné.
Mettez le PIC 16F84 comme indiqué par PICALL sur le programmateur, alimentez le programmateur (12v) puis faites Program.
LIST P=16F84;f=inhx8m Indique au compilateur le microcontrôleur utiliséinclude <p16f84.inc> Spécifie au compilateur les définitions à utiliser
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
(Protection code off, oscillation à quartz, chien de garde off et power_on on)
Définition des variables dans mémoire RAM
count1 equ 0C count1 à l’adresse 0C de la RAM
count2 equ 0D count1 à l’adresse 0D de la RAM
valeura equ 0E valeuraà l’adresse 0E de la RAM
Programme principal
org 0000 Point de départ du programme ou après un Reset
goto debut
org 0005 Adresse de début du programme (0004 est interdit car il
debut s’agit de l’adresse du vecteur interruption )
call init Appelle du sous programme init
reset movlw B'00000000' Mise à zero du port B
movwf PORTB w Þ portB
bsf STATUS,C Mise à 1 de la carry
boucle movf PORTA,w PortA Þ w
movwf valeura w Þ valeura
btfsc valeura,0 Si le bit0 de valeura est à1, fait l’instruction suivante
goto boucle
btfsc valeura,1 Si le bit1 de valeura est à1, fait l’instruction suivante
goto rotg
goto rotd
finrot btfsc valeura,2 Si le bit2 de valeura est à1, fait l’instruction suivante
goto lent
goto rapide
retour btfsc valeura,3 Si le bit3 de valeura est à1, fait l’instruction suivante
goto reset
goto boucle
Sous programme d’initialisation des Ports
init bsf STATUS,RP0 Sélection de la Bank 1
movlw B'00000000' Tout le port B en sortie
movwf TRISB w Þ TRISB
movlw B'00001111' Tout le port A en entrée
movwf TRISA w Þ TRISA
bcf STATUS,RP0 On remet la bank à 0
retlw 00 Retour
Sous programme rotation à gauche
rotg btfsc PORTB,7 Si le bit7 de PORTB est à1, fait l’instruction suivante
goto g
movlw B'11111110' 11111110 Þ w
movwf PORTB w Þ PORTB
goto finrot
g rlf PORTB,1 Rotation de 1 vers la gauche de PORTB
goto finrot
Sous programme rotation à droite
rotd btfsc PORTB,0 Si le bit0 de PORTB est à1, fait l’instruction suivante
goto d
movlw B'01111111' 01111111 Þ w
movwf PORTB w Þ PORTB
goto finrot
d rrf PORTB,1 Rotation de 1 vers la droite de PORTB
goto finrot
Sous programme vitesse lente
lent movlw .300 300 (décimal) Þ w
movwf count1 w Þ count1
goto tempo
Sous programme vitesse rapide
rapide movlw .150 150 (décimal) Þ w
movwf count1 w Þ count1
goto tempo
Sous programme de temporisation
tempo
d1 movlw .250 250 (décimal) Þ w
movwf count2 w Þ count2
d2 decfsz count2,1 Décrémente count2 de 1. Si count2¹ 0 fait l’instruction suivante
goto d2
decfsz count1 Décrémente count1 de 1. Si count1¹ 0 fait l’instruction suivante
goto d1
goto retour
end