L'Assembleur Mplab - Ide: Les Outils de Developpement
L'Assembleur Mplab - Ide: Les Outils de Developpement
L'Assembleur Mplab - Ide: Les Outils de Developpement
Le PIC16F84
------------------------------------------------------------------------------------------------------------------
Pour s’initier à l’utilisation d’un microcontroleur il faut s’astreindre à écrire de nombreux pro-
grammes en s’inspirant par exemple des textes donnés plus loin. Mais ce n’est profitable que si l’on
dispose des outils nécessaires à l’écriture et au test de ces programmes. Avant de passer aux
exemples concrets nous consacrerons donc un chapitre à la description de ces outils.
Plusieurs sociétés ont commercialisé des assembleurs pour les PIC ce fut la cas de
PARALAX mais MICROCHIP diffuse un tel outil gratuitement , jusqu’en 1999 sur le DC de la socié-
té , depuis par téléchargement sur son site WEB. www.microchip.com
Le logiciel de MICROCHIP est MPLAB IDE Il faut d’abord apprendre à le mettre en œuvre
puis connaître les commandes et règles de l’assembleur .
Attention la mise en œuvre et le format requis varie sensiblement d'une version à l'autre , la
version décrite ici est la 6 .
L’ASSEMBLEUR MPLAB.IDE
MISE EN ŒUVRE :
Le téléchargement étant effectué (on peut aussi se procurer le logiciel sur CD ) son installa-
tion sur l’ordinateur n’offre pas de difficultés particulières. Sous Windows une icône apparaît sur le
bureau . En cliquant sur elle on obtient ( si aucun projet n’a été préalablement entré ) l’écran ci des-
sous .
Pour faire fonctionner votre système vous serez amenés à développer plusieurs fichiers
(Source , objet etc..) dont l’ensemble est appelé un PROJET MPLAB vous demande d’attribuer à
ce PROJET un nom , il ouvrira alors un répertoire spécial à ce nom pour stocker tous les fichiers
nécessaires .
Dans la barre d’outils on commence donc par cliquer sur PROJECT puis NEW : Une fenê-
tre s’ouvre dans laquelle vous entrez le nom du projet ;par exemple MONPROJ ainsi que le réper-
toire dans lequel il sera créé sur le disque ; par exemple C:\TRAVAIL
Dans le cadre en haut à gauche apparaît
Entrée du nom du projet et localisation le noms du projet qui va être créé
MONPROJ .MCP ainsi que les outils qui
seront utilisés. .
----------------------------------------------------------- 14 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
Une grande fenêtre s’ouvre à l’écran dans laquelle on peut introduire le texte du projet . Nous ver-
rons plus loin le détail de la syntaxe nécessaire . A titre d’exemple préliminaire entrons le texte sui-
vant qui est un programme minimal affichant seulement 99H sur le port B .
Attention de bien respecter la disposition en colonnes comme cela sera précisé plus loin .
PORTB equ 6
TRISB equ 6
STATUS equ 3
RS0 equ 5
Org 0
BSF STATUS,RS0 ;accès page 1
CLRF TRISB ; port B en sortie
----------------------------------------------------------- 15 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
Lorsque le texte est entièrement tapé le sauver avec un nom par exemple PROG0.ASM
Fichier > Save as PROG0.ASM . dans le répertoire de travail C:\travail\
La fenêtre à l’écran prend des couleurs
----------------------------------------------------------- 16 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
SYMBOL TABLE
LABEL VALUE
PORTB 00000006
RS0 00000005
STATUS 00000003
TRISB 00000006
__16F84 00000001
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 0 reported, 0 suppressed
Le fichier .HEX
:0A00000083168601831299308600F2
:00000001FF
----------------------------------------------------------- 17 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
LE FICHIER SOURCE
Le fichier source peut être tapé dans MPALB comme ci dessus ou à l’aide d’un éditeur de
texte quelconque par exemple l’outil EDIT du DOS .et bien sûr dans MPLAB lui-même.
Ce fichier est sauvé avec le suffixe .ASM
En tête de fichier il est possible de placer un titre et un texte quelconque sous forme de
commentaire , c'est à dire derrière un ; Le titre peut également être introduit après la com-
mande TITLE dans la seconde colonne .format :
Format : TITLE « titre_text »
C’est ce qui a été fait dans l’exemple précédent :
Puis ensuite , toujours en seconde colonne , la commande LIST suivie d’un certain nombre
d’options : LIST [« option1 », »option2 »,……]
La plus importante , le type de microprocesseur
P=
Puis après une virgule F= le format définissant l’organisation des mots de programme :
----------------------------------------------------------- 18 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
Dans certains cas il est nécessaire d’inclure des fichiers ou des programmes , le mot clé est
#include Par exemple :
#include «P16f84.inc »
Les informations contenues dans le fichier .INC sont nécessaires pour que l'assembleur re-
connaisse les noms des registres internes du microprocesseur .Par exemple la ligne :
MOVWF STATUS qui charge le contenu de W dans STATUS est admise , en absence de
fichier .INC il aurait fallu écrire :
MOVWF 03
ou préalablement définir l'adresse du registre STATUS par
STATUS EQU 03
*( voir note en fin de chapitre )
En décimal 45 ou .45
En hexadécimal 0xF3 ou H'F3'
En octal Q’173’ ou O’777’
En binaire B’00011101’
DB déclare une donnée d’un seul octet , nombre ou caractère mais les opérations ne sont pas
admises
[<label<] db <expression>
attention les octets sont placès à partir de la gauche or les mots mémoire n’ont que 14 bits
DB 0x1F est accepté car il place en mémoire comme premier mot 00011111 00000000 alors
----------------------------------------------------------- 19 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
que DB 0x81 est refusé car il donnerait un mot 10000001 00000000 qui a un 1 en position
15 .
Directives de Listing
LIST <option>,[<option>]…
Introduit une suite d’options dont 2 ont déjà été citées .
Les plus importantes :
C= largeur des colonnes du .LST , par défaut 132
F= format la façon dont son représentés les mots de 14 bits , voir plus haut , par dé-
faut INHX8M
N= nombre de lignes par page par défaut 60
P= le processeur
R= HEX/DEC/OCT la base de numération utilisée , par défaut HEX
PAGE
Insère un saut de page dans le listing
SPACE
Insère une ligne de blanc dans le listing
Les fusibles sont des bits qui déterminent le type d'oscillateur choisi, la mise en œuvre ou
non du chien de garde etc.. .Ils sont écrits dans la mémoire à l'adresse 2000 qui n'est pas accessi-
ble comme les autres cases de la mémoire programme. L'écriture dans cette case particulière ne
peut être effectuée que lors de la programmation du circuit.. Certains programmateurs permettent de
choisir l'état des fusibles au moment de la programmation , mais il est possible d'inclure en début
de programme une directive spéciale _CONFIG (Attention au tiret devant le mot CONFIG ) .
Dans le cas du PIC 16F84 le mot à écrire est le suivant (c'est bien sûr un mot de 14 bits )
----------------------------------------------------------- 20 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
13 12 11 10 9 8 7 6 5 4 3 2 1 à
CP CP CP CP CP CP CP CP CP CP /PWRTE WDTE FOSC1 FOSC0
Par exemple si un oscillateur à quartz est choisi (XT) , le chien de garde désactivé et le retard au
démarrage présent (conseillé) , le mot sera :
11111111110001 ou 3FF1 et on placera en début de programme la directive :
__CONFIG H'3FF1'
Les MACRO
Une macro instruction permet d’appeler par un seul nom une longue suite d’instructions
LABEL (nom de la MACRO) MACRO [<arguments>,<arguments>,…]
ENDM
La définition est divisée en 3 parties , l’entête, le corps et la terminaison
L’entête est formée du nom (LABEL) du mot MACRO et des paramètres passés
Le corps est une suite d’instructions
La MACRO se termine par ENDM
Si une MACRO doit comporter des sauts internes, les labels doivent être définis
comme locaux sur la ligne qui suit immédiatement celle ou figure le mot MACRO. Le
ENDM terminant la macro ne doit pas être précédé d’un label.
Exemple : La MACRO WC transfert le contenu du CARRY sur le fil 2 du port A :
WC MACRO
LOCAL ZEROW,FINW ;définition locale des labels
BTFSS STATUS,CARRY ;préalablement définis saut si 1
GOTO ZEROW ;exécutée si 0
BSF PORTA,2
----------------------------------------------------------- 21 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
GOTO FINW
ZEROW BCF PORTA,2
FINW
ENDM ;seul sur la ligne
; This header file defines configurations, registers, and other useful bits of
; information for the PIC16F84 microcontroller. These names are taken to match
; the data sheets as closely as possible.
;==========================================================================
;
; Revision History
;
;==========================================================================
;==========================================================================
;
; Verify Processor
;
;==========================================================================
IFNDEF __16F84
MESSG "Processor-header file mismatch. Verify selected processor."
ENDIF
;==========================================================================
;
; Register Definitions
;
;==========================================================================
W EQU H'0000'
F EQU H'0001'
----------------------------------------------------------- 22 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
;==========================================================================
;
; RAM Definition
;
;==========================================================================
__MAXRAM H'CF'
__BADRAM H'07', H'50'-H'7F', H'87'
;==========================================================================
;
; Configuration Bits
;
;==========================================================================
LIST
----------------------------------------------------------- 23 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
Dans la barre d’outils sélectionner Debugger > Select Tool > MPLAB SIM
5 nouvelles icônes sont activées dans la barre d’outils. Elles permettent de démarrer , arrê-
ter , exécuter pas à pas le programme présent .
Il faut d’abord faire un reset :
----------------------------------------------------------- 24 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
Cette fenêtre peut pour plus de commodité être imprimée en cliquant sur le bouton droit de
la souris , puis print .
La fenêtre comprend jusqu'à 18 colonnes. Les 8 dernières à droite ne sont utiles que si
l’on dispose d’un émulateur matériel de MICROCHIP . Pour les supprimer il suffit de cliquer avec le
bouton droit sur la première ligne de ces colonnes et de décocher les lignes probe de 0 à 7 dans la
fenêtre vertical qui est présentée.
La seconde colonne affiche l’adresse de l’instruction
La 3eme son code en héxa
La 4eme Le label s’il y en a
La 5eme le mnémonique de l’instruction avec les adresses ou données en héxa
Les suivantes
Pour des instructions utilisant deux opérandes par exemple BSF Adresse ,data SA
est l’adresse et SD la donnée
DA et DD sont les adresse et donnée résultante
Pour l’exemple présent sur la 1ere ligne l’instruction BSF STATUS,RP0 place un 1
en position 5 (soit data=0x20) dans le registre STATUS( adresse 03 soit SA=03) Au départ
ce registre est à 0 soit SD=0 La destination est ce même registre soit DA=03 et la donnée à
écrire 0x20 soit DB=0x20
En seconde ligne , l’nstruction CLRF TRISB n’a qu’un seul opérande , ne seront
présentes que l’adresse et la donnée DA=03 et DD = 0
La 3eme ligne est de nouveau une instruction à 2 opérande BCF STATUS,RS0 , ap-
paraîtront dans SA et SD l’adresse et le contenu de STATUS 03 et 20 ( on vient d’y entrer
20 ) et le résultat DA=03 et DD=0 (clear)
4eme ligne MOLWF 0x99 seul opérande 0x99 donc DA=0FE8 l’adresse interne de
l’accumulateur et DD=99 la donnée écrite .
Enfin pour la dernière MOVWF PORTB l’adresse du portB 06 et la donnée 99
Enfin la colonne cycle indique le temps écoulé exprimé en microsecondes .Il faut préala-
blement choisir la fréquence du quartz dans Debugger >Setting > Clock
Pour 4Mhz une période d’horloge = 1µS
On vient de voir comment en positionnant le curseur sur le nom d’une variable on pouvait sui-
vre l’évolution de sa valeur instructions après instructions. Ce suivi peut être obtenu de façon plus
commode en utilisant la fonction Watch .
Pour activer cette fonction View > Watch
Une fenêtre s’ouvre .Il est possible d’afficher le comportement des registres internes du mi-
croprocesseur (SFR) ou de ceux auxquels on à donné un nom . Pour afficher les premiers utiliser
l’ascenseur associé au bouton AddSFR , choisir le registre et presser le bouton .Le même mode opé-
ratoire est utilisé pour afficher un registre nommé , en utilisant le bouton AddSymbol
----------------------------------------------------------- 25 ---------------------------------------------------------
Introduction à l’utilisation des microcontroleurs PIC . Le PIC16F84
------------------------------------------------------------------------------------------------------------------
Les deux fenêtres Watch et Listing doivent figurer simultanément à l’écran ( il faut utiliser un
grand écran et une police de petite taille . )
Recompiler par Project > Build all ( Cela s’avère parfois nécessaire pour que la fonction
Watch fonctionne ) puis Debugger >
Reset et Debugger > Step into .(ou
le bouton correspondant sur la barre
d’outils )
Pour un long programme l’exécution pas à pas est fastidieuse , il vaut mieux lance RUN
et placer dans le fichier source des points d’arrêt. (BREAKPOINT)
Dans la fenêtre affichant le programme amener le curseur sur l’instruction à laquelle vous
voulez vous arrêter , presser le bouton droit de la souris et choisir Set Breakpoint
La suppression d’un point d’arrêt se fait de la même façon ( Remove Breakpoint )
LE PROGRAMMATEUR
Pour tester un programme il faut au préalable l'introduire dans la mémoire du composant ,
contrairement au 8031 il n'est pas possible de mettre en œuvre une mémoire extérieure (Emulateur
de ROM ) Heureusement le PIC16F84 possède une mémoire de type Flash que l'on peut remplir et
effacer de nombreuses fois. IL faut pour cela utiliser un PROGRAMMATEUR .
La programmation s'effectue en série par les deux bornes PB6 et PB7 . Il est possible de
trouver la procédure exacte sur le WEB .
Le programmateur lui-même est très simple peu coûteux, on peu l'acquérir dans le com-
merce (Par exemple SELECTRONIC) pour quelques dizaines d'euros , ou mieux le fabriquer .On
trouvera un schéma et tous les logiciels nécessaires sur le site de Christian Tavernier .
www.tavernier-c.com
Il existe sur le WEB quantité de sites consacrés à ce circuit , sous Google l'appel avec l'intitu-
lé PIC16F84 fournit plus de 16000 réponses. Bon courage ! .
----------------------------------------------------------- 26 ---------------------------------------------------------