Sys Temps Reel - TP1
Sys Temps Reel - TP1
Sys Temps Reel - TP1
Faculté de Technologie
Département d'ingénierie des systèmes électriques
Module : Tp Système temps reel
TP 1: Introduction a MPLAB
I. Objectifs :
L’objectif de cette manipulation est de se familiariser avec l’environnement de développement (IDE)
MPLAB et comprendre la structure d’un programme écrit en assembleur.
Dans La première partie du TP, on va présenter la structure d’un programme écrit en assembleur et on
décortiquera ses différentes parties.
Compiler le programme,
Chercher les erreurs et les corriger,
Suivre les registres et les différentes variables,
Vérifier le contenu des différentes mémoires.
MPLAB est un environnement de développement qui contient tous les outils nécessaires à la mise au point
d'une application avec un cœur de microcontrôleur PIC.
Il contient un :
Téléchargez et installez la dernière version de MPLAB qui est disponible sur le site officiel de
MICROCHIP www.microship.com.
Partie A : Structure d’un programme Assembleur
1. Ouvrir MPLAB
2. Project Project Wizard
3. Choisissez le microcontrôleur que vous aller utiliser. Dans notre cas choisissez le PIC 16F84
4. Choisissez le langage de programmation que vous aller utiliser. Dans notre cas on va
programmer en assembleur donc choisissez le MPASM Assembler.
5. Choisissez le Nom et l’emplacement du projet. De préférence, créez un nouveau dossier qui va
contenir tout vos projets.
6. Ajoutez les fichiers que vous allez utiliser dans votre projet
Dans notre cas ne rien choisir, on va ajouter les fichiers manuellement.
8. Ajoutez un fichier
Bouton droit sur Source File, puis choisissez le fichier « TP1.asm » donné par l’enseignant
II. Organisation d’un fichier .ASM
Ouvrir Le fichier TP1 et cliquez n’importe où à l’intérieur de ce fichier. Vous êtes à l’intérieur
d’un simple traitement de texte. En bas, vous verrez un numéro de ligne et de colonne. C’est la
position actuelle de votre curseur.
1. Les commentaires
Prenez l’habitude de toujours commenter vos programmes. Soyez sûr que dans 6 mois, vous
ne vous rappellerez plus ce que vous avez voulu faire, les commentaires vous seront alors
d’une grande utilité si vous décidez de modifier votre programme.
2. Les directives
A la ligne 42, nous trouvons une DIRECTIVE destinée à MPASM® pour lui indiquer
quel type de processeur est utilisé dans ce programme.
Les DIRECTIVES ne font pas partie du programme, elles ne sont pas traduites en OPCODE,
elles servent à indiquer à l’assembleur de quelle manière il doit travailler. Ce sont donc des
COMMANDES destinées à l’assembleur en lui-même.
Au contraire, les INSTRUCTIONS seront traduites en OPCODE et chargées dans le PIC. Il est
donc impératif de bien faire la distinction.
La ligne 43 signale à l’assembleur que les ASSIGNATIONS sont dans le fichier P16F84.inc. Ce
fichier contient la valeur de toutes les CONSTANTES que nous allons utiliser.
Ce fichier se trouve dans C:\Program Files\Microchip\MPASM Suite
Ouvrez ce fichier, une fois dépassée la zone de commentaires, vous verrez des lignes du
style :
4. La directive Config
La directive de configuration commence par « CONFIG ». Cette partie contient les fameux
« fusibles » qui fixent le fonctionnement du PIC.
Les valeurs écrites dans cette zone seront intégrées dans le fichier «TP1.hex » pour signaler
au programmateur les valeurs à encoder aux adresses spécifiques du PIC.
Lorsque ces informations sont absentes du fichier « .hex », il faut alors définir « à la main »
l’état de ces fusibles au niveau de votre logiciel de pilotage du programmateur.
Voici les valeurs et leurs définitions :
5. Les assignations
Un autre avantage est que si vous remplacez la valeur d’une assignation, le changement sera
effectif pour tout le programme.
6. Les définitions
Les « define » fonctionnent comme les assignations mais ces derniers sont réservés pour les
valeurs et les « define » pour remplacer un texte plus complexe.
Une définition est construite de la manière suivante : La directive #DEFINE, suivie par le
nom que l’on désire utiliser, puis la chaîne à substituer. Par exemple :
7. Les macros
La macro se compose d’un nom écrit en première colonne, suivi par la directive «macro» et
commence à la ligne suivant la portion de code qui constitue la macro. La fin de la macro est définie
par la directive « endm ») (end of macro).
Toute zone définie par l’utilisateur commence avec la DIRECTIVE CBLOCK, suivie par
l’adresse du début de la zone.
La zone RAM librement utilisée commence a l’adresse 0X0C.
9. Les étiquettes
Ce sont des noms qu’on choisi et qui sont des REPERES pour le programme.
La directive ORG, suivie de l’adresse, précise à quelle adresse les instructions qui suivent
seront placées dans le PIC.
Il est important de savoir qu’après un reset ou une mise sous tension, le PIC démarre
toujours à l’adresse 0X00 : Le début du programme doit se situer a partir de cette adresse.
Remarque 2: L’adresse 0X04 est réservée pour les interruptions donc il nous reste pas
beaucoup de place pour mettre notre programme. La solution est de faire un saut vers
l’emplacement qui va contenir le programme principal.
Exemple
S’il n’ya pas des erreurs de compilation, on obtient le message « BUILD SUCCEEDED » et on aura
la génération du fichier « TP1.hex ».
Si vous avez rencontré des erreurs dans votre code essayez de trouver la cause et les corriger.
On vous rappel que la taille d’une instruction est de 14 bits et que le registre PC (program
Counter) contient l’adresse de la prochaine instruction à exécuter.
Le registre PC est obtenu de la façon suivante
Pour suivre le contenu de PC, View Watch, choisissez les 2 registres PCL et PCLATH
comme le montre la figure suivante.
Executez le programme en mode pas a pas en appuiant sur la touche suivante et verifiez le
contenue des registres PCL et PCLTAH. En deduire le rôle de PC.
Que remarquez-vous ? Pourquoi les lignes vides contiennent une valeur égale à 3FF ?
Start
clrf mavariable ; effacer mavariable
boucle
Compilez le programme. Y’a-t-il des erreurs ? Corrigez les erruers et suivez les registres
PCL et PCLTAH et la variable « mavariable ».
Qu’elle est la valeur maximale que « mavariable » peut attendre ? Expliquez pourquoi.
Bon travail