Cours 16F84_ La Program Mat Ion Des Pics

Embed Size (px)

Citation preview

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    1/186

    http://www.electrocrack.fr.st

    LA PROGRAMMATION DES PICS

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    2/186

    http://www.electrocrack.fr.st 1

    1. INTRODUCTION ............................................................................................................................................. 6

    2. LES SYSTEMES DE NUMEROTATION........................... ..... ........................ ........ ........................ ........ ...... 7

    2.1 LE SYSTEME DECIMAL .................................................................................................................................... 7

    2.2 LE SYSTEME BINAIRE ................................ ................................ ................................ ................................ ..... 7

    2.4 LES OPERATIONS ................................ ................................ ................................ ............................................ 92.5 LES NOMBRES SIGNES .................................................................................................................................. 10

    2.6 LES OPERATIONS BOOLEENNES. ................................................................................................................... 112.6.1 Le complment...................................................................................................................................... 11

    2.6.3 La fonction ET ou AND ...................... .......... ....................... ......... ....................... ......... ............ 11

    2.6.4 La fonction OU ou OR .............................................................................................................. 12

    2.6.5 La fonction OU EXCLUSIF ou Exclusif OR ou XOR ............. ................... ..................... ... 13

    3. COMPOSITION ET FONCTIONNEMENT DES PICS......... ....................... ...................... .......... ............. 14

    3.1 QUEST-CE QUUNE PIC ? ................................ ................................ ................................ ............................ 14

    3.2 LES DIFFERENTES FAMILLES DES PICS ......................................................................................................... 15

    3.3 IDENTIFICATION DUNE PIC ................................ ................................ ................................ ......................... 15

    3.4 ORGANISATION DE LA 16F84 ....................................................................................................................... 16

    3.4.1 La mmoire programme ...................... .......... ...................... .......... ...................... .......... ....................... 16

    3.4.2 La mmoire eeprom.............................................................................................................................. 163.4.3 La mmoire Ram .................................................................................................................................. 17

    4. ORGANISATION DES INSTRUCTIONS................................................................ ................................ ... 18

    4.1 GENERALITES............................................................................................................................................... 18

    4.2 LES TYPES DINSTRUCTIONS ................................ ................................ ................................ ......................... 184.2.1 Les instructions orientes octet ..................... ........... ..................... ........... ...................... .......... ...... 18

    4.2.2 Les instructions orientes bits ....................... ......... ....................... ......... ....................... ......... ........ 18

    4.2.3 Les instructions gnrales ..................... ........... ..................... ........... ...................... .......... .................... 19

    4.2.4 Les sauts et appels de sous-routines..................................................................................................... 19

    4.3 PANORAMIQUE DES INSTRUCTIONS ................................ ................................ ................................ .............. 19

    4.4 LES INDICATEURS DETAT ................................ ................................ ................................ ............................ 21

    4.4.3 Lindicateur dtat Z ...................................................................................................................... 22

    4.4.4 Lindicateur dtat C ....................... ......... ....................... ......... ....................... ......... ...................... 22

    5. LES DEBUTS AVEC MPLAB................................ ....................................................................................... 23

    5.1 PREPARATION A LUTILISATION ................................................................................................................... 23

    5.2 CREATION DE NOTRE PREMIER PROJET ......................................................................................................... 23

    6. ORGANISATION DUN FICHIER .ASM ............................................................................................. 27

    6.1 LES COMMENTAIRES .................................................................................................................................... 276.2 LES DIRECTIVES ........................................................................................................................................... 27

    6.3 LES FICHIERS INCLUDE ........................................................................................................................... 27

    6.4 LA DIRECTIVE _CONFIG................................................................ ................................ ............................. 28

    6.5 LES ASSIGNATIONS................................ ................................ ................................ ................................ ....... 28

    6.6 LES DEFINITIONS ................................ ................................ ................................ .......................................... 29

    6.7 LES MACROS ................................................................................................................................................ 29

    6.8 LA ZONE DES VARIABLES ............................................................................................................................. 30

    6.9 LES ETIQUETTES ........................................................................................................................................... 306.10 LA DIRECTIVE ORG ............................................................................................................................. 31

    6.11 LA DIRECTIVE END .............................................................................................................................. 31

    7. REALISATION DUN PROGRAMME............................... . ....................... ......... ....................... ......... ........ 32

    7.1 CREATION DE NOTRE PREMIER PROGRAMME ................................ ................................ ................................ 327.2 LASSEMBLAGE DUN PROGRAMME................................ ................................ ................................ .............. 33

    8. LA SIMULATION DUN PROGRAMME........ ........................ ......................... ....... ......................... ....... ... 35

    8.1 LANCEMENT ET PARAMETRAGE DU SIMULATEUR................................ ................................ ......................... 35

    8.2 EXPLICATION DES REGISTRES FONDAMENTAUX ........................................................................................... 37

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    3/186

    http://www.electrocrack.fr.st 2

    8.2.1 Les registres PCL et PCLATH .................................................................................................. 38

    8.2.3 Le registre W ..................... ........... ...................... .......... ...................... .......... ...................... .......... .. 39

    8.2.4Le registre STATUS ......................................................................................................................... 39

    8.3 LANCEMENT DE LA SIMULATION ................................ ................................ ................................ .................. 40

    9. LE JEU DINSTRUCTIONS ................................ ................................ ................................ ......................... 44

    9.1 LINSTRUCTION GOTO (ALLER A) ......................................................................................................... 44

    9.2 LINSTRUCTION INCF (INCREMENT FILE) ................................ ................................ ............................ 459.3 LINSTRUCTION DECF (DECREMENT FILE).......................................................................................... 46

    9.4 LINSTRUCTION MOVLW (MOVE LITERAL TO W)............................................................................... 46

    9.5 LINSTRUCTION MOVF (MOVE FILE)................................................................ ................................ ... 46

    9.6 LINSTRUCTION MOVWF (MOVE W TO FILE)........................................................................................ 489.7 LINSTRUCTION ADDLW (ADD LITERAL AND W) ................................ ................................ ............... 48

    9.8 LINSTRUCTION ADDWF (ADD W AND F)........................................................................................... 49

    9.10 LINSTRUCTION SUBWF (SUBTRACT W FROM F) ................................ ................................ .............. 51

    9.11 LINSTRUCTION ANDLW (AND LITERAL WITH W)............................................................................ 51

    9.12 LINSTRUCTION ANDWF (AND W WITH F) ....................................................................................... 52

    9.13 LINSTRUCTION IORLW (INCLUSIVE OR LITERAL WITH W)............................................................... 52

    9.14 LINSTRUCTION IORWF (INCLUSIVE OR W WITH FILE) ..................................................................... 53

    9.16 LINSTRUCTION XORWF (EXCLUSIVE OR W WITH F)........................................................................ 54

    9.17 LINSTRUCTION BSF (BIT SET F)......................................................................................................... 54

    9.18 LINSTRUCTION BCF (BIT CLEAR F).................................................................................................... 55

    9.19 LINSTRUCTION RLF ( ROTATE LEFT THROUGH CARRY)..................................................................... 55

    9.20 LINSTRUCTION RRF ( ROTATE RIGHT THROUGH CARRY) .................................................................. 569.21 LINSTRUCTION BTFSC (BIT TEST F, SKIP IF CLEAR) ......................................................................... 57

    9.22 LINSTRUCTION BTFSS (BIT TEST F, SKIP IF SET) ................................ ................................ .............. 58

    9.23 LINSTRUCTION DECFSZ (DECREMENT F, SKIP IF Z) ........................................................................ 59

    9.24 LINSTRUCTION INCFSZ (INCREMENT F, SKIP IF ZERO) ................................ ................................ .... 60

    9.25 LINSTRUCTION SWAPF (SWAP NIBBLES IN F).................................................................................. 60

    9.26 LINSTRUCTION CALL (CALL SUBROUTINE)...................................................................................... 61

    9.27 LINSTRUCTION RETURN (RETURN FROM SUBROUTINE)................................................................. 61

    9.28 LINSTRUCTION RETLW (RETURN WITH LITERAL IN W) ................................ ................................ ... 64

    9.29 LINSTRUCTION RETFIE (RETURN FROM INTERRUPT)....................................................................... 65

    9.30 LINSTRUCTION CLRF (CLEAR F) ...................................................................................................... 65

    9.31 LINSTRUCTION CLRW (CLEAR W) ................................ ................................ ................................ ... 65

    9.32 LINSTRUCTION CLRWDT (CLEAR WATCHDOG)................................ ................................ .............. 66

    9.33 LINSTRUCTION COMF (COMPLEMENT F) ................................ ................................ ......................... 66

    9.34 LINSTRUCTION SLEEP (MISE EN SOMMEIL) ....................................................................................... 67

    9. 35 LINSTRUCTION NOP (NO OPERATION) .............................................................................................. 67

    9.36 LES INSTRUCTIONS OBSOLETES ................................ ................................ ................................ .................. 67

    10. LES MODES DADRESSAGE................................ .................................................................................... 68

    10.1 LADRESSAGE LITTERAL OU IMMEDIAT ...................................................................................................... 68

    10.2 LADRESSAGE DIRECT ................................ ................................ ................................ ................................ 68

    10.3 LADRESSAGE INDIRECT ................................ ................................ ................................ ............................ 68

    10.3.1 Les registres FSR et INDF ................................................................................................................. 69

    11. REALISATION DUN PROGRAMME EMBARQUE ............................................................................. 71

    11.1 LE MATERIEL NECESSAIRE ................................ ................................ ................................ ......................... 71

    11.2 MONTAGE DE LA PLATINE DESSAIS ................................ ................................ ................................ ........... 71

    11.3 CREATION DU PROJET................................................................................................................................. 72

    11.4 EDITION DU FICHIER SOURCE ................................ ................................ ................................ ..................... 73

    11.5 CHOIX DE LA CONFIGURATION ................................................................................................................... 73

    11.6 LE REGISTRE OPTION............................................................................................................................... 74

    11.8 LE REGISTRE PORTA................................................................................................................................. 7811.8.1 Fonctionnement particulier des PORTS............................................................................................. 80

    11.9 LE REGISTRE TRISA................................ .................................................................................................. 80

    11.10 LES REGISTRES PORTB ET TRISB ................................ ................................ .......................................... 81

    11.11 EXEMPLE DAPPLICATION ................................ ................................ ........................................................ 82

    11.12 LA ROUTINE DINITIALISATION ................................ ................................ ................................................. 82

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    4/186

    http://www.electrocrack.fr.st 3

    11.13 LES RESULTATS DE LA COMPILATION ................................ ................................ ................................ ....... 86

    11.14 LE PROGRAMME PRINCIPAL ...................................................................................................................... 86

    11.15 LA SOUS-ROUTINE DE TEMPORISATION .................................................................................................... 87

    12. LES INTERRUPTIONS ................................ ............................................................................................... 92

    12.1 QUEST-CE QUUNE INTERRUPTION ?................................ ......................................................................... 92

    12.2 MECANISME GENERAL DUNE INTERRUPTION ................................ ................................ ............................ 92

    12.3 MECANISME DINTERRUPTION SUR LES PICS ............................................................................................. 9312.4 LES SOURCES DINTERRUPTIONS DE LA 16F84 ........................................................................................... 94

    12.5 LES DISPOSITIFS MIS EN UVRE................................ ................................ ................................ .................. 95

    12.6 LE REGISTRE INTCON (INTERRUPT CONTROL)....................................................................................... 96

    12.7 SAUVEGARDE ET RESTAURATION DE LENVIRONNEMENT ................................ .......................................... 9812.7.1 Les registres sauvegarder ............................................................................................................... 98

    12.7.3 Particulatit de linstruction RETFIE ...................... .......... ....................... ......... ....................... ... 98

    12.8 UTILISATION DUNE ROUTINE DINTERRUPTION ................................ ................................ ......................... 98

    12.9 ANALYSE DE LA ROUTINE DINTERRUPTION ............................................................................................. 100

    12.10 ADAPTATION DE LA ROUTINE DINTERRUPTION ..................................................................................... 102

    12.11 LINITIALISATION ................................................................................................................................... 104

    12.12 CONSTRUCTION DU PROGRAMME PRINCIPAL................................ ................................ .......................... 105

    12.13 CONSTRUCTION DE LA ROUTINE DINTERRUPTION ................................................................................. 106

    12.14 PASSAGE AU SIMULATEUR DUNE ROUTINE DINTERRUPTION ................................................................ 107

    12.15 PREMIERE CORRECTION : RESET DU FLAG ............................................................................................. 109

    12.16 SE METTRE A LECHELLE DE TEMPS DE LA PIC....................................................................................... 110

    12.18 FINALISATION DU PROGRAMME.............................................................................................................. 11112.19 REMARQUES IMPORTANTES.................................................................................................................... 115

    12.20 CONCLUSIONS ................................ ................................ ................................ ........................................ 115

    13. LE TIMER 0................................ ................................ ................................ ................................ ................ 116

    13.1 LES DIFFERENTS MODES DE FONCTIONNEMENT ........................................................................................ 116

    13.2 LE REGISTRE TMR0................................................................................................................................... 116

    13.3 LES METHODES DUTILISATION DU TIMER0 ............................................................................................. 11613.3.1 Le mode de lecture simple ........................ ........ ........................ ........ ........................ ........ ................ 116

    13.3.2 Le mode de scrutation du flag .......................................................................................................... 117

    13.3.3 Le mode dinterruption..................................................................................................................... 117

    13.3.4 Les mthodes combines .................................................................................................................. 118

    13.4 LE PREDIVISEUR ....................................................................................................................................... 118

    13.5 APPLICATION PRATIQUE DU TIMER0......................................................................................................... 11913.5.1 Prparations..................................................................................................................................... 119

    13.5.2 Linitialisation.................................................................................................................................. 121

    13.5.3 La routine dinterruption.................................................................................................................. 122

    13.6 MODIFICATION DES REGISTRES DANS LE SIMULATEUR ................................ ................................ ............. 123

    13.7 MISE EN PLACE SUR LA PLATINE DESSAIS ............................................................................................... 124

    13.8 PREMIERE AMELIORATION DE LA PRECISION ............................................................................................ 124

    13.9 SECONDE AMELIORATION DE LA PRECISION ............................................................................................. 125

    13.10 LA BONNE METHODE - ADAPTATION DE LHORLOGE................................ ................................ ............. 125

    13.11 LA METHODE DE LUXE : LA DOUBLE HORLOGE................................ ...................................................... 126

    13.12 EXEMPLE DUTILISATION DE 2 INTERRUPTIONS ................................ ...................................................... 126

    13.13 CONCLUSION.......................................................................................................................................... 127

    14. LES ACCES EN MEMOIRE EEPROM ..................... ........... ..................... ........... ...................... ....... 128

    14.1 TAILLE ET LOCALISATION DE LA MEMOIRE EEPROM ........................................................................... 128

    14.2 PREPARATION DU PROGRAMME................................ ................................ ................................ ................ 128

    14.3 INITIALISATION DE LA ZONE EEPROM ....................................................................................................... 130

    14.4 LE REGISTRE EEDATA................................................................................................ ............................ 131

    14.5 LE REGISTRE EEADR ................................ ................................ ................................ .............................. 131

    14.6 LE REGISTRE EECON1 ............................................................................................................................ 131

    14.7 LE REGISTRE EECON2 ............................................................................................................................ 132

    14.8 ACCES EN LECTURE DANS LA MEMOIRE EEPROM ................................................................................ 132

    14.9 LACCES EN ECRITURE A LA ZONE EEPROM ................................ ................................ .............................. 133

    14.10UTILISATION PRATIQUE DE LA MEMOIRE EEPROM ................................ ................................ ............ 135

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    5/186

    http://www.electrocrack.fr.st 4

    14.11 SECURISATION DES ACCES EN MEMOIRE EEPROM ................................ ................................ ............. 138

    14.12 CONCLUSION.......................................................................................................................................... 138

    15. LE WATCHDOG................................................................................................................................ ........ 139

    15.1 LE PRINCIPE DE FONCTIONNEMENT .......................................................................................................... 139

    15.2 LE PREDIVISEUR ET LE WATCHDOG .......................................................................................................... 139

    15.3 LES ROLES DU WATCHDOG ................................ ................................ ................................ ....................... 139

    15.4 UTILISATION CORRECTE DU WATCHDOG .................................................................................................. 14015.5 CE QUIL NE FAUT PAS FAIRE .................................................................................................................... 140

    15.6 MESURE DU TEMPS REEL DU WATCHDOG ................................ ................................ ................................ . 140

    15.7 SIMULATION DU PLANTAGE DUN PROGRAMME ................................ ................................ ....................... 142

    15.7.1 Correction avec utilisation du watchdog.......................................................................................... 143

    15.8 CHOIX DE LA VALEUR DU PREDIVISEUR.................................................................................................... 144

    15.9 CONCLUSION ................................ ................................ ................................ ................................ ............ 144

    16. LE MODE SLEEP ...................................................................................................................................... 145

    16.1 PRINCIPE DE FONCTIONNEMENT ................................ ................................ ............................................... 145

    16.2 LA SORTIE DU MODE SLEEP ................................ ................................ ................................ ................ 145

    16.3 REVEIL AVEC GIE HORS SERVICE............................................................................................................. 146

    16.4 REVEIL AVEC GIE EN SERVICE................................................................................................................. 146

    16.5 MISE EN SOMMEIL IMPOSSIBLE................................................................................................................. 146

    16.6 UTILISATION DU MODE

    SLEEP

    ................................................................................................ ............. 14616.7 CAS TYPIQUES DUTILISATION.................................................................................................................. 147

    16.8 CONCLUSION ................................ ................................ ................................ ................................ ............ 147

    17. LE RESTE DU DATASHEET ................................ ................................ ................................ ................... 148

    17.1 LA STRUCTURE INTERNE ................................ ................................ ................................ .......................... 148

    17.2 LA SEQUENCE DE DECODAGE ................................ ................................ ................................ ................... 148

    17.3 ORGANISATION DE LA MEMOIRE .............................................................................................................. 148

    17.4 LES REGISTRES SPECIAUX......................................................................................................................... 148

    17.5 LELECTRONIQUE DES PORTS ................................ ................................ ................................ ................... 149

    17.6 LE REGISTRE DE CONFIGURATION ................................ ................................ ................................ ............ 149

    17.7 LES DIFFERENTS TYPES DOSCILLATEURS................................ ................................ ................................ . 149

    17.8 LE RESET.................................................................................................................................................. 150

    17.9 LA MISE SOUS TENSION ............................................................................................................................ 151

    17.10 CARACTERISTIQUES ELECTRIQUES ................................ ................................ ................................ ......... 152

    17.11 PORTABILITE DES PROGRAMMES ................................ ................................ ................................ ............ 152

    17.12 LES MISES A JOUR DES COMPOSANTS...................................................................................................... 153

    17.13 CONCLUSION.......................................................................................................................................... 154

    18. ASTUCES DE PROGRAMMATION....................................................................................................... 155

    18.1 LES COMPARAISONS................................ ................................ ................................ ................................ . 155

    18.2 SOUSTRAIRE UNE VALEUR DE W ................................ ................................ ............................................... 155

    18.3 LES MULTIPLICATIONS ................................ ............................................................................................. 155

    18.4 MULTIPLICATION PAR UNE CONSTANTE ................................................................................................... 158

    18.5 ADRESSAGE INDIRECT POINTANT SUR 2 ZONES DIFFERENTES................................................................... 159

    18.6 LES TABLEAUX EN MEMOIRE PROGRAMME............................................................................................... 160

    18.7 LES VARIABLES LOCALES......................................................................................................................... 164

    18.7.1 Dtermination des variables locales ................................................................................................ 164

    18.7.2 Construction sans variables locales ...................... .......... ...................... .......... ...................... .......... 164

    18.7.3 Construction avec variables locales................................................................................................. 165

    18.8 CONCLUSION ................................ ................................ ................................ ................................ ............ 165

    19. LA NORME ISO 7816 ................................................................................................................................ 166

    19.1 SPECIFICITES UTILES DE LA NORME ISO 7816................................ ................................ .......................... 16619.1.1 Les commandes ISO 7816 ................................................................................................................ 166

    19.1.2 Le protocole dchange dinformations ........................................................................................... 167

    19.2 LES LIAISONS SERIE ASYNCHRONES ................................ ................................ ................................ ......... 167

    19.2.1 Le start-bit ........................ ........ ......................... ....... ......................... ....... ..................... ........... ........ 168

    19.2.2 Les bits de donne ............................................................................................................................ 168

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    6/186

    http://www.electrocrack.fr.st 5

    19.2.3 Le bit de parit ..................... ........... ...................... .......... ...................... .......... ...................... .......... 168

    19.2.4 Le stop-bit......................................................................................................................................... 169

    19.2.5 Vitesse et dbit.................................................................................................................................. 169

    19.3 ACQUISITION DES BITS ................................ ............................................................................................. 169

    19.4 CARACTERISTIQUE DES CARTES STANDARD ................................ ................................ ....................... 170

    19.5 CREATION ET INITIALISATION DU PROJET ................................ ................................ ................................ . 17119.6 LA BASE DE TEMPS ................................................................................................................................... 172

    19.7 RECEPTION DUN OCTET........................................................................................................................... 17319.8 LEMISSION DUN CARACTERE ................................................................................................................. 175

    19.9 INITIALISATION ................................ ................................ ................................ ........................................ 177

    19.10 ENVOI DE LATR ................................................................................................................................... 177

    19.11 LENVOI DU STATUS ............................................................................................................................... 179

    19.12 RECEPTION DE LA CLASSE ................................ ................................ ...................................................... 180

    19.13 RECEPTION DE INS, P1, P2, ET LEN...................................................................................................... 180

    19.14 CONTROLE DE LINSTRUCTION REUE.................................................................................................... 181

    19.15 TRAITEMENT DUNE INSTRUCTION ................................ ................................ ................................ ......... 181

    19.16 LES VARIABLES ...................................................................................................................................... 182

    19.17 CONCLUSION.......................................................................................................................................... 183

    ANNEXE1 : QUESTIONS FREQUEMMENT POSEES (F.A.Q.) ....................... ......... ........................ ....... 184

    A1.1 JE NARRIVE PAS A EDITER MON FICHIER SOURCE.................................................................................... 184

    A1.2 JE TROUVE QUE 8 SOUS-PROGRAMMES, CEST PEU .................................................................................. 184

    A1.3 JE NUTILISE QUE 8 IMBRICATIONS, ET POURTANT MON PROGRAMME PLANTE. ....................................... 184

    A1.4 MON PROGRAMME SEMBLE NE JAMAIS SORTIR DES INTERRUPTIONS ................................ ....................... 184A1.5 JE NARRIVE PAS A AJOUTER UN NUD A MON PROJET ................................ ................................ ............ 185

    A1.6 JE NARRIVE PAS A UTILISER LE SIMULATEUR, LES OPTIONS SONT EN GRISE................................ ............ 185

    A1.7 JE REOIS UN MESSAGE DERREUR EOF AVANT INSTRUCTION END................................ ....................... 185

    UTILISATION DU PRESENT DOCUMENT............................................. ERREUR ! SIGNET NON DEFINI.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    7/186

    http://www.electrocrack.fr.st 6

    1. Introduction

    Et voil, nous voil partis ensemble pour cette grande aventure quest la

    programmation des pics. Je vais tenter de rester le plus concret possible, mais, cependant, une

    certaine part de thorie est indispensable pour arriver au but recherch.

    Je vais donc commencer ce petit cours par un rappel sur les systmes de numrotation.

    Ca y est, jen vois qui rlent dj. Mais je suis sr que vous comprendrez quil est impossible

    de programmer srieusement un microcontroleur sans savoir ce quest un bit, ou comment

    convertir les notations dcimales en hexadcimales.

    Rassurez-vous, je vais faire bref, et nous pourrons trs rapidement aborder le sujet qui

    nous intresse tant. Si vous tes dj un pro, vous pouvez sauter le premier chapitre et passerdirectement au suivant.

    Nhsitez jamais me faire part de vos remarques, ni me signaler les erreurs qui

    mauraient chappes. Faites du copier/coller, rpercutez les infos que vous trouverez ici ou

    amliorez la prsentation sans vergogne. Je vous demande simplement, si vous modifiez

    quelque chose, de lindiquer clairement en annotation.

    Jattire votre attention sur le fait que ce cours, pour tre efficace, doit tre lu tout en

    ralisant les exercices que je vous propose. Les solutions des exercices sont disponibles sous

    forme de fichiers exemples fournis en annexe de ce cours.

    Tout ce quil vous faudra, cest une 16F84, un quartz de 4MHz, une petite platine

    dessais, une LED, un bouton poussoir et le logiciel MPLAB, mis gracieusement votre

    disposition par la socit Microchip ladresse http://www.microchip.com.. A cette mme

    adresse, vous pourrez vous procurer le datasheet de la 16F84.

    Jai utilis personnellement la version 5.20 de MPLAB. Si vous utilisez une autre

    version, vous trouverez peut-tre des diffrences. Je ne doute pas que vous arriviez

    surmonter ces petites difficults.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    8/186

    http://www.electrocrack.fr.st 7

    2. Les systmes de numrotation

    2.1 Le systme dcimal

    Nous sommes habitus, depuis notre enfance utiliser le systme numrique dcimal,

    tel point que nous ne voyons mme plus la manire donc ce systme fonctionne, tant cestdevenu un automatisme.

    Dcimal, pourquoi ? Parce quil utilise une numrotation 10 chiffres. Nous dirons

    que cest un systme en BASE 10. Pour la petite histoire, on a utilis un systme base 10 car

    nos anctres ont commenc compter sur leurs 10 doigts, pas besoin daller chercher plus

    loin. Mais la position des chiffres a galement une grande importance. Les chiffres les moins

    significatifs se situent droite du nombre, et leur importance augmente au fur et mesure du

    dplacement vers la gauche. En effet, dans le nombre 502, le 5 une plus grande importance

    que le 2. En ralit, chaque chiffre, que lon peut appeler DIGIT, une valeur qui dpend de

    son RANG . Quel est ce rapport ? Il sagit tout simplement de llvation de la BASE utiliselev la puissance de son RANG .

    Cela a lair complexe crire, mais est trs simple comprendre. Quand vous avez

    compris ceci, vous comprendrez automatiquement nimporte quel systme de numrotation.

    Reprenons, par exemple notre nombre 502. Que signifie-t-il ? Et bien, tout simplement que sa

    valeur est gale 2 multipli par la base (10) leve la puissance du rang du chiffre, cest

    dire 0. Remarquez ici une chose trs importante : le comptage du rang seffectue toujours de

    droite gauche et en commenant par 0. Pour notre nombre 502, sa valeur est donc en ralit :

    502 = 2*10 + 0*101

    + 5*10. Notez que le symbole * est utilis pour indiquer multipli .

    Et rappelez-vous que 10 = (10/10) = 1, que 101

    = 10, et que 10 = 10*10 = 100 etc.

    2.2 Le systme binaire

    Vous avez compris ce qui prcde ? Alors la suite va vous paratre simple.

    Cela ne pose aucun problme pour vous de compter sur vos 10 doigts, mais pour les

    ordinateurs, cela nest pas si simple. Ils ne savent faire la distinction quentre 2 niveaux

    (prsence ou absence de tension). Le systme de numrotation dcimal est donc inadapt.

    On comprendra immdiatement que le seul systme adapt est donc un systme en

    base 2, appel systme binaire. Ce systme ne comporte donc que 2 chiffres, savoir 0 et 1.

    Comme, de plus, les premiers ordinateurs (et les pics) travaillent avec des nombres de 8

    chiffres binaires, on a donc appel ces nombres des octets (ou bytes en anglais). Le chiffre 0

    ou 1 est appel un BIT(unit binaire, ou BInary uniT) .

    Pour nous y retrouver dans la suite de ce petit ouvrage, on adoptera les conventions

    suivantes : tout nombre dcimal est crit tel quel, tout nombre binaire est crit suivant la

    forme Bxxxxxxxx dans lesquels les x valent 0 ou 1, vous avez suivi.

    Analysons maintenant un nombre binaire, soit loctet : B10010101. Quelle est donc

    sa valeur en dcimal ?

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    9/186

    http://www.electrocrack.fr.st 8

    Et bien, cest trs simple, on applique le mme algorithme que pour le dcimal.

    Partons de la droite vers la gauche, on trouve donc :

    B10010101 = 1*2 + 0*21

    + 1*2 + 0*23

    + 1* 24

    + 0*25

    + 0*26

    + 1*27

    Comme, videmment 0 multipli par quelque chose = 0 et que 1 multipli par un

    chiffre = le chiffre en question, on peut ramener le calcul prcdent :

    B 10010101 = 1+4+16+128 = 149

    Vous voyez donc quil est trs facile de convertir nimporte quel chiffre de binaire en

    dcimal. Et linverse me direz-vous ? Et bien, cest galement trs simple. Il faut juste

    connatre votre table des exposants de 2. Cela sapprend trs vite lorsquon sen sert.

    On procde simplement de la manire suivante (il y en a dautres) :

    Quel est le plus grand exposant de 2 contenu dans 149 ? Rponse 7 (27

    = 128)

    On sait donc que le bit7 vaudra 1. Une fois fait, il reste 149-128 = 21

    Le bit 6 reprsente 64, cest plus grand que 21, donc b6 = 0Le bit 5 reprsente 32, cest plus grand que 21, donc b5 = 0

    Le bit 4 reprsente 16, donc a passe, b4 = 1, il reste 21-16 = 5

    Le bit 3 reprsente 8, cest plus grand que 5, donc b3 = 0

    Le bit 2 reprsente 4, donc b2 = 1, reste 5-4 = 1

    Le bit1 reprsente 2, cest plus grand que 1, donc b1 = 0

    Le bit 0 reprsente 1, cest ce quil reste, donc b1=1, reste 0

    Le nombre binaire obtenu est donc B10010101, qui est bien notre octet de dpart.

    Notez que si on avait trouv un nombre de moins de 8 chiffres, on aurait complt avec des 0

    placs gauche du nombre. En effet, B00011111 = B 11111, de mme que 0502 = 502.

    Pensez toujours complter les octets de faon obtenir 8 bits, car cest impos par la

    plupart des assembleurs (nous verront ce que cest dans la suite de ces leons).

    Notez que la plus grande valeur pouvant tre reprsente par un octet est donc :

    B11111111. Si vous faites la conversion (ou en utilisant la calculette de windows en mode

    scientifique), vous obtiendrez 255. Tout nombre suprieur 255 ncessite donc plus dun

    octet pour tre reprsent.

    2.3 Le systme hexadcimal

    La reprsentation de nombres binaires nest pas vidente grer, et crire unesuccession de 1 et de 0 reprsente une grande source derreurs. Il fallait donc trouver une

    solution plus pratique pour reprsenter les nombres binaires. On a donc dcider de couper

    chaque octet en 2 (QUARTET) et de reprsenter chaque partie par un chiffre.

    Comme un quartet peut varier de b0000 b1111, on constate que lon obtient une

    valeur comprise entre 0 et 15. Cela fait 16 combinaisons. Les 10 chiffres du systme dcimal

    ne suffisaient donc pas pour coder ces valeurs.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    10/186

    http://www.electrocrack.fr.st 9

    Plutt que dinventer 6 nouveaux symboles, il a t dcid dutiliser les 6 premires

    lettres de lalphabet comme CHIFFRES. Ce systme de numrotation en base 16 a donc t

    logiquement appel systme hexadcimal.

    Notez que ce systme est simplement une reprsentation plus efficace des nombres

    binaires, et donc que la conversion de lun lautre est instantane. Dans la suite de ces

    leons, nous noterons un nombre hexadcimal en le faisant prcder de 0x. Voyons si vousavez bien compris :

    Tableau de conversion des diffrents quartet (un demi-octet)

    Binaire Hexadcimal Dcimal

    B0000 0x0 0

    B0001 0x1 1

    B0010 0x2 2

    B0011 0x3 3

    B0100 0x4 4

    B0101 0x5 5B0110 0x6 6

    B0111 0x7 7

    B1000 0x8 8

    B1001 0x9 9

    B1010 0xA 10

    B1011 0xB 11

    B1100 0xC 12

    B1101 0xD 13

    B1110 0xE 14

    B1111 0xF 15

    Pour reprsenter un octet il faut donc 2 digits hexadcimaux. Par exemple, notre

    nombre B10010101 est reprsent en hexadcimal par 0x95. Si vous faites la conversion de

    lhexadcimal vers le dcimal, vous utilisez le mme principe que prcdemment, et vous

    obtenez 0x95 = 9*161

    + 5*16 = 149, ce qui est heureux.

    Pour preuve, quel est le plus grand nombre hexadcimal de 2 digits pouvant tre

    reprsent ? Rponse : 0xFF, soit 15*16 + 15 = 255.

    Si vous avez bien tout compris, vous tes maintenant capable de convertir nimporte

    quel nombre de nimporte quelle base vers nimporte quelle autre.

    2.4 Les oprations

    Aprs avoir converti les nombres dans diffrents formats, vous allez voir quil est

    galement trs simple de raliser des oprations sur ces nombres dans nimporte quel format.

    Il suffit pour cela deffectuer les mmes procdures quen dcimal.

    Petit exemple : Que vaut B1011 + B 0110 ?

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    11/186

    http://www.electrocrack.fr.st 10

    Et bien, on procde exactement de la mme faon que pour une opration en dcimal.

    B1011

    + B 1110

    ---------------

    On additionne les chiffres de droite, et on obtient 1+0 = 1On crit 1

    On additionne 1 + 1 , et on obtient 10 (2 nexiste pas en binaire). On crit 0 et on reporte 1

    On additionne 0+1+le report et on obtient 10. On crit 0 et on reporte 1

    On additionne 1+1+le report et on obtient 11. On crit 1 et on reporte 1

    Reste le report que lon crit, soit 1.

    La rponse est donc B11001, soit 25.

    Les 2 nombres de dpart tant B1011, soit 11, et B1110, soit 14. Vous procderez de la

    mme manire pour les nombres hexadcimaux, en sachant que :

    0xF + 0x1 = 0x10, soit 15+1 = 16.

    2.5 Les nombres signs

    Dans certaines applications, il est ncessaire de pouvoir utiliser des nombres ngatifs.

    Comme les processeurs ne comprennent pas le signe - , et comme il fallait limiter la taille

    des mots 8 bits, la seule mthode trouve a t dintroduire le signe dans le nombre.

    On a donc choisi (pas au hasard) le bit 7 pour reprsenter le signe. Dans les nombres signs,

    un bit 7 un signifie nombre ngatif. Si on stait content de cela, on aurait perdu une valeur

    possible. En effet, B10000000 (-0) tait alors gal B00000000 (0). De plus, pour des

    raisons de facilit de calcul, il a t dcid dutiliser une notation lgrement diffrente.

    Pour rendre un nombre ngatif, il faut procder en 2 tapes.

    1) On inverse la totalit du nombre.

    2) On ajoute 1

    On obtient alors ce quon appelle le COMPLEMENT A DEUX du nombre.

    Exemple : soit le nombre 5 : B00000101 Comment crire 5 ?

    1) on inverse tous les bits (complment 1) B11111010

    2) on ajoute 1 (complment 2) 5 = B11111011

    Pour faire la conversion inverse, on procde de manire identique.

    1) on inverse tous les bits B00000100

    2) On ajoute 1 B00000101

    Et on retrouve notre 5 de dpart

    Dans le cas des nombres signs, on obtient donc les nouvelles limites suivantes :

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    12/186

    http://www.electrocrack.fr.st 11

    La plus grande valeur est B01111111, soit +127

    La plus petite valeur devient B10000000, soit 128.

    Remarquez que les oprations continuent de fonctionner. Prenons 3 + 5

    B11111101 (-3)

    + B00000101 (5)= B100000010 (2)

    Et la, me direz vous, a ne fait pas 2 ? Et bien si, regardez bien, il y a 9 bits , hors le

    processeur nen gre que 8. Le 9me

    est donc tomb dans un bit spcial que nous verront plus

    tard. Dans le registre du processeur, il reste donc les 8 bits de droite, soit 2, qui est bien gal

    (3 )+ 5.

    Maintenant, si vous avez bien suivi, vous tes en train de vous poser la question

    suivante : Quand je vois B11111101, est-ce que cest 3 ou est-ce que cest 253 ? Et bien

    vous ne pouvez pas le savoir sans connatre le contexte.

    Sachez que les nombres signifient uniquement ce que le concepteur du programme ena dcid. Sil travaille avec des nombres signs ou non, ou si cet octet reprsente tout autre

    chose. La seule chose qui importe cest de respecter les conventions que vous vous tes fixs

    lors de la cration de cet octet. Cest donc vous de dcider de quoi vous avez besoin pour tel

    type de donnes.

    2.6 Les oprations boolennes.

    Quest-ce que cest que a, me direz-vous ? Et bien, pour faire simple, disons que ce

    sont des oprations qui seffectuent bit par bit sur un octet donn. Plutt quune grosse thorie

    sur lalgbre de boole (jen vois qui respirent), je vais donner dans le concret en prsentant les

    oprations indispensables connatre dans la programmation des pics et autres

    microcontrleurs.

    2.6.1 Le complment

    Que vous trouverez galement sous les formes inversion ou NOT ou encore

    complment 1. Elle est souvent note !

    Cest tout simple, cela consiste inverser tous les bits de loctet.

    Exemple : NOT B10001111 donne B01110000 . Vous voyez ici que pour les oprations

    boolennes, il est plus facile de travailler en binaire. Traduisez lexemple ci-dessus en

    hexadcimal (on dira maintenant hexa ) ou en dcimal et essayez de complmenter

    directement. Bonjour les neurones.A quoi sert-elle ? Par exemple lire une valeur dont les niveaux actifs ont t inverss,

    raliser des nombres ngatifs, ou autres.

    2.6.3 La fonction ET ou AND

    Appele galement multiplication bit bit, ou AND et souvent note &

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    13/186

    http://www.electrocrack.fr.st 12

    Elle consiste appliquer un mot sur un autre mot et multiplier chaque bit par le bit de

    mme rang. Pour faire une opration ET , il faut donc toujours 2 octets.

    Les diffrentes possibilits sont donnes ci-dessous (le tableau se lit horizontalement)

    Premire ligne : 0 AND 0 = 0. Ce type de tableau sappelle table de vrit

    Bit1 Bit2 AND0 0 0

    0 1 0

    1 0 0

    1 1 1

    On voit donc que la seule possibilit pour obtenir un 1 est que le Bit1 ET le Bit2 soient

    1 . Ceci correspond une multiplication. 1*1 = 1, 0*1 = 0, 1*0 = 0.

    Exemple :

    Soit B11001100 AND B 11110000 donne B11000000

    A quoi sert cette instruction ? Et bien, elle est utilise pour MASQUER des bits qui ne

    nous intressent pas.

    Prenez lexemple ci-dessus : Le 2me

    octet contient 4 bits 1 et 4 bits 0. Regardez le

    rsultat obtenu : Les 4 premiers bits de loctet 1 sont conservs (1100), lemplacement des 4

    autres nous trouvons des 0.

    On peut donc laide de cette instruction positionner un ou plusieurs bits dans un mot

    0 sans connatre son contenu.

    2.6.4 La fonction OU ou OR

    Encore appele OR, souvent note | elle permet, comme son nom lindique, de

    positionner un bit 1 si le Bit1 OU le Bit2 est 1.

    La table de vrit suivante explique le fonctionnement de cette fonction.

    Bit1 Bit2 OR

    0 0 0

    0 1 1

    1 0 1

    1 1 1

    Petit exemple B10001000 OR B11000000 donne B11001000

    A quoi sert cette instruction ? Et bien, tout simplement elle permet de forcer nimporte quel

    bit dun mot 1 sans connatre son contenu.

    Vous voyez que dans lexemple prcdent, les 2 premiers bits ont t forcs au niveau 1,

    indpendamment de leur niveau prcdent.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    14/186

    http://www.electrocrack.fr.st 13

    2.6.5 La fonction OU EXCLUSIF ou Exclusif OR ou XOR

    Voici la dernire fonction que nous allons aborder dans cette mise niveau. Elle est

    souvent appele XOR (eXlusif OR). Elle se comporte comme la fonction OR, un dtail prs.

    Pour obtenir 1, il faut que le Bit1 soit 1 OU que le Bit2 soit 1 lEXCLUSION desdeux bits ensemble. Si les 2 bits sont 1, alors le rsultat sera 0.

    Voici donc la table de vrit.

    Bit1 Bit2 XOR

    0 0 0

    0 1 1

    1 0 1

    1 1 0

    Petit exemple : B10001000 XOR B11000000 donne B01001000

    A quoi sert cette instruction ? et bien tout simplement inverser un ou plusieurs bits dans un

    mot sans toucher aux autres. Dans lexemple prcdent, vous voyez qu lemplacement des 2

    bits 1 du 2me

    octet, les bits correspondants du 1er

    octet ont t inverss.

    Voil, ainsi se termine le premier chapitre consacre aux pics. Je sais quil tait

    particulirement rbarbatif, mais, si vous ne matrisez pas parfaitement ce qui vient dtre

    expliqu, vous ne pourrez pas raliser correctement vos propres programmes.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    15/186

    http://www.electrocrack.fr.st 14

    3. Composition et fonctionnement des PICs

    Enfin quelque chose de plus intressant. Nous allons maintenant nous pencher sur une

    PIC, et en particulier sur la 16F84. Rassurez-vous, tout ce que nous verrons sur la 16F84

    pourra tre directement utilis sur les 16F876, qui ne sont rien dautre que des 16F84

    amliores. Chaque PIC dispose des fonctionnalits des modles infrieurs, augmentes denouvelles fonctions.

    Tout dabord, vous devez tlcharger le datasheet de la 16F84, car cest un document

    que nous allons utiliser dans le reste de ces petites leons. Je vous conseille vivement de

    limprimer, car vous en aurez toujours besoin quand vous vous lancerez dans la ralisation de

    vos propres programmes.

    Ces datasheets sont mes livres de chevet. Jai trouv plus judicieux de travailler par la

    pratique et de commenter, plutt que de traduire btement les datasheets en question.

    3.1 Quest-ce quune PIC ?

    Une PIC nest rien dautre quun microcontrleur, cest dire une unit de traitement

    de linformation de type microprocesseur laquelle on a ajout des priphriques internes

    permettant de raliser des montages sans ncessiter lajout de composants externes.

    La dnomination PIC est sous copyright de Microchip, donc les autres fabricants ont

    t dans limpossibilit dutiliser ce terme pour leur propre microcontrleurs.

    Les PICs sont des composants dits RISC (Reduce Instructions Construction Set), ou

    encore composant jeu dinstructions rduit. Pourquoi ? Et bien, sachez que plus on rduit le

    nombre dinstructions, plus facile et plus rapide en est le dcodage, et plus vite le composantfonctionne.

    Toutes les PICs Mid-Range ont un jeu de 35 instructions, stockent chaque instruction

    dans un seul mot de programme, et excutent chaque instruction (sauf les sauts) en 1 cycle.

    On atteint donc des trs grandes vitesses, et les instructions sont de plus trs rapidement

    assimiles.

    Lhorloge fournie la PIC est prdivise par 4 au niveau de celle-ci. Cest cette base

    de temps qui donne le temps dun cycle.

    Si on utilise par exemple un quartz de 4MHz , on obtient donc 1000000 de

    cycles/seconde, hors, comme la pic excute pratiquement 1 instruction par cycle, hormis lessauts, cela vous donne une puissance de lordre de 1MIPS (1 Million dInstructions Par

    Seconde).

    Pensez que les pics peuvent monter 20MHz. Cest donc une vitesse de traitement

    plus quhonorable.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    16/186

    http://www.electrocrack.fr.st 15

    3.2 Les diffrentes familles des PICs

    La famille des PICs est subdivise en 3 grandes familles : La famille Base-Line, qui

    utilise des mots dinstructions (nous verrons ce que cest) de 12 bits, la famille Mid-Range,

    qui utilise des mots de 14 bits (et dont font partie la 16F84 et 16F876), et la famille High-End,

    qui utilise des mots de 16 bits.

    Nous nous limiterons dans cet ouvrage la famille Mid-Range, sachant que si vous

    avez tout compris, vous passerez trs facilement une autre famille, et mme un autre

    microcontrleur.

    Notez ds prsent que le datasheet de la 16F84 nest quune petite partie de la

    documentation complte. Pour obtenir la documentation complte, vous ajoutez encore plus

    de 600 pages en tlchargeant chez Microchip les datasheet pour la gamme Mid-Range.

    Cependant, la documentation de base suffit pour 99,9% des applications, et, de plus,

    les datasheet Mid-Range sont disponibles sous la forme dun fichier par chapitre. Jai pour ma

    part presque tout imprim, mais je vous conseille plutt daller les chercher le jour o vous en

    aurez besoin.

    3.3 Identification dune PIC

    Pour identifier une PIC, vous utiliserez simplement son numro.

    Les 2 premiers chiffres indiquent la catgorie de la PIC, 16 indique une PIC Mid-Range.

    Vient ensuite parfois une lettre L : Celle-ci indique que la PIC peut fonctionner avec une

    plage de tension beaucoup plus tolrante.

    Ensuite, vous trouvez :

    - C indique que la mmoire programme est une EPROM ou plus rarement une EEPROM

    - CR pour indiquer une mmoire de type ROM

    - Ou F pour indiquer une mmoire de type FLASH.

    Notez ce niveau que seule une mmoire FLASH ou EEPROM est susceptible dtre

    efface, donc nesprez pas reprogrammer vos PICs de type CR. Pour les versions C, voyez le

    datasheet

    Puis vous verrez les derniers chiffres identifient prcisment la PIC. (84)

    Enfin vous verrez sur les botiers -XX dans laquelle XX reprsente la frquence

    dhorloge maximale que la PIC peut recevoir. Par exemple 04 pour une 4MHz.

    Donc, une 16F84-04 est une PIC Mid-Range (16) donc la mmoire programme est de

    type FLASH (F) donc rinscriptible de type 84 et capable daccepter une frquence dhorloge

    de 4MHz.

    Une dernire indication que vous trouverez est le type de botier. Nous utiliserons pour

    nos exprience le botier PDIP, qui est un botier DIL 18 broches, avec un cartement entre

    les ranges de 0.3 (troit). La version 4MHz sera amplement suffisante.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    17/186

    http://www.electrocrack.fr.st 16

    Notez ds prsent que les PICs sont des composants STATIQUES, cest dire que la

    frquence dhorloge peut tre abaisse jusque larrt complet sans perte de donnes et sans

    dysfonctionnement. Une version 10 peut donc toujours tre employe sans problme en lieu

    et place dune 04. Pas linverse, naturellement.

    Ceci par opposition aux composants DYNAMIQUES, donc la frquence dhorloge

    doit rester dans des limites prcises. Nessayez donc pas de faire tourner votre PIII/500

    166MHz, car cest un composant dynamique.

    Donc, si vous voulez passer commande pour la PIC que nous allons utiliser dans le

    reste de cet ouvrage, demandez donc une PIC16F84-04 en botier PDIP .

    3.4 Organisation de la 16F84

    La mmoire de la 16F84 est divise en 3 parties. Page 4 du datasheet, vous trouverez

    la table 1-1 qui donne un aperu de la famille 16F8X. Les numros de pages peuvent varier en

    fonction des mises jour de Microchip. Vous devrez peut-tre chercher un peu.

    Pour ceux qui veulent tout comprendre, la figure 3-1 de la page 8 montrelorganisation interne dune 16F84. Si cela intresse du monde, jexpliquerais ce schma

    aprs la fin des cours complets (pour ne pas noyer tout le monde).

    3.4.1 La mmoire programme

    La mmoire programme est constitue de 1K mots de 14 bits. Cest dans cette zone que

    vous allez crire votre programme. Ceci explique pourquoi vos fichiers sur PC font 2Kbytes.

    En effet, il faut 2 octets pour coder 14 bits. Ceci explique galement pourquoi, lorsque

    vous lisez une PIC vierge, vous allez lire des 0x3FFF. Cela donne en binaire

    B11111111111111, soit 14 bits. Jexpliquerais plus loin do proviennent ces fameux 14

    bits.

    Notez ce point quune instruction est code sur 1 mot. Donc, 1K donne 1 bon millier

    dinstructions possibles (cest dj pas si mal). Quand vous en serez crire des programmes

    de 1K, vous serez sans aucun doute autonome pour vos applications.

    3.4.2 La mmoire eeprom

    La mmoire eeprom (Electrical Erasable Programmable Read Only Memory), est

    constitue de 64 octets que vous pouvez lire et crire depuis votre programme. Ces octets sontconservs aprs une coupure de courant et sont trs utiles pour conserver des paramtres

    semi-permanents. Leur utilisation implique une procdure spciale que nous verrons par la

    suite, car ce nest pas de la RAM, mais bien une ROM de type spcial. Il est donc plus rapide

    de la lire que dy crire. Si vous programmez souvent des eeproms (2416) vous aurez constat

    dj ce phnomne.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    18/186

    http://www.electrocrack.fr.st 17

    3.4.3 La mmoire Ram

    La mmoire RAM est celle que nous allons sans cesse utiliser. Toutes les donnes qui y

    sont stockes sont perdues lors dune coupure de courant. La mmoire RAM est organise en

    2 banques pour la 16F874. La RAM est subdivise de plus en deux parties. Dans chacune des

    banques nous allons trouver des cases mmoires spciales appeles REGISTRES

    SPECIAUX et des cases mmoires libres dont vous pouvez vous servir votre guise.

    Pour le cas de la 16F84, vous disposerez de 68 octets libres. Lorganisation de la RAM est

    montre dans le tableau 4-2 page 13. Vous voyez la sparation verticale en 2 banques, et tout

    en bas vous voyez deux banques de 68 octets de RAM.

    Malheureusement, lindication mapped in bank 0) vous indique quaccder ces 68

    octets depuis la banque 0 ou la banque 1 donne en fait accs la mme case mmoire.

    Vous voyez dans la partie suprieure le nom de tous les registres spciaux utiliss dans la

    PIC. Nous les verrons tous, rassurez-vous.

    Chaque registre provoque un fonctionnement spcial de la PIC ou la mise en service dunefonction particulire. Vous remarquerez enfin que certains registres sont identiques dans les 2

    banques (FSR par exemple). Cela signifie quy accder depuis la banque 0 ou 1 ne fait pas de

    diffrence.

    Remarquez que la banque 0 utilise les adresses de 0x00 0x7F, la banque 1 allant de

    0x80 0xFF. Les zones en gris sont des emplacements non utiliss (et non utilisables).

    Lemplacement 0x00 est un emplacement auquel on ne peut pas accder.

    Pour la grande majorit des registres, chaque bit a une fonction spciale. Page 14, tableau

    4-1, vous trouverez les noms des bits utiliss dans ces registres.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    19/186

    http://www.electrocrack.fr.st 18

    4. Organisation des instructions

    4.1 Gnralits

    Allez, courage, cela devient de plus en plus concret. On va faire un petit survol du jeudinstructions des PICs. On saute directement page 55 du datasheet, au chapitre 9. Et oui,

    comme cet ouvrage nest pas un manuel de rfrence technique, mais un apprentissage, il faut

    voir les chapitres dans le dsordre.

    Sur cette page, vous trouvez un petit encadr gris qui fait allusion deux anciennes

    instructions qui ne sont plus utilises. Nous ne nous en servirons donc pas. Par contre, vous

    trouvez un tableau 9-1 qui indique comment les instructions sont codes dans la PIC. Et la,

    vous voyez enfin quoi correspondent nos 14 bits de mmoire programme.

    4.2 Les types dinstructions

    Vous constaterez donc quil existe 4 type dinstructions :

    4.2.1 Les instructions orientes octet

    Ce sont des instructions qui manipulent les donnes sous forme doctets. Elles sont codes

    de ma manire suivante :

    - 6 octets pour linstruction : logique, car comme il y a 35 instructions, il faut 6 bits pour

    pouvoir les coder toutes

    - 1 bit (d) pour indiquer si le rsultat obtenu doit tre conserv dans le registre de travail de

    lunit de calcul (W pour Work) ou sauv dans loprante (F pour File).

    - Reste 7 bits pour encoder loprande (File)

    Aie, premier problme, 7 bits ne donnent pas accs la mmoire RAM totale, donc voici

    ici lexplication de la division de la RAM en deux banques.

    En effet, il faudra bien trouver une solution pour remplacer la bit manquant. Vous avez dit

    un bit dun des registres ? BRAVO, je vois que vous avez tout compris. Il sagit en ralit

    du bit RP0 du registre STATUS.

    Ah, vous avez remarqu quil y a un RP1 ? Et oui, la 16F876 a 4 banques. Vous veillerez

    laisser RP1 0 pour la 16F84, afin de pouvoir porter votre programme sans problmevers une PIC suprieure.

    4.2.2 Les instructions orientes bits

    Ce sont des instructions destines manipuler directement des bits dun registre

    particulier. Elles sont codes de la manire suivante :

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    20/186

    http://www.electrocrack.fr.st 19

    - 4 bits pour linstruction (dans lespace rest libre par les instructions prcdentes)

    - 3 bits pour indiquer le numro du bit manipuler (bit 0 7 possible), et de nouveau 7 bits

    pour indiquer loprande.

    4.2.3 Les instructions gnrales

    Ce sont les instructions qui manipulent des donnes qui sont codes dans linstruction

    directement. Nous verrons ceci plus en dtail lorsque nous parlerons des modes dadressage.

    Elles sont codes de la manire suivante :

    - Linstruction est code sur 6 bits

    - Elle est suivie dune valeur IMMEDIATE code sur 8 bits (donc de 0 255).

    4.2.4 Les sauts et appels de sous-routines

    Ce sont les instructions qui provoquent une rupture dans la squence de droulement

    du programme. Elles sont codes de la manires suivante :

    - Les instructions sont cods sur 3 bits

    - La destination code sur 11 bits

    Nous pouvons dj en dduire que les sauts ne donnent accs qu 2K de mmoire

    programme (211

    ).

    Rappelez-vous que lespace mmoire programme est de 1Kmots. Pour coder une adresse

    de saut lintrieur de la mmoire programme, il faut donc 10 bits (210 = 1024 = 1K).

    Par convention, en effet, 1Kbytes correspond 210

    = 1024 octets. Ce qui explique que si

    vous avez 16K de mmoire, en ralit vous avez 16*1024 = 16384 bytes. Par extension,

    1Mbyte = 1024 Kbytes, donc 1048576 octets.

    Maintenant vous voyez pourquoi vous voyez plus que votre mmoire thorique lors du

    test mmoire au dmarrage de votre ordinateur. Une petite parenthse qui na rien voir ici :

    les fabricants de disques durs considrent que 1Mbytes = 1000000 bytes. Comme Windows

    indique la taille en Mbytes de 1048576 bytes, cela vous explique pourquoi la plupart de vos

    disques durs semblent plus petits que prvus.

    4.3 Panoramique des instructions

    Je vais maintenant vous montrer comment fonctionne le tableau de la figure 9-2 page

    56. Ce tableau vous permet dun simple regard de vous informer de la manire dont

    fonctionne chaque instruction

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    21/186

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    22/186

    http://www.electrocrack.fr.st 21

    Notez que toutes les instructions ncessitent un seul cycle, sauf les sauts qui en

    ncessitent 2, et les oprations de test avec saut, lorsque le rsultat du test engendre le saut

    (instructions avec 1(2)).

    La 4me

    colonne donne ce quon appelle l OPCODE, cest dire le mot binaire que

    MPLAB va gnrer pour vous au dpart du mnmonique.

    Vous ne vous en servirez donc pas, mais sachez que vous pourriez programmer

    directement la PIC sans passer par un assembleur, directement en construisant un fichier .hex

    et en entrant les valeurs trouves ici.

    Vous devriez alors tout calculer, y compris les sauts. Cest ce que jai fait mes

    dbuts sur un processeur 6502, car je ne disposais pas dun assembleur. On pouvait galement

    utiliser cette technique pour construire des programmes auto-modifis pour cause de

    restriction mmoire.

    Rassurez-vous, ces techniques appartiennent maintenant au moyen-ge de

    linformatique. Tout au plus vous pouvez mettre en corrlation les valeurs prsentes ici avec

    les valeurs du tableau 9-1 titre ducatif. Sinon, oubliez cette colonne.

    La 5me

    colonne est primordiale, car elle donne les INDICATEURS DETATS ou

    STATUS FLAGS affects (modifis) une fois linstruction effectue. Nous verrons ces

    indicateurs en dtail, car ils sont la cl de la programmation.

    La dernire colonne renvoie des notes en bas de page. La note 1 est trs importante,

    elle fait allusion la mthode lecture/modification/criture propres aux ports

    dentres/sortie (I/O).

    Nous y reviendront au moment de la mise en uvre des PORTS.

    La note 2 indique quune modification dun timer remet zro son prdiviseur. Nous y

    reviendront en abordant le TMR0.

    La troisime note indique que si vous vous servez de linstruction pour modifier le

    compteur de programme (celui qui pointe sur la PROCHAINE instruction excuter), il y

    aura un cycle supplmentaire. Cest logique car cela quivaut un saut. Nous verrons que

    cette technique est pratique pour aller chercher des valeurs dans une table construite en

    FLASH RAM.

    4.4 Les indicateurs dtat

    Ces indicateurs sont indispensables pour la programmation. Il est donc absolument

    ncessaire davoir compris leur fonctionnement (du moins pour Z et C).

    Lisez donc attentivement ce qui suit. Tous les indicateurs sont des bits du registre

    STATUS. Voyez le tableau page 15. Nous aborderons ici les flags Z et C. Les autres seront

    traits lors de ltude des registres.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    23/186

    http://www.electrocrack.fr.st 22

    4.4.3 Lindicateur dtat Z

    Cest lindicateur Zero, il fonctionne de la manire suivante :

    Si le rsultat dune opration POUR LEQUEL IL EST AFFECTE, donne un rsultat

    gal 0, le flag Zero passe 1.

    Donc, ne vous mlangez pas les pinceaux. Dire si Z = 1 correspond dire si

    rsultat = 0 . Le tableau 9-2, colonne 5 vous indique les instructions qui modifient Z.

    Donc, si vous faites une addition avec ADDWF et que le rsultat obtenu est 0, le bit Z

    sera 1. Si le rsultat est 0 (diffrent de 0), le bit Z vaudra 0. Dans les 2 cas il est modifi.

    Par contre, si vous stockez une valeur avec linstruction MOVWF, le bit Z ne sera pas

    modifi, mme si la valeur vaut 0. Ces remarques sont valables pour les autres flags, donc je

    ny reviendrai pas.

    4.4.4 Lindicateur dtat C

    Cest lindicateur pour Carry (report). Si le rsultat dune opration entrane un

    dbordement, le bit C sera positionn. Il sagit en fait du 9me

    bit de lopration.

    Petit exemple :

    Si vous ajoutez B11111110 (254)

    + B00000011 (3)

    Vous obtenez B100000001, (257) donc 9 bits.

    Comme les registres de la PIC ne font que 8 bits, vous obtiendrez B00000001 (1) et

    C positionn 1 (en fait le 9me

    bit, donc le bit 8, donc 28

    = 256). Donc le rsultat final est de

    256 + 1 = 257.

    Remarquez que si vous aviez ajout B11111110 et B00000010, vous auriez obtenu

    B00000000.

    Dans ce cas, vous auriez eu C 1 ET Z 1, ce qui signifie rsultat nul, mais avec

    report (donc rsultat = 256).

    Les autres bits du registre dtat seront vu plus loin dans ce petit ouvrage.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    24/186

    http://www.electrocrack.fr.st 23

    5. Les dbuts avec MPLAB

    Nous allons maintenant dmarrer la grande aventure avec notre tout premier et

    modeste programme. Jexpliquerai les instructions et les registres au fur et mesure de leur

    utilisation.

    5.1 Prparation lutilisation

    La premire chose faire est daller chercher MPLAB 5.20 au bas de la page

    suivante : http://www.microchip.com/10/tools/picmicro/devenv/mplabi/software/v520/index.htm

    Dcompacter le fichier et procdez son installation.

    Personnellement, je naime pas laisser les donnes avec mes programmes dans la

    partition principale. Si vous tes comme moi, crez un rpertoire dans un endroit o vous

    rangez vos data et appelez-le, par exemple DataPic.

    Copiez y le fichier m16F84.asm fourni avec le cours. Cest un fichier que jai cr afin

    de pouvoir dmarrer instantanment un nouveau programme. Je lai appel maquette .

    Si vous ne dsirez pas crer un nouveau rpertoire, copiez ce fichier dans le rpertoire

    dinstallation : par dfaut c:\program files\MPLAB. Copiez aussi dans votre rpertoire de

    travail les fichiers P16F84.INC et P16F84a.INC contenus dans le rpertoire dinstallation de

    MPLAB, si vous avez choisi de crer un rpertoire.

    Pour chaque nouveau programme que vous allez crer, faites un copier/coller du

    fichier m16F87.asm. Pour notre premier programme, copiez/collez ce fichier et renommez la

    copie obtenue en Essai1.asm.

    5.2 Cration de notre premier projet

    Voil, maintenant, allez dans le menu dmarrer et lancez MPLAB. Aprs quelques

    secondes, vous vous trouvez devant un cran vide avec menus et barre doutils.

    Allez dans le menu project et slectionnez new project . MPLAB travaille en

    effet avec la notion de projets. Slectionnez le disque dur et le rpertoire dans lequel se

    trouvent vos data (par exemple DATAPIC), et entrez Essai1 dans la case File name .

    Une fentre intitule Edit project souvre alors. Cest dans cette fentre que vous

    allez dfinir les fichiers utiliss dans votre projet et les modalits de fonctionnement.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    25/186

    http://www.electrocrack.fr.st 24

    Dans la premire case, se trouve le nom du fichier .hex que MPLAB gnrera pour

    vous. Par dfaut, cest le nom de votre projet avec lextension .hex. Pour nous y retrouver,

    nous le laisserons tel quel. Ce sera donc Essai1.hex

    Dans la seconde case Include path se trouve le chemin des fichiers de dfinition

    (fichiers include). Comme nous avons copi les fichiers en question (avec lextension .inc)dans notre rpertoire de travail, inutile dindiquer quoi que ce soit. Ne pas non plus remplir les

    chemins des librairies (Library) et des fichiers de liens (Link). Nous nen aurons pas besoin

    pour le moment. De plus, rappelez-vous que si les fichiers sont dans votre rpertoire de

    travail, vous nindiquez rien. Dans le cas contraire, il vous suffit dindiquer le chemin pour y

    accder (par dfaut c:\temp\program files\MPLAB).

    Vous trouvez ensuite une case intitule development mode . Ceci vous permet de

    choisir avec quelle PIC vous allez travailler. Cliquez change , et une fentre souvre dans

    laquelle vous pouvez choisir la PIC pour chaque catgorie de matriel (programmateur,

    simulateur etc.). Laissez la case none coche et choisissez le processeur 16F84 dans le

    menu droulant. Une fois fait, cliquez OK, puis cliquez de nouveau OK sur la fentre derreur

    qui vous indique que vous navez pas encore de fichier .hex pour ce projet.

    Laissez la case suivante slectionne sur microchip , puisque nous allons utiliser les

    outils Microchip.

    Vient ensuite une case dans laquelle se trouvent les nuds (NODE) utiliss dans votre

    projet, cest dire les fichiers utiliss. Cliquez sur le seul nud prsent actuellement, qui estle nud du fichier .hex Essai1 [.hex] . La case Node properties (proprits du nud)

    devient alors active. Cest grce cette option que vous allez dcider la manire dont va tre

    construit votre fichier .hex. Cliquez dessus. Apparat alors une fentre qui contient les

    diffrents paramtres qui seront utiliss.

    Vous apprendrez par la suite personnaliser le project suivant vos gots. Sachez que

    vous pouvez dcider quel langage utilis (nous utiliserons MPASM qui est lassembleur par

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    26/186

    http://www.electrocrack.fr.st 25

    dfaut, et dcider les diffrents niveaux dalerte. Nous y reviendrons si ncessaire. La case

    Default radix est dune extrme importance.

    Rappelez-vous les systmes de numrotations. Cette case indique de quelle manire

    lassembleur doit interprter un nombre lorsquil ny a pas de prfixe.

    Comme nous avons dcid de numroter lhexadcimal sous la forme 0x, et le binaire

    sous la forme B. Tout nombre sans prfixe sera considr comme dcimal. Cochez donc la

    case DEC .

    Dans la case Command line ou ligne de commande, vous voyez la syntaxe que

    vous devriez excuter si vous lanciez lassemblage par MPASM sans passer par MPLAB. Ne

    vous en proccupez pas et cliquez OK pour fermer cette fentre.

    Nous allons maintenant dire MPLAB que nous voulons utiliser le fichier

    Essai1.asm pour crer notre programme. Cliquons donc sur Add node (ajouter un

    nud). Choisissez votre fichier essai1.asm dans lexplorateur qui souvre, puis OK.

    Vous constaterez que si vous cliquez sur ce nud, seule la case Delete Node

    (effacer) est active, car il ny a rien diter sur ce nud. Cliquez sur OK dans le haut de la

    fentre, votre projet est cr.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    27/186

    http://www.electrocrack.fr.st 26

    Mais, allez-vous me dire, il ny a toujours rien lcran !

    En effet, mais MPLAB assemblera les fichiers contenus dans les nuds, PAS les

    fichiers affichs lcran. Vous pouvez donc avoir autant de fichiers que vous voulez sur

    lcran, ou ne pas en avoir du tout. MPLAB sen moque. Par contre, tous les fichiers ouverts

    lors de la sauvegarde de votre projet seront automatiquement rouverts lors de la prochaine

    ouverture du projet, mme sils ne servent rien. Cette proprit est pratique pour faire des

    copier/coller partir dun autre fichier ou pour voir tout en programmant ce quun autre abien pu faire.

    Pour visualiser votre fichier essai1.asm , ouvrez-le donc laide du menu

    File->open . Et voici votre fichier de dpart ouvert. Mettez-le la taille approprie en lui

    faisant occuper la moiti gauche de lcran.

    Nous allons maintenant examiner ce fichier dun peu plus prs.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    28/186

    http://www.electrocrack.fr.st 27

    6. Organisation dun fichier .asm

    Tout dabord, cliquez nimporte o lintrieur de ce fichier. Vous tes lintrieur

    dun simple traitement de texte. Dans le coin infrieur gauche, vous verrez un numro de

    ligne et de colonne. Cest la position actuelle de votre curseur. Je me servirai de cette positionpour vous guidez au travers du fichier. Najoutez donc pas de lignes pour linstant, pour

    garder la correspondance correcte avec ce texte.

    Si vous narrivez pas effectuer des modifications dans vote fichier, et que votre

    clavier semble inactif, cest que vous avez utilis un caractre tendu dans le nom de votre

    fichier. MPLAB est allergique certains caractres, comme le .

    6.1 Les commentaires

    De la ligne 1 la ligne 31 vous voyez un grand cadre. Si vous remarquez

    attentivement le premier caractre de chaque ligne, vous verrez le symbole ; . Tout ce qui

    suit tant considr comme zone de commentaire, vous pouvez y mettre tout ce que vous

    voudrez.

    Prenez lhabitude de toujours commenter vos programmes. Soyez sr que dans 6

    mois, vous ne vous rappellerez plus ce que vous avez voulu faire, les commentaires vous

    seront alors dune grande utilit si vous dcidez de modifier votre programme.

    Remplissons donc le cadre en indiquant les diffrentes rfrences. Je joints avec cette

    leon le fichier exemple1.asm , qui reprend le fichier tel quil sera la fin de cette leon.

    6.2 Les directives

    A la ligne 34, nous trouvons une DIRECTIVE destine MPASM pour 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 lassembleur de quelle manire il doit travailler. Ce sont

    donc des COMMANDES destines lassembleur en lui-mme.

    Au contraire, les INSTRUCTIONS seront traduites en OPCODE et charges dans le

    PIC. Il est donc impratif de bien faire la distinction.

    6.3 les fichiers include

    La ligne 35 signale lassembleur que les ASSIGNATIONS sont dans le fichier

    P16F84.inc. Que contient ce fichier ? Et bien tout simplement la valeur de toutes les

    CONSTANTES que nous allons utiliser. Pour voir ce quil contient, allez dans le menu

    file ->Open , choisissez all files dans le cadre infrieur, et ouvrez p16F84.inc. Une fois

    dpasse la zone de commentaires, vous verrez des lignes du style :

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    29/186

    http://www.electrocrack.fr.st 28

    FSR EQU H'0004'

    Cette ligne signifie tout simplement que FSR EGAL 0x0004. Autrement dit, lorsque

    vous utiliserez FSR dans une instruction, MPASM interprtera FSR comme tant 0x04. 0x04

    tant tout simplement ladresse de FSR dans la mmoire de la PIC.

    H0004 est une autre mthode autorise pour exprimer un nombre hexadcimal, tout

    comme 04h

    Si vous prenez votre tableau 4-2 page 13, vous constaterez que cest bien le cas. Ce

    fichier est donc principalement destin vous viter davoir mmoriser toutes les adresses,

    un nom est bien plus simple utiliser. Fermez le fichier p16F843.inc pour ne pas encombrer

    votre fentre.

    6.4 La directive _CONFIG

    La ligne suivante, commence par __CONFIG . Cette ligne contient les fameux

    fusibles qui fixent le fonctionnement de la PIC.

    Les valeurs crites ici seront intgres dans le fichier .hex pour signaler au

    programmateur les valeurs encoder aux adresses spcifiques de la PIC. Nous y reviendrons.

    Jai plac dans le fichier toutes les valeurs possibles de ces paramtres, avec les

    explications correspondantes. Il suffit de remplacer une des valeurs par celle souhaite.

    Par exemple, activons le Code Protect (protection en lecture) :

    On remplacera donc simplement la ligne :

    __CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _HS_OSC

    Par

    __CONFIG _CP_ON & _WDT_ON & _PWRTE_ON & _HS_OSC

    Faites-le. Remarquez que les diffrentes valeurs sont lies par le symbole &

    (AND) expliqu dans la leon sur les systmes de numrotations. Ils fonctionnent donc en

    plaant des bits 0 , si vous avez tout suivi. Les valeurs exactes sont de nouveau dans le

    fichier P16F84.INC . Donc, pas de magie, tout sexplique en rflchissant un peu.

    6.5 Les assignations

    A la ligne 57 et 62, vous trouverez des ASSIGNATIONS personnelles qui

    fonctionnent selon le mme principe que dans le fichier .inc .

    A quoi cela sert-il ? Et bien faciliter la MAINTENANCE de votre programme. Il est

    en effet plus simple de retenir dans votre programme la valeur MASQUE que de

    manipuler la valeur 0x5B.

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    30/186

    http://www.electrocrack.fr.st 29

    Les assignations se comportent comme une simple substitution. Au moment de

    lassemblage, chaque fois que lassembleur va trouver une assignation, il la remplacera

    automatiquement par sa valeur.

    Un autre avantage est que si vous remplacez la valeur dune assignation, le

    changement sera effectif pour tout le programme. Vous ne risquez donc pas doublier des

    valeurs en chemin.

    Je vous encourage vivement utiliser les ASSIGNATIONS et autres mthodes que

    nous allons voir plus bas. La syntaxe est simple puisquil sagit de EQU (gal )

    Exemple dassignation :

    mavaleur EQU 0x05

    6.6 Les dfinitions

    Descendons encore un peu. Nous dcouvrons, lignes 72 74 des exemples de

    DEFINE. Sachez que les define fonctionnent comme des ASSIGNATIONS. A ceci prsque nous rserverons les assignations pour les valeurs, et les dfinitions pour remplacer un

    texte plus complexe.

    Par exemple nous pourrons utiliser un PORT suivi dun numro de bit, ou bien

    carrment une instruction avec ses paramtres.

    Une dfinitions est construite de la manire suivante : La directive #DEFINE, suivie

    par le nom que lon dsire utiliser, puis la chane substituer. Par exemple :

    #DEFINE monbit PORTA,1

    6.7 Les macros

    Plus bas, lignes 82 85, nous trouvons une MACRO.

    LIREIN macro

    comf PORTB,0

    andlw 1

    endm

    La macro se compose dun nom crit en premire colonne, suivi par la directive

    macro . Commence alors la ligne suivant la portion de code qui constitue la macro. La finde la macro est dfinie par la directice endm) (end of macro).

    Une macro remplace donc un morceau de code que nous utilisons souvent. La macro

    fonctionne galement uniquement comme un simple traitement de texte.

    Dans notre exemple, chaque fois que la macro LIREIN sera rencontre, elle sera

    remplace au moment de lassemblage par les 2 lignes :

  • 8/8/2019 Cours 16F84_ La Program Mat Ion Des Pics

    31/186

    http://www.electrocrack.fr.st 30

    comf PORTB , 0

    andlw 1

    La macro simplifie donc lcriture, mais ne raccourci pas la taille du fichier .hex

    obtenu, puisque les 2 lignes seront crites dans la PIC.

    Notez que lon peut utiliser des macros plus complexes, avec passage de paramtres,mais nous nentrerons pas dans ces fonctions particulires pour linstant.

    Notez galement que vous disposez dune aide dans le menu help->MPASM Help .

    En effet, laide de MPLAB concerne lutilisation du logiciel. Les aides concernant le langage

    sont dans MPASM, puisque cest ce langage que MPLAB utilise (revoyez ldition des

    nuds).

    6.8 La zone des variables

    Toute zone dfinie par lutilisateur commence avec la DIRECTIVE CBLOCK, suivie

    par ladresse du dbut de la zone.

    Pour placer nos variables, qui sont des emplacements mmoires auxquels on a donn

    un nom, nous consultons de nouveau le tableau 4-2. Nous voyons que la zone RAM librement

    utilisable commence l'adresse 0x0C. Notre zone de variable contiendra donc la directive

    CBLOCK 0x00C ; dbut de