TP 4 MICROCONTROLEURS PIC

Documents pareils
PIC : COURS ASSEMBLEUR

PIC 16F84. Philippe Hoppenot

Informatique Industrielle

PIC EVAL Dev Board PIC18F97J60

La programmation des PIC en C. Les fonctions, les interruptions.

ARCEAU DE PARKING MOTORISÉ VIGIPARK

Flowcode - Mode d'emploi

Proteus VSM. manuel_vsm.doc

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

LISA. Manuel Utilisateur

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

Spécialité Professionnelle. Patrick Boulandet

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)

Conférence sur les microcontroleurs.

Carte Relais GSM (Manuel Utilisateur)

Ordinateurs, Structure et Applications

NOTICE SIMPLIFIEE ER-A280F. I Initialisation avec Remise à Zéro de la caisse : ENTER PASSWORD ER-A280V. Ver1.02

GUIDE Excel (version débutante) Version 2013

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

2013 Nos nouveaux outils basés sur Arduino

GUIDE D UTILISATION DU BROWSER DE BEYOND 20/20

Logiciels DSPiy. DSPiyStudio logiciels et format des fichiers. incomplet

Eclipse atelier Java

1.1 L EXPLORATEUR WINDOWS

Le langage C. Séance n 4

Cahier Technique Liaison Comptabilité Api / Sage ECF

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Configuration de TCPIPconfig.h

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

I00 Éléments d architecture

Mode d Emploi du Module d ASRock WiFi g

PROCÉDURE D'INSTALLATION WINDOWS 7 (32 ou 64 bit)

Rappels d architecture

EL70x1 en mode position. Mise en œuvre rapide. VERSION : Beta / DATE : 31 Juillet 2011

1. Présentation du TP

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

UE Programmation Impérative Licence 2ème Année

Manipulations du laboratoire

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Cours 1 : Qu est-ce que la programmation?

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

CSI351 Systèmes d exploitation Instructions pour rouler Linux avec Virtual PC dans la salle de labo 2052

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

COURS WINDEV NUMERO 3

Millenium3 Atelier de programmation

WEBVIEW. Serveur Web embarqué dans DIRIS G NOTICE D UTILISATION. com/webview_ software

Installer et configurer un réseau local Ethernet commuté. Généralités 1 Utilisation d un Switch administrable D-Link DES-3226

GPA770 Microélectronique appliquée Exercices série A

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

IV- Comment fonctionne un ordinateur?

Conception de circuits numériques et architecture des ordinateurs

Cours Informatique 1. Monsieur SADOUNI Salheddine

Tutoriel code::blocks

Initiation à LabView : Les exemples d applications :

Contrôle d accès UTIL TP N 1 découverte

Structure d un programme

GS301-A Notice d installation et d utilisation.

Modules d automatismes simples

Utilisation de KoXo Computers V2.1

Guide de l administrateur DOC-OEMCS8-GA-FR-29/09/05

TP1. Outils Java Eléments de correction

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Boîtier disque dur SATA 3,5 pouces Fonction économie d énergie

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Compilation (INF 564)

Procédure de sauvegarde pour AB Magique

IPBX 02 : TP MISE EN OEUVRE RTC ET TOIP. Ce sujet comporte 4 pages de texte suivi du corrigé

ORIENTATIONS POUR LA CLASSE DE TROISIÈME

SMS-COM LT RAILS DIN V Manuel d installation, de programmation et d utilisation.

TP Bases de données réparties

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Travaux pratiques. DECOUVERTE PDMLink - PTC

Procédure : Sauvegarder un Windows 7 sur un disque réseau

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

La Clé informatique. Formation Excel XP Aide-mémoire

Installation et prise en main

Le Logiciel de Facturation ultra simplifié spécial Auto-Entrepreneur

1. PRESENTATION DU PROJET

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Menu Fédérateur. Procédure de réinstallation du logiciel EIC Menu Fédérateur d un ancien poste vers un nouveau poste

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Quelques éléments de compilation en C et makefiles

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

TABLEAU CROISE DYNAMIQUE

TP a Notions de base sur le découpage en sous-réseaux

Manuel de référence du langage Exemples Les aventures de Docteur R.

Réalisation d un réseau de capteurs de température sans fil basé sur le protocole ZigBee

Enregistreur sans papier. Interface LON. B Description des interfaces 10.99/

WINDOWS SERVER 2003-R2

Algorithme. Table des matières

SIN-FPGA DESCRIPTION PAR SCHEMA

TABLEAU CROISE DYNAMIQUE

Transcription:

TP4: Introduction à MPLAB et programmation assembleur ISET DE GABES CRIEI A.U 2015/2016 AU:2015/2016 Sem 1 CRIEI ENSEIGNANT : M. TAYARI LASSAAD CLASSE : CRIEI TP 4 MICROCONTROLEURS PIC 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. La deuxième partie du TP consiste à : 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. II. Environnement logiciel Pour réaliser cette manipulation on va utiliser l environnement de développement (IDE) de MICROCHIP «MPLAB». 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 : Editeur de texte interactif, Compilateur assembleur (et C), Simulateur. 1/13

Partie A : Structure d un programme Assembleur I. Démarrer un nouveau projet 1. Ouvrir MPLAB 2. Project Project Wizard Rien de particulier dans cette phase, cliquez sur suivant. 3. Choisissez le microcontrôleur que vous aller utiliser. Dans notre cas choisissez le PIC 16F84 2/13

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. Le nom du projet peut être différent du nom du dossier. 3/13

6. Ajoutez les fichiers que vous allez utiliser dans votre projet Dans notre cas ne rien choisir, on va ajouter les fichiers manuellement. 7. Terminez la création du projet 4/13

8. Ajoutez un fichier Bouton droit sur Source File, puis choisissez le fichier «TP1.asm» 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 Un commentaire commence toujours par un «;». 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. 5/13

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. 3. Les fichiers «include» 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 : FSR EQU H'04' Cette ligne signifie tout simplement que FSR est EGAL à 0x04. Autrement dit, lorsque vous utiliserez FSR dans une instruction, MPASM interprétera FSR comme étant 0x04. 0x04 étant tout simplement l adresse de FSR dans la mémoire du PIC. H 04 est une autre méthode autorisée pour exprimer un nombre hexadécimal, tout comme 04h. Remarque 1 : Si vous ne mettez rien devant le nombre (04 par exemple), le compilateur le prend comme étant un nombre en décimal, mais il faut vérifier la configuration. Pour modifier la configuration choisissez EDIT puis PROPERTIES et ensuite Tooltips et choisissez le type de format par défaut. 4. La directive Config La directive de configuration commence par ««fusibles» qui fixent le fonctionnement du PIC. CONFIG». Cette partie contient les fameux 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. Si le programme contient les informations relatives à ces fusibles de configuration, aucun problème ne va se poser car lors du chargement du fichier dans votre programme de pilotage du programmateur, ces informations seront automatiquement prises en compte et le programmateur se configurera correctement. 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. 6/13

Voici les valeurs et leurs définitions : CP_ON Code protection ON : protection de la mémoire de programme contre une lecture non autorisée CP_OFF PWRTE_ON PWRTE_OFF WDT_ON WDT_OFF LP_OSC XT_OSC HS_OSC RC_OSC Code protection OFF Timer reset sur power on en service(72 ms) Timer reset hors-service Watch-dog en service Watch-dog hors service Oscillateur quartz basse vitesse Oscillateur quartz moyenne vitesse Oscillateur quartz grande vitesse Oscillateur à réseau RC 5. Les assignations Les assignations se comportent comme une simple substitution. Au moment de l assemblage, chaque fois que l assembleur va trouver une assignation, il la remplacera automatiquement par sa valeur. 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 : #DEFINE monbit PORTA,1 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). 8. La zone des variables Toute zone définie par l utilisateur commence avec la DIRECTIVE CBLOCK, suivie par l adresse du début de la zone. 7/13

La zone RAM librement utilisée commence a l adresse 0X0C. CBLOCK 0x00C ; début de la zone variables On peut utiliser 68 emplacements mémoire en suivant la syntaxe suivante : Nom de la variable suivi du signe «:» suivi de la taille utilisée 9. Les étiquettes Ce sont des noms qu on choisi et qui sont des REPERES pour le programme. L assembleur les remplacera par l adresse du programme à l endroit où elles sont positionnées. 10. La directive ORG 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 org 0x000 ; Adresse de départ après reset goto init ; Adresse 0: initialiser 8/13

Partie B: Compiler un programme en assembleur et le tester Maintenant on va faire l assemblage de notre programme. Pour faire l assemblage uniquement pour le document sélectionné on appuie sur <F10> et si on veut assembler tout le projet on appuie sur <CTRL> + <F10>. Puisqu on a un seul document donc on appuie sur <F10>. 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 comme le montre la figure suivante. Watch, choisissez les 2 registres PCL et PCLATH 9/13

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. Refaire l exécution pas a pas du programme et suivez l etat de la mémoire programme. Pour voir le contenu de la mémoire programme VIEW Program Memory. Que remarquez-vous? Pourquoi les lignes vides contiennent une valeur égale à 3FF? A la fin du programme ecrivez les lignes suivantes Start clrf mavariable ; effacer mavariable boucle END incf mavariable,f goto boucle ; incrémenter mavariable ; boucler 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 10/13

ANNEXE (Fichier tp1.asm) * ; Ce fichier est la base de départ pour une programmation avec * ; le PIC 16F84. Il contient les informations de base pour * ; démarrer. * ; Vous n'etes pas appelé a comprendre les instructions. * ; Le but de cette manip est de comprendre la structure d'un * ; programme ecrit sous MPLAB * * ; NOM: TP1 * ; Date: 23/02/2015 * ; Version: 1.0 * ; Circuit: Pas de cicuit, fonctionnement sur émulateur * * ; Fichier requis: P16F84.inc * * ; Notes: Ceci est un petit programme qui ne sert à rien mais * ; qui permet de mettre en oeuvre MPLAB * * **** ****** ***** ***** * * * ****** ***** * * * * **** ****** ***** * LIST p=16f84 ; D?finition de processeur #include <p16f84.inc> ; D?finitions de variables _CONFIG _CP_ON & _WDT_ON & _PWRTE_ON & _HS_OSC ; ASSIGNATIONS * OPTIONVAL EQU H'0040' ; Valeur registre option ; Résistance pull-up ON ; Interrupt flanc montant RB0 11/13

; Préscaler timer2 (exemple) INTERMASK EQU H'0090' ; Masque d'interruption ; Interruptions sur RB0 (exemple) ; DEFINE * ; exemples ; --------- #DEFINE LED1 PORTB,1 ; LED de sortie 1 #DEFINE LEDR PORTB,2 ; LED de témoin de réception #DEFINE INPUT PORTB,0 ; entrée RS485 ; MACRO * ;Exemple ;------- LIREIN macro comf PORTB,0 andlw 1 endm ; DECLARATIONS DE VARIABLES * ;exemples ;--------- CBLOCK 0x00C w_temp :1 status_temp : 1 ENDC ; début de la zone variables ; Zone de 1 byte ; zone de 1 byte ; Fin de la zone * ; DEMARRAGE SUR RESET * * ORG 0x000 ; Adresse de d?part apr?s reset goto debut ; Adresse 0: initialiser * ; ROUTINE INTERRUPTION * * ;sauvegarder registres ;--------------------- ORG 0x004 ; adresse d'interruption movwf w_temp ; sauver registre W swapf STATUS,w ; swap status avec résultat dans w movwf status_temp ; sauver status swapp? ;code d'erreur 12/13

; INITIALISATIONS * init init1 clrf PORTA ; Sorties porta à 0 clrf PORTB ; sorties portb à 0 clrf EEADR ; permet de diminuer la consommation bsf STATUS,RP0 ; s?lectionner banque 1 movlw OPTIONVAL ; charger masque movwf OPTION_REG ; initialiser registre option movlw 0x0c movwf FSR ; Effacer RAM ; ------------ ; initialisation pointeur ; pointeur d'adressage indirec clrf INDF ; effacer ram incf FSR,f ; pointer sur suivant btfss FSR,6 ; tester si fin zone atteinte (>=40) goto init1 ; non, boucler btfss FSR,4 ; tester si fin zone atteinte (>=50) goto init1 ; non, boucler bcf TRISA,0 ; Bit PORTA.0 en sortie (exemple) bcf STATUS,RP0 ; Sélectionner banque 0 movlw INTERMASK ; masque interruption movwf INTCON ; charger interrupt control ; PROGRAMME PRINCIPAL * debut goto init END ; directive fin de programme 13/13