21 0 2MB
04/12/2019
Microprocesseurs et Microcontrôleurs
MPLAB X IDE V2.25 Pr. A. AIT MADI
RST(S6)-ENSA EEA(S3)-EST-KENITRA -KENITRA
1
Plan Introduction
Gestion d’un projet Les directives de MPASM Format des nombres Prise en main de MPLAB X IDE lancement de MPLAB X IDE Création d’un projet Ajout d’un nouveau fichier source au projet Compilation du projet Simulation du projet
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
2
1
04/12/2019
introduction
MPLAB X IDE (Integrated Development Environment) est un environnement de développement intégré Il regroupe un ensemble d'outils pour le développement d’applications basées sur les microcontrôleurs PIC, 8 bits, 16 bits et 32 bits, de la société Microchip. Ces outils sont : • Un éditeur de texte • Des assembleurs et des compilateurs • Un Débogueur • Des outils de simulation et de programmation
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
3
Gestionnaire de projet
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
4
2
04/12/2019
Gestionnaire de projet
Les fichiers sources (Source Files) sont des fichiers texte qui doivent être écrit selon les règles d’un Assembleur ou d’un Compilateur . L’Assembleur ou le Compilateur convertit ces fichiers sources en code machine et des espaces réservés faisant références au stockage des fonctions et des données L'éditeur de liens (Linker) résout ces espaces réservés et combine tous les modules dans un fichier de code machine exécutable (Executable File) L'éditeur de liens produit également un fichier de débogage (Debug File) qui permet à MPLAB X IDE de relier les codes machine d'exécution vers les fichiers source
5
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
Gestionnaire de projet
programmer
Le compilateur convertit le code source en un code machine Program.asm Program.hex assembler/ (machine language) programmer translator 11 00xx 0010 0000
MOVLW 0x20 L’assembleur convertit le code source en un code machine RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
6
3
04/12/2019
Les directives de MPASM
Dans une première phase nous allons, éditer, compiler et simuler, sous le logiciel MPLAB X IDE, un programme écrit en assembleur pour un pic 8 bits, PIC16F84A
Chaque programme écrit en assembleur contient un ensemble de directives de l’assembleur MPASM
Les directives de l'assembleur sont des instructions qu'on ajoute dans le programme et qui seront interprétées par l'assembleur MPASM Les directives ne sont pas des instructions destinées pour le PIC Les directives les plus utilisées sont : • LIST : permet de définir un certain nombre de paramètres comme le processeur utilisé (p), la base par défaut pour les nombres, radix (r), le format du fichier hex à produire (f) ainsi que d'autres paramètres Exemple :
LIST p=16F84A, r=dec, f=inhx8m
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
7
Les directives de MPASM • INCLUDE : permet d'insérer un fichier source Par exemple le fichier p16f84A.inc qui contient la définition d'un certain nombre de constante comme les noms des registres ainsi que les noms de certain bits. Exemple
#INCLUDE
• __CONFIG : permet de définir les 14 bits de configuration qui seront copiés dans l'EEPROM de configuration lors de l'implantation du programme dans le PIC Ces 14 bits concernent la protection de code, le type d'oscillateur, le chien de garde et temporisation du départ Exemple __CONFIG B'11111111111001‘ ; ou __CONFIG H'3FF9‘ ; ou __CONFIG _CP_OFF & _XT_OSC & _PWRTE_OFF & _WDT_OFF
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
; si p16F84A.inc inséré
8
4
04/12/2019
Les directives de MPASM
9
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
Les directives de MPASM • EQU : permet de définir une constante ou une variable : Exemple Var EQU 0x20 o Chaque fois que le compilateur rencontrera constante 0x20
Var, il la remplacera par la
o Var peut être une constante s'il s'agit d'une instruction avec adressage immédiat o Ou d'une adresse s'il s'agit d'une instruction avec adressage direct •
#DEFINE : définit un texte de substitution Exemple
#DEFINE pos(x,y,z)
(y-2z+x)
o Chaque fois que le compilateur rencontrera le texte pos(x,y,z), il le remplacera
par (y-2z+x) • ORG : définit la position dans la mémoire programme à partir de laquelle seront inscrites les instructions suivantes • END : indique la fin du programme
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
10
5
04/12/2019
Format des nombres L'assembleur reconnaît les nombres en décimal, hexadécimal, binaire ou octal. Pour préciser la base il faut utiliser les préfixes précisés dans le tableau cidessous :
Base
Préfixe
Exemple
Décimal
D’nnn’ .nnn
D’36’ .36
Hexadécimal
H’nn’ 0xnn nnh
H’24’ 0x24 24h
Binaire
B’…’
B’01011110’
Octal
O’nnn’
O’44’
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
11
Prise en main de MPLAB X IDE Pour cela nous allons, d’abord, éditer, compiler et simuler le fichier source, écrit en assembleur, ci-dessous
Ce programme permet de faire l’addition des contenus des cases mémoires d’adresses 0x1C et 0x1D et mettre le résultat dans la case mémoire d’adresse 0x1E LIST p=pic16f84a, f=inhx8m, r=hex #INCLUDE ; __ CONFIG 0x3FF1 __CONFIG _CP_OFF &_XT_OSC & _PWRTE_ON & _WDT_OFF Adress1 equ 0x1C Adress2 equ 0x1D Adress3 equ 0x1E MOVF Adress1, w ADDWF Adress2, w MOWF Adress3 END RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
12
6
04/12/2019
lancement de MPLABX IDE Bureau de MPLABX IDE
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
13
Lancement de MPLABX IDE • Sur la page de démarrage, il y a trois onglets avec des liens. Les liens sur chaque onglet sont définis comme suit :
Liens de l’onglet « LEARN AND DISCOVER » RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
14
7
04/12/2019
lancement de de MPLABX IDE
Liens de l’onglet « MY MPLAB X IDE »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
15
lancement de MPLABX IDE
Liens de l’onglet « WHAT’S NEW »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
16
8
04/12/2019
Création d’un projet
De nouveaux projets peuvent être crées en sélectionnant soit: • L’onglet « LEARN and DISCOVER » Sur la page de démarrage, et cliquer sur le lien « Create New Project » • Ou cliquer sur File/New Project
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
17
Création d’un projet Sélectionner Microchip Embedded sur la partie « Categories » Sélectionner « StandaloneProject » sur la partie « Projects » puis cliquer sur « Next »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
18
9
04/12/2019
Création d’un projet Choisir « Mid-Range 8 bits MCUs (PIC10/12/16/MCP) » sur « Familly » Choisir « PIC16F84A» sur « Device » puis cliquer sur « Next »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
19
Création d’un projet Sélectionner l’outil « Simulator » puis cliquer sur « Next »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
20
10
04/12/2019
Création d’un projet Sélectionner le compilateur « mpasm (v5.59)[…] » puis cliquer sur « Next »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
21
Création d’un projet Préciser le nom du projet dans « Project Name » Préciser son emplacement dans « Project location » en cliquant sur « Browse » Cliquer ensuite sur « Finish »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
22
11
04/12/2019
Création d’un projet Le projet est crée et porte le nom « first_prog» Un ensemble de répertoires virtuelles ont été crées afin que le projet soit organisé
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
23
Ajout d’un nouveau fichier source au projet Faites un clic droit sur le répertoire « Source Files » Cliquer sur « New » puis « Other »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
24
12
04/12/2019
Ajout d’un nouveau fichier source au projet
Cliquer deux fois sur le répertoire « Microchip Embedded » Cliquer sur le sous répertoire « MPASM assembler» Sélectionner « pic_8b_general.asm » Ensuite cliquer sur « Next »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
25
Ajout d’un nouveau fichier source au projet Donner un nom au nouveau fichier puis cliquer sur « Finish »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
26
13
04/12/2019
Ajout d’un nouveau fichier source au projet Le fichier généré est le Template d’un programme pour les MCUs 8 bits 16 et 18 de Microchip. Il contient les parties essentielles suivantes : • Une partie où vous allez inséré, le nom du fichier, la date, la version du fichier, vos informations et une description du programme
• Une partie où vous allez utiliser la directive #INCLUDE
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
27
Ajout d’un nouveau fichier source au projet • Une partie où vous allez utiliser la directive __CONFIG
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
28
14
04/12/2019
Ajout d’un nouveau fichier source au projet • Une partie pour la définition des variables
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
29
Ajout d’un nouveau fichier source au projet • Une partie concernant le vecteur « Reset »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
30
15
04/12/2019
Ajout d’un nouveau fichier source au projet • Une partie concernant les codes des routines de service des interruptions (ISR)
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
31
Ajout d’un nouveau fichier source au projet • Une partie pour le programme principale
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
32
16
04/12/2019
Ajout d’un nouveau fichier source au projet • Écrire le programme suivant et éliminer les parties, de la Template, qui ne figurent pas dans ce programme
Partie 1/2 RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
33
Ajout d’un nouveau fichier source au projet
Partie 2/2
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
34
17
04/12/2019
Compilation du projet Cliquer sur l’un des boutons de compilation suivants et vérifier que la compilation a été réussie :
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
35
Simulation du projet Cliquer sur le bouton de débogage comme le montre la capture d’écran suivante :
Boutons de débogage Cliquer sur le bouton « pause » pour marquer une pause :
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
36
18
04/12/2019
Simulation du projet
Cliquer sur le bouton « Reset» pour réinitialiser le programme Pour voir et vérifier registres :
les contenus des
• Cliquer sur le menu « Window » • Cliquer sur « PIC Memory views » • Cliquer sur « File Registers »
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
37
Simulation du projet
File Registres Cliquer sur le bouton « Go TO » Pour accéder au contenu d’une case mémoire
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
38
19
04/12/2019
Simulation du projet Mettre 05 et 0A respectivement dans les adresses 0x1C et 0x1D en procédant comme suit : • • • • •
Taper 0x1C dans le champ Enter a Hex Address Cliquer sur le bouton « GO TO » Cliquer sur le bouton « Close » Cliquer deux fois sur la case mémoire d’adresse 0x1C pour modifier son contenu Procéder de la même manière pour mettre 0A dans la case 0x1D
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
39
Simulation du projet
File Registres
RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
40
20
04/12/2019
Simulation du projet Cliquer plusieurs fois sur le bouton de de débogage « Step Into » jusqu’a atteindre l’instruction « GOTO $ » Vérifier que la case mémoire d’adresse, 0x1E, contient 0F, qui l’addition de 05+0A
est aussi le résultat
de
File Registres RST(S6)-ENSA EEA(S6)-EST-KENITRA -KENITRA
41
21