cours bigonoff

Upload: analucia-bgw

Post on 18-Jul-2015

289 views

Category:

Documents


21 download

TRANSCRIPT

LA PROGRAMMATION DES PICPAR BIGONOFF

PREMIERE PARTIE Rvision 25

DEMARRER LES PIC AVEC LE PIC16F84

2

1. INTRODUCTION............................................................................................................................................. 9 2. LES SYSTEMES DE NUMERATION ......................................................................................................... 11 2.1 LE SYSTEME DECIMAL .................................................................................................................................. 11 2.2 LE SYSTEME BINAIRE ................................................................................................................................... 11 2.3 LE SYSTEME HEXADECIMAL ......................................................................................................................... 12 2.4 LES OPERATIONS .......................................................................................................................................... 14 2.5 LES NOMBRES SIGNES .................................................................................................................................. 14 2.6 LES OPERATIONS BOOLEENNES. ................................................................................................................... 15 2.6.1 Le complment ..................................................................................................................................... 15 2.6.2 La fonction ET ou AND ............................................................................................................ 16 2.6.3 La fonction OU ou OR ............................................................................................................. 16 2.6.4 La fonction OU EXCLUSIF ou Exclusif OR ou XOR ........................................................ 17 3. COMPOSITION ET FONCTIONNEMENT DES PIC............................................................................ 19 3.1 QUEST-CE QUUN PIC ? ........................................................................................................................... 19 3.2 LES DIFFERENTES FAMILLES DES PIC........................................................................................................ 20 3.3 IDENTIFICATION DUN PIC ........................................................................................................................ 20 3.4 ORGANISATION DU 16F84............................................................................................................................ 21 3.4.1 La mmoire programme ....................................................................................................................... 21 3.4.2 La mmoire Eeprom............................................................................................................................. 22 3.4.3 La mmoire Ram .................................................................................................................................. 22 4. ORGANISATION DES INSTRUCTIONS ................................................................................................... 23 4.1 GENERALITES............................................................................................................................................... 23 4.2 LES TYPES DINSTRUCTIONS ......................................................................................................................... 23 4.2.1 Les instructions orientes octet ...................................................................................................... 23 4.2.2 Les instructions orientes bits ........................................................................................................ 23 4.2.3 Les instructions gnrales.................................................................................................................... 24 4.2.4 Les sauts et appels de sous-routines..................................................................................................... 24 4.3 PANORAMIQUE DES INSTRUCTIONS .............................................................................................................. 25 4.4 LES INDICATEURS DETAT ............................................................................................................................ 26 4.4.1 Lindicateur dtat Z ...................................................................................................................... 27 4.4.2 Lindicateur dtat C ...................................................................................................................... 27 5. LES DEBUTS AVEC MPLAB.................................................................................................................... 29 5.1 PREPARATION A LUTILISATION ................................................................................................................... 29 5.2 CREATION DE NOTRE PREMIER PROJET ......................................................................................................... 29 6. ORGANISATION DUN FICHIER .ASM ............................................................................................. 37 6.1 LES COMMENTAIRES .................................................................................................................................... 37 6.2 LES DIRECTIVES ........................................................................................................................................... 37 6.3 LES FICHIERS INCLUDE ........................................................................................................................... 37 6.4 LA DIRECTIVE _CONFIG............................................................................................................................. 38 6.5 LES ASSIGNATIONS ....................................................................................................................................... 39 6.6 LES DEFINITIONS .......................................................................................................................................... 39 6.7 LES MACROS ................................................................................................................................................ 40 6.8 LA ZONE DES VARIABLES ............................................................................................................................. 40 6.9 LES ETIQUETTES ........................................................................................................................................... 41 6.10 LA DIRECTIVE ORG ............................................................................................................................. 41 6.11 LA DIRECTIVE END .............................................................................................................................. 42 7. REALISATION DUN PROGRAMME ....................................................................................................... 43 7.1 CREATION DE NOTRE PREMIER PROGRAMME ................................................................................................ 43 7.2 LASSEMBLAGE DUN PROGRAMME.............................................................................................................. 44 8. LA SIMULATION DUN PROGRAMME................................................................................................... 47 8.1 LANCEMENT ET PARAMETRAGE DU SIMULATEUR ......................................................................................... 47 3

8.2 EXPLICATION DES REGISTRES FONDAMENTAUX ........................................................................................... 49 8.2.1 Les registres PCL et PCLATH ................................................................................................. 49 8.2.2 Le registre W .................................................................................................................................. 50 8.2.3 Le registre STATUS ........................................................................................................................ 50 8.3 LANCEMENT DE LA SIMULATION .................................................................................................................. 51 9. LE JEU DINSTRUCTIONS ......................................................................................................................... 57 9.1 LINSTRUCTION GOTO (ALLER ) ......................................................................................................... 57 9.2 LINSTRUCTION INCF (INCREMENT FILE)............................................................................................. 58 9.3 LINSTRUCTION DECF (DECREMENT FILE) .......................................................................................... 59 9.4 LINSTRUCTION MOVLW (MOVE LITERAL TO W)............................................................................... 59 9.5 LINSTRUCTION MOVF (MOVE FILE) ................................................................................................... 59 9.6 LINSTRUCTION MOVWF (MOVE W TO FILE)...................................................................................... 61 9.7 LINSTRUCTION ADDLW (ADD LITERAL AND W)................................................................................ 61 9.8 LINSTRUCTION ADDWF (ADD W AND F) ........................................................................................... 61 9.9 LINSTRUCTION SUBLW (SUBTRACT W FROM LITERAL)..................................................................... 62 9.10 LINSTRUCTION SUBWF (SUBTRACT W FROM F) .............................................................................. 64 9.11 LINSTRUCTION ANDLW (AND LITERAL WITH W) ............................................................................ 64 9.12 LINSTRUCTION ANDWF (AND W WITH F)........................................................................................ 65 9.13 LINSTRUCTION IORLW (INCLUSIVE OR LITERAL WITH W) ............................................................... 65 9.14 LINSTRUCTION IORWF (INCLUSIVE OR W WITH FILE) ...................................................................... 66 9.15 LINSTRUCTION XORLW (EXCLUSIVE OR LITERAL WITH W)............................................................ 66 9.16 LINSTRUCTION XORWF (EXCLUSIVE OR W WITH F) ........................................................................ 67 9.17 LINSTRUCTION BSF (BIT SET F) ......................................................................................................... 67 9.18 LINSTRUCTION BCF (BIT CLEAR F).................................................................................................... 68 9.19 LINSTRUCTION RLF ( ROTATE LEFT THROUGH CARRY) ..................................................................... 68 9.20 LINSTRUCTION RRF ( ROTATE RIGHT THROUGH CARRY)................................................................... 69 9.21 LINSTRUCTION BTFSC (BIT TEST F, SKIP IF CLEAR).......................................................................... 70 9.22 LINSTRUCTION BTFSS (BIT TEST F, SKIP IF SET)............................................................................... 71 9.23 LINSTRUCTION DECFSZ (DECREMENT F, SKIP IF Z)......................................................................... 72 9.24 LINSTRUCTION INCFSZ (INCREMENT F, SKIP IF ZERO)..................................................................... 73 9.25 LINSTRUCTION SWAPF (SWAP NIBBLES IN F) .................................................................................. 73 9.26 LINSTRUCTION CALL (CALL SUBROUTINE) ...................................................................................... 73 9.27 LINSTRUCTION RETURN (RETURN FROM SUBROUTINE) ................................................................. 74 9.28 LINSTRUCTION RETLW (RETURN WITH LITERAL IN W) ................................................................... 77 9.29 LINSTRUCTION RETFIE (RETURN FROM INTERRUPT)....................................................................... 77 9.30 LINSTRUCTION CLRF (CLEAR F)....................................................................................................... 78 9.31 LINSTRUCTION CLRW (CLEAR W).................................................................................................... 78 9.32 LINSTRUCTION CLRWDT (CLEAR WATCHDOG) .............................................................................. 78 9.33 LINSTRUCTION COMF (COMPLEMENT F).......................................................................................... 79 9.34 LINSTRUCTION SLEEP (MISE EN SOMMEIL) ....................................................................................... 79 9. 35 LINSTRUCTION NOP (NO OPERATION) .............................................................................................. 80 9.36 LES INSTRUCTIONS OBSOLETES .................................................................................................................. 80 10. LES MODES DADRESSAGE .................................................................................................................... 81 10.1 LADRESSAGE LITTERAL OU IMMEDIAT ...................................................................................................... 81 10.2 LADRESSAGE DIRECT ................................................................................................................................ 81 10.3 LADRESSAGE INDIRECT ............................................................................................................................ 81 10.3.1 Les registres FSR et INDF ................................................................................................................. 82 10.4 QUELQUES EXEMPLES ................................................................................................................................ 83 11. REALISATION DUN PROGRAMME EMBARQUE ............................................................................. 85 11.1 LE MATERIEL NECESSAIRE ......................................................................................................................... 85 11.2 MONTAGE DE LA PLATINE DESSAIS ........................................................................................................... 85 11.3 CREATION DU PROJET ................................................................................................................................. 86 11.4 EDITION DU FICHIER SOURCE ..................................................................................................................... 87 11.5 CHOIX DE LA CONFIGURATION ................................................................................................................... 87 11.6 LE REGISTRE OPTION ............................................................................................................................... 88 11.7 EDITION DU PROGRAMME ........................................................................................................................... 90 11.8 LE REGISTRE PORTA................................................................................................................................. 92 4

11.8.1 Fonctionnement particulier des PORTS............................................................................................. 93 11.9 LE REGISTRE TRISA .................................................................................................................................. 94 11.10 LES REGISTRES PORTB ET TRISB........................................................................................................... 95 11.11 EXEMPLE DAPPLICATION ........................................................................................................................ 95 11.12 LA ROUTINE DINITIALISATION................................................................................................................. 96 11.13 LES RESULTATS DE LA COMPILATION ....................................................................................................... 99 11.14 LE PROGRAMME PRINCIPAL .................................................................................................................... 100 11.15 LA SOUS-ROUTINE DE TEMPORISATION .................................................................................................. 100 12. LES INTERRUPTIONS............................................................................................................................. 107 12.1 QUEST-CE QUUNE INTERRUPTION ?....................................................................................................... 107 12.2 MECANISME GENERAL DUNE INTERRUPTION .......................................................................................... 107 12.3 MECANISME DINTERRUPTION SUR LES PIC .......................................................................................... 108 12.4 LES SOURCES DINTERRUPTIONS DU 16F84.............................................................................................. 110 12.5 LES DISPOSITIFS MIS EN UVRE................................................................................................................ 110 12.6 LE REGISTRE INTCON (INTERRUPT CONTROL)..................................................................................... 112 12.7 SAUVEGARDE ET RESTAURATION DE LENVIRONNEMENT ........................................................................ 114 12.7.1 Les registres sauvegarder ............................................................................................................. 114 12.7.2 La mthode de sauvegarde............................................................................................................... 114 12.7.3 La mthode de restauration.............................................................................................................. 115 12.7.4 OPERATIONS SUR LE REGISTRE STATUS .............................................................................................. 117 12.7.5Particularit de linstruction RETFIE ......................................................................................... 118 12.8 UTILISATION DUNE ROUTINE DINTERRUPTION ....................................................................................... 118 12.9 ANALYSE DE LA ROUTINE DINTERRUPTION ............................................................................................. 121 12.10 ADAPTATION DE LA ROUTINE DINTERRUPTION ..................................................................................... 123 12.11 LINITIALISATION................................................................................................................................... 125 12.12 CONSTRUCTION DU PROGRAMME PRINCIPAL .......................................................................................... 126 12.13 CONSTRUCTION DE LA ROUTINE DINTERRUPTION ................................................................................. 127 12.14 PASSAGE AU SIMULATEUR DUNE ROUTINE DINTERRUPTION ................................................................ 128 12.15 PREMIERE CORRECTION : RESET DU FLAG .............................................................................................. 131 12.16 SE METTRE A LECHELLE DE TEMPS DU PIC ........................................................................................ 132 12.17 LE PROBLEME DE LANTI-REBOND.......................................................................................................... 132 12.18 FINALISATION DU PROGRAMME.............................................................................................................. 133 12.19 REMARQUES IMPORTANTES.................................................................................................................... 136 12.20 CONCLUSIONS ........................................................................................................................................ 137 13. LE TIMER 0................................................................................................................................................ 139 13.1 LES DIFFERENTS MODES DE FONCTIONNEMENT ........................................................................................ 139 13.2 LE REGISTRE TMR0................................................................................................................................... 139 13.3 LES METHODES DUTILISATION DU TIMER0 ............................................................................................. 139 13.3.1 Le mode de lecture simple................................................................................................................ 140 13.3.2 Le mode de scrutation du flag .......................................................................................................... 140 13.3.3 Le mode dinterruption..................................................................................................................... 141 13.3.4 Les mthodes combines .................................................................................................................. 141 13.4 LE PREDIVISEUR ....................................................................................................................................... 141 13.5 APPLICATION PRATIQUE DU TIMER0......................................................................................................... 143 13.5.1 Prparations..................................................................................................................................... 143 13.5.2 Linitialisation.................................................................................................................................. 144 13.5.3 La routine dinterruption ................................................................................................................. 145 13.6 MODIFICATION DES REGISTRES DANS LE SIMULATEUR ............................................................................. 146 13.7 MISE EN PLACE SUR LA PLATINE DESSAIS................................................................................................ 147 13.8 PREMIERE AMELIORATION DE LA PRECISION ............................................................................................ 147 13.9 SECONDE AMELIORATION DE LA PRECISION ............................................................................................. 148 13.10 LA BONNE METHODE - ADAPTATION DE LHORLOGE ............................................................................. 148 13.11 LA METHODE DE LUXE : LA DOUBLE HORLOGE ...................................................................................... 149 13.12 EXEMPLE DUTILISATION DE 2 INTERRUPTIONS ...................................................................................... 149 13.13 CONCLUSION .......................................................................................................................................... 151 14. LES ACCES EN MEMOIRE EEPROM ............................................................................................ 153 14.1 TAILLE ET LOCALISATION DE LA MEMOIRE EEPROM ........................................................................... 153 5

14.2 PREPARATION DU PROGRAMME ................................................................................................................ 153 14.3 INITIALISATION DE LA ZONE EEPROM ....................................................................................................... 155 14.4 LE REGISTRE EEDATA............................................................................................................................ 156 14.5 LE REGISTRE EEADR .............................................................................................................................. 157 14.6 LE REGISTRE EECON1 ............................................................................................................................ 157 14.7 LE REGISTRE EECON2 ............................................................................................................................ 158 14.8 ACCES EN LECTURE DANS LA MEMOIRE EEPROM ................................................................................ 158 14.9 LACCES EN ECRITURE A LA ZONE EEPROM .............................................................................................. 159 14.10 UTILISATION PRATIQUE DE LA MEMOIRE EEPROM ............................................................................ 161 14.11 SECURISATION DES ACCES EN MEMOIRE EEPROM ............................................................................. 164 14.12 CONCLUSION .......................................................................................................................................... 164 15. LE WATCHDOG........................................................................................................................................ 165 15.1 LE PRINCIPE DE FONCTIONNEMENT .......................................................................................................... 165 15.2 LE PREDIVISEUR ET LE WATCHDOG .......................................................................................................... 165 15.3 LES ROLES DU WATCHDOG ....................................................................................................................... 166 15.4 UTILISATION CORRECTE DU WATCHDOG .................................................................................................. 167 15.5 CE QUIL NE FAUT PAS FAIRE .................................................................................................................... 168 15.6 MESURE DU TEMPS REEL DU WATCHDOG ................................................................................................. 168 15.7 SIMULATION DU PLANTAGE DUN PROGRAMME ....................................................................................... 170 15.7.1 Correction avec utilisation du watchdog ......................................................................................... 170 15.8 CHOIX DE LA VALEUR DU PREDIVISEUR.................................................................................................... 171 15.9 TEMPS TYPIQUE, MINIMAL, ET MAXIMUM ................................................................................................. 172 15.10 CONCLUSION .......................................................................................................................................... 172 16. LE MODE SLEEP ...................................................................................................................................... 173 16.1 PRINCIPE DE FONCTIONNEMENT ............................................................................................................... 173 16.2 LA SORTIE DU MODE SLEEP ................................................................................................................ 173 16.3 REVEIL AVEC GIE HORS SERVICE............................................................................................................. 174 16.4 REVEIL AVEC GIE EN SERVICE ................................................................................................................. 174 16.5 MISE EN SOMMEIL IMPOSSIBLE ................................................................................................................. 174 16.6 UTILISATION DU MODE SLEEP ............................................................................................................. 175 REMARQUE ...................................................................................................................................................... 175 16.7 CAS TYPIQUES DUTILISATION.................................................................................................................. 176 16.7 POUR UNE CONSOMMATION MINIMALE .................................................................................................... 176 16.8 CONCLUSION ............................................................................................................................................ 176 17. LE RESTE DU DATASHEET ................................................................................................................... 177 17.1 LA STRUCTURE INTERNE .......................................................................................................................... 177 17.2 LA SEQUENCE DE DECODAGE ................................................................................................................... 177 17.3 ORGANISATION DE LA MEMOIRE .............................................................................................................. 177 17.4 LES REGISTRES SPECIAUX......................................................................................................................... 178 17.5 LELECTRONIQUE DES PORTS ................................................................................................................... 178 17.6 LE REGISTRE DE CONFIGURATION ............................................................................................................ 178 17.7 LES DIFFERENTS TYPES DOSCILLATEURS................................................................................................. 179 17.7.1 La prcision de loscillateur ............................................................................................................ 180 17.8 LE RESET .................................................................................................................................................. 181 17.9 LA MISE SOUS TENSION ............................................................................................................................ 182 17.10 CARACTERISTIQUES ELECTRIQUES ......................................................................................................... 183 17.11 PORTABILITE DES PROGRAMMES ............................................................................................................ 183 17.12 LES MISES A JOUR DES COMPOSANTS ...................................................................................................... 184 17.13 CONCLUSION .......................................................................................................................................... 185 18. ASTUCES DE PROGRAMMATION ....................................................................................................... 187 18.1 LES COMPARAISONS ................................................................................................................................. 187 18.2 SOUSTRAIRE UNE VALEUR DE W ............................................................................................................... 187 18.3 LES MULTIPLICATIONS ............................................................................................................................. 188 18.4 MULTIPLICATION PAR UNE CONSTANTE ................................................................................................... 190 18.5 ADRESSAGE INDIRECT POINTANT SUR 2 ZONES DIFFERENTES ................................................................... 191 18.6 LES TABLEAUX EN MEMOIRE PROGRAMME............................................................................................... 192 6

18.7 LES VARIABLES LOCALES ......................................................................................................................... 196 18.7.1 Dtermination des variables locales ................................................................................................ 197 18.7.2 Construction sans variables locales................................................................................................ 197 18.7.3 Construction avec variables locales................................................................................................. 197 18.8 DIVISION PAR UNE CONSTANTE ................................................................................................................ 198 18.9 CONCLUSION ............................................................................................................................................ 198 19. LA NORME ISO 7816 ................................................................................................................................ 199 19.1 SPECIFICITES UTILES DE LA NORME ISO 7816 .......................................................................................... 199 19.1.1 Les commandes ISO 7816 ................................................................................................................ 199 19.1.2 Le protocole dchange dinformations ........................................................................................... 200 19.2 LES LIAISONS SERIE ASYNCHRONES ......................................................................................................... 201 19.2.1 Le start-bit........................................................................................................................................ 202 19.2.2 Les bits de donnes........................................................................................................................... 202 19.2.3 Le bit de parit ................................................................................................................................ 202 19.2.4 Le stop-bit ........................................................................................................................................ 202 19.2.5 Vitesse et dbit.................................................................................................................................. 203 19.3 ACQUISITION DES BITS ............................................................................................................................. 203 19.4 CARACTERISTIQUE DES CARTES STANDARD ....................................................................................... 204 19.5 CREATION ET INITIALISATION DU PROJET ................................................................................................. 204 19.6 LA BASE DE TEMPS ................................................................................................................................... 206 19.7 RECEPTION DUN OCTET ........................................................................................................................... 207 19.8 LEMISSION DUN CARACTERE ................................................................................................................. 208 19.9 INITIALISATION ........................................................................................................................................ 211 19.10 ENVOI DE LATR ................................................................................................................................... 211 19.11 LENVOI DU STATUS ............................................................................................................................... 212 19.12 RECEPTION DE LA CLASSE ...................................................................................................................... 213 19.13 RECEPTION DE INS, P1, P2, ET LEN ...................................................................................................... 213 19.14 CONTROLE DE LINSTRUCTION REUE .................................................................................................... 214 19.15 TRAITEMENT DUNE INSTRUCTION ......................................................................................................... 215 19.16 LES VARIABLES ...................................................................................................................................... 215 19.17 CONCLUSION .......................................................................................................................................... 216 ANNEXE1 : QUESTIONS FREQUEMMENT POSEES (F.A.Q.)............................................................... 217 A1.1 JE TROUVE QUE 8 SOUS-PROGRAMMES, CEST PEU .................................................................................. 217 A1.2 JE NUTILISE QUE 8 IMBRICATIONS, ET POURTANT MON PROGRAMME PLANTE. ....................................... 217 A1.3 MON PROGRAMME SEMBLE NE JAMAIS SORTIR DES INTERRUPTIONS ....................................................... 217 A1.4 JE NARRIVE PAS A UTILISER LE SIMULATEUR, LES OPTIONS NAPPARAISSENT PAS .................................. 217 A1.5 JE REOIS UN MESSAGE DERREUR EOF AVANT INSTRUCTION END ....................................................... 217 A1.6 COMMENT DESASSEMBLER UN FICHIER .HEX ? .................................................................................. 218 A1.7 UTILISATION DES MINUSCULES ET DES MAJUSCULES ............................................................................... 218 A1.8 LE CHOIX DUN PROGRAMMATEUR .......................................................................................................... 218 A1.9 JAI UNE ERREUR DE STACK ............................................................................................................... 219 A1.10 QUELLES SONT LES DIFFERENCES ENTRE 16F84 ET 16F84A ?............................................................... 220 A1.11 JAI UNE ERREUR 173 LORS DE LASSEMBLAGE ..................................................................................... 220 CONTRIBUTION SUR BASE VOLONTAIRE ............................................................................................ 221 UTILISATION DU PRESENT DOCUMENT ............................................................................................... 223

7

8

1. IntroductionEt voil, nous sommes partis ensemble pour cette grande aventure quest la programmation des PIC. 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 numration. Ca y est, jen vois qui rlent dj. Mais je suis sr que vous comprendrez quil est impossible de programmer srieusement un microcontrleur 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 passer directement au suivant. Nhsitez jamais me faire part de vos remarques, ni me signaler les erreurs qui mauraient chappes (www.abcelectronique.com/bigonoff ou www.bigonoff.org ). Faites du copier/coller, rpercutez les infos que vous trouverez ici, traduisez le document dans une autre langue ou un autre format. Simplement, dans ce cas, veuillez respecter les dsirs de lauteur en fin douvrage et faites moi parvenir un exemplaire de votre travail. Ceci pour permettre den faire profiter le plus grand nombre ([email protected]). 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 un 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 du 16F84. Jai pass de nombreuses journes raliser ces exercices. Je les ai personnellement tests sur maquette un par un. Alors je vous demanderai de tenter de faire vous-mme ces petits programmes avant de me poser par email des questions dont vous auriez eu les rponses si vous aviez ralis cet effort. Croyez-moi sur parole, ce nest quau moment de mettre en pratique quon saperoit quon navait finalement pas bien compris quelque chose qui paraissait pourtant vident. Je rponds toujours au courrier reu, mais il faut dire que cest parfois lgrement nervant de recevoir une question de quelquun qui affirme avoir assimil la totalit de cet ouvrage en une heure. Ca mest arriv ! Jai utilis personnellement la version 6.30 de MPLAB partir de la rvision 13 du cours. Les prcdentes rvisions utilisaient la version 5.20. La version 6.60 est disponible section archives sur le site de Microchip.

9

10

2. Les systmes de numration2.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 cest devenu un automatisme. Dcimal, pourquoi ? Parce quil utilise une numration 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 a une plus grande importance que le 2. En ralit, chaque chiffre, que lon peut appeler DIGIT, a une valeur qui dpend de son RANG . Quel est le multiplicateur appliquer un chiffre en fonction de sa position (rang) ? Il sagit tout simplement de llvation de la BASE utilise la puissance de son RANG . Cela a lair complexe crire, mais est trs simple comprendre. Lorsque vous avez compris ceci, vous comprenez automatiquement nimporte quel systme de numration. Reprenons, par exemple notre nombre 502. Que signifie le 2 ? 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 numration 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 PIC) 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, ou en utilisant la notation Dxxx ; tout nombre binaire est crit suivant la forme Bxxxxxxxx dans lesquels les x valent ? 0 ou 1 effectivement, vous avez bien suivi.11

Analysons maintenant un nombre binaire, soit loctet : B10010101. Quelle est donc sa valeur en dcimal ? 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 par exemple 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 bit 7 vaudra 1. Une fois fait, il reste 149-128 = 21 Le bit 6 reprsente 64, cest plus grand que 21, donc b6 = 0 Le 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 b0=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 verrons 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 une succession 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 dcid de couper chaque octet en 2 (QUARTET) et de reprsenter chaque partie par un chiffre.

12

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. Plutt que dinventer 6 nouveaux symboles, il a t dcid dutiliser les 6 premires lettres de lalphabet comme CHIFFRES. Ce systme de numration 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 vous avez bien compris : Tableau de conversion des diffrents quartets (un demi-octet) Binaire B0000 B0001 B0010 B0011 B0100 B0101 B0110 B0111 B1000 B1001 B1010 B1011 B1100 B1101 B1110 B1111 Hexadcimal 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xA 0xB 0xC 0xD 0xE 0xF Dcimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 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. Vous trouverez galement dans certaines revues, des allusions au systme octal, qui est un systme en base 8 qui a t largement utilis.

13

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 1110 ? Et bien, on procde exactement de la mme faon que pour une opration en dcimal. B1011 + B1110 -------------On additionne les chiffres de droite, et on obtient 1+0 = 1 On 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 1 signifie nombre ngatif. Si on stait content de cela, on aurait perdu une valeur possible. En effet, B10000000 (-0) serait 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. On inverse la totalit du nombre. On ajoute 1 On obtient alors ce quon appelle le COMPLEMENT A DEUX du nombre. Exemple : soit le nombre 5 : B00000101 Comment crire 5 ? on inverse tous les bits (complment 1) on ajoute 1 (complment 2) 5 =14

B11111010 B11111011

Pour faire la conversion inverse, on procde de faon identique. On inverse tous les bits B00000100 On ajoute 1 B00000101 Et on retrouve notre 5 de dpart, ce qui est logique, vu que (-5) = 5. Dans le cas des nombres signs, on obtient donc les nouvelles limites suivantes : 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 B 11111101 (-3) + B 00000101 (5) ----------------------------= B100000010 (2) Et l, me direz vous, a ne fait pas 2 ? Et bien si, regardez bien, il y a 9 bits , or le processeur nen gre que 8. Le 9me est donc tomb dans un bit spcial que nous verrons 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 a dcid quils reprsentent. 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 fixes lors de la cration de cet octet. Cest donc vous de dcider ce dont 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 PIC 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 ! Son fonctionnement tout simple consiste inverser tous les bits de loctet (0 devient 1 et 1 devient 0). Exemple : NOT B10001111 donne B01110000.15

Vous voyez ici que pour les oprations boolennes, il est plus facile de travailler en binaire. Traduisez lexemple ci-dessus successivement en hexadcimal (on dira maintenant hexa ), puis en dcimal, et essayez de complmenter directement. Bonjour les neurones. A quoi sert cette opration ? Par exemple lire une valeur dont les niveaux actifs ont t inverss, raliser des nombres ngatifs, ou autres que nous verrons par la suite.

2.6.2 La fonction ET ou AND Appele galement multiplication bit bit, ou AND , et souvent note & 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 AND 0 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 prcdent.

2.6.3 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.

16

Bit1 Bit2 0 0 0 1 1 0 1 1

OR 0 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 prcdent. Vous voyez que dans lexemple prcdent, les 2 premiers bits ont t forcs au niveau 1, indpendamment de leur niveau prcdent.

2.6.4 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 des deux 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 consacr aux PIC. 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.

17

Notes :

18

3. Composition et fonctionnement des PICEnfin quelque chose de plus intressant. Nous allons maintenant nous pencher sur un PIC, et en particulier sur le 16F84. Rassurez-vous, tout ce que nous verrons sur le 16F84 pourra tre directement utilis sur les 16F876, qui ne sont rien dautre que des 16F84 amliors. Chaque PIC dispose des fonctionnalits des modles infrieurs, augmentes de nouvelles fonctions. Au moment de passer la rvision 13 du cours, les modles que vous rencontrerez seront probablement des 16F84A, mais a ne posera aucun problme pour ltude de ce cours. Tout dabord, vous devez tlcharger le datasheet du 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 les commenter, plutt que de traduire btement les datasheets en question.

3.1 Quest-ce quun PIC ? Un 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 leurs propres microcontrleurs. Les PIC sont des composants dits RISC (Reduced Instructions Set Computer), 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 composant fonctionne. Vous aurez devin quon trouve sur le march 2 familles opposes, les RISC et les CISC (Complex Instructions Set Computer). Sur les CISC, on dispose de moins de vitesse de traitement, mais les instructions sont plus complexes, plus puissantes, et donc plus nombreuses. Il sagit donc dun choix de stratgie. Tous les PIC 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. Lexcution en un seul cycle est typique des composants RISC. Lhorloge fournie au PIC est prdivise par 4 au niveau de celle-ci. Cest cette base de temps qui donne la dure dun cycle. Si on utilise par exemple un quartz de 4MHz , on obtient donc 1000000 de cycles/seconde, or, comme le PIC excute pratiquement 1 instruction par cycle, hormis les sauts, cela vous donne une puissance de lordre de 1MIPS (1 Million dInstructions Par Seconde).

19

Pensez que les PIC peuvent monter 20MHz. Cest donc une vitesse de traitement plus quhonorable.

3.2 Les diffrentes familles des PIC La famille des PIC tait subdivise au moment dcrire la rvision 1 de cet ouvrage 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 les 16F84 et 16F876), et la famille High-End, qui utilise des mots de 16 bits. Par la suite, dautres familles sont apparues, comme la Enhanced family, et les choses ne devraient faire quvoluler. 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. Du reste, dautres cours sont prvus pour vous permettre dvoluer plus facilement. Notez ds prsent que le datasheet du 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 datasheets pour la gamme Mid-Range. Cependant, la documentation de base suffit pour 99,9% des applications, et, de plus, les datasheets 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 dun PIC Pour identifier un PIC, vous utiliserez simplement son numro. Les 2 premiers chiffres indiquent la catgorie du PIC, 16 indique un PIC Mid-Range. Vient ensuite parfois une lettre L : Celle-ci indique que le 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 PIC de type CR. Pour les versions C, voyez le datasheet. Le 16C84 peut tre reprogramm, il sagit dune mmoire eeprom. Le 12C508, par exemple, possde une mmoire programme EPROM, donc effaable uniquement par exposition aux ultraviolets. Donc, leffacement ncessite une fentre transparente sur le chip, qui est une version spciale pour le dveloppement, et non la version couramment rencontre.

20

Un composant quon ne peut reprogrammer est appel O.T.P. pour One Time Programming : composant programmation unique. Puis vous constatez que les derniers chiffres identifient prcisment le PIC. (84) Finalement vous verrez sur les botiers le suffixe -XX dans lequel XX reprsente la frquence dhorloge maximale que le PIC peut recevoir. Par exemple 04 pour un 4MHz. En fait, il semble bien que cette donne soit purement commerciale et que tous les PIC dun mme modle acceptent de tourner la vitesse maximale de ce modle, vitesse donne en dbut du datasheet. Cette inscription semble donc dans la ralit des faits parfaitement inutile. Cette information nengage pas ma responsabilit, vous de juger et de vous renseigner. Donc, un 16F84-04 est un 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 en thorie (probablement : 10Mhz pour un 16F84 et 20Mhz pour un 16F84A). 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. Notez ds prsent que les PIC sont des composants STATIQUES, cest dire que la frquence dhorloge peut tre abaisse jusqu larrt complet sans perte de donnes et sans dysfonctionnement. Ceci par opposition aux composants DYNAMIQUES (comme les microprocesseurs de votre ordinateur), dont 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 le PIC que nous allons utiliser dans le reste de cet ouvrage, demandez donc un PIC 16F84-04 en botier PDIP .

3.4 Organisation du 16F84 La mmoire du 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, ou alors utilisez le datasheet que je fournis avec le cours. Pour ceux qui veulent tout comprendre, la figure 3-1 de la page 8 montre lorganisation interne dun 16F84. 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 un PIC vierge, vous allez lire des 0x3FFF. Cela donne en binaire B11111111111111, soit 14 bits. Jexpliquerais plus loin do proviennent ces fameux 14 bits.21

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 sont conservs 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.

3.4.3 La mmoire Ram La mmoire RAM (Random Access Memory) 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 le 16F84. 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 du 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 le PIC. Nous les verrons tous, rassurez-vous. Chaque registre provoque un fonctionnement spcial du PIC ou la mise en service dune fonction 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.

22

4. Organisation des instructions4.1 Gnralits Allez, courage, cela devient de plus en plus concret. On va faire un petit survol du jeu dinstructions des PIC. 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 du datasheet 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 le 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 la manire suivante : 6 bits pour linstruction : logique, car comme il y a 35 instructions, il faut 6 bits pour pouvoir les coder toutes 1 bit de destination(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 loprande (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 le 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, le 16F876 a 4 banques, ce bit sera utilis pour certains autres PIC que nous verrons dans la seconde partie. Vous veillerez laisser RP1 0 pour le 16F84, afin de pouvoir porter votre programme sans problme vers un PIC suprieur.

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 :

23

-

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). Ceci ne pose aucun problme, le 16F84 ne disposant que de 1K mots de mmoire. 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. En fait, la rglementation officielle voudrait quon utilise le terme de kilobinary ou kibi , abrg en Ki pour exprimer 2 la puissance 10. Il semble cependant que bien peu de monde ne lutilise en pratique. Maintenant vous saurez 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.

24

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 La premire colonne indique le MNEMONIQUE et les OPERANDES pour chaque opration. Les mnmoniques sont des mots rservs (donc que vous ne pouvez utiliser que pour cet usage) compris et interprts par le programme dassemblage. Notez ici la confusion de langage commune pour le terme ASSEMBLEUR, quon utilise la fois pour indiquer le programme qui permet dassembler le code (programme dassemblage), et le langage utilis dans lditeur (langage dassemblage). Pour ne pas se compliquer la tche, et pour employer la mme dnomination que le commun des mortels, jadopterai le terme assembleur dans les 2 cas, mme si je commets l une faute de langage. Autant rester simple. Le contexte distinguera les deux termes. Sil y a un doute, jemploierai les termes explicites. En ralit, lassembleur est le programme qui permet de raliser lassemblage. Vous allez donc trouver cet emplacement les instructions proprement dites que vous allez pouvoir encoder dans votre programme. La syntaxe doit tre la suivante pour lassembleur MPLAB, que nous utiliserons ds la prochaine leon. Nous avons dans lordre : Etiquette (facultative) Espace(s) ou tabulation(s) Mnmonique (en majuscules ou minuscules) Tabulation ou Espace(s) Oprande ou la valeur Virgule ventuelle de sparation Bit de destination W ou F ou ventuellement numro du bit de 0 7 si ncessaire Espace(s) ou tabulation(s) point-virgule. (facultatif si pas de commentaire) Commentaire. (facultatif)

Notez que le mnmonique ne peut pas se trouver en premire colonne, et que tout ce qui suit le point-virgule est ignor de lassembleur (donc cest de la zone commentaire). La premire colonne est rserve pour les tiquettes (repres). Vous disposez galement de la possibilit dinsrer un ou plusieurs espace(s) ou tabulation(s) de chaque ct de la virgule. Voici titre dexemple deux lignes valides, les mots en vert sont des mots rservs, en bleu linstruction, ceux en jaune tant libres, le reste est du commentaire :Ma_ligne MOVF STATUS,W ; Ceci est une tiquette ; charge le registre status dans le registre de travail

25

La seconde colonne du tableau donne un bref descriptif de linstruction. La troisime colonne donne le nombre de cycles ncessaires pour excuter linstruction. 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 notes 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 le 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 pouvez-vous 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 constituent les cls 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 propre aux ports dentres/sortie (I/O). Nous y reviendrons au moment de la mise en uvre des PORTS. La note 2 indique quune modification dun timer remet zro son prdiviseur. Nous y reviendrons 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 mmoire programme.

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).

26

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. 4.4.1 Lindicateur dtat Z Cest lindicateur Zro, il fonctionne de la manire suivante : Si le rsultat dune opration POUR LEQUEL IL EST AFFECTE, donne un rsultat gal 0, le flag Zro 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.2 Lindicateur dtat C Cest lindicateur pour Carry (report). Si le rsultat dune opration entrane un dbordement, le bit C sera positionn 1. Il sagit en fait du 9me bit de lopration. Petit exemple : Si vous ajoutez Vous obtenez B11111110 (254) + B00000011 (3) B100000001, (257) donc 9 bits.

Comme les registres du 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). Nous verrons les autres bits du registre dtat dans la suite de cet ouvrage, au moment o la ncessit se fera sentir.

27

Notes :

28

5. Les dbuts avec MPLABNous 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. A partir de la rvision 13 du cours, nous travaillerons avec MPLAB 6.x, qui est la version qui succde la version 5.x utilise dans le cours jusque la rvision 12.

5.1 Prparation lutilisation La premire chose faire est daller chercher la version actuelle de MPLAB 6.60 sur le site Microchip : http://www.Microchip.com section archives . Vous pouvez galement utiliser une version 7.xx assez semblable. Dans ce cours, les copies dcrans ont t faites avec MPLAB 6.3, mais les diffrences devraient tre minimes pour les versions plus rcentes. Dcompactez le fichier et procdez son installation. Lors de linstallation, vous aurez plusieurs fentres explicatives concernant diffrents outils de Microchip, comme le debugger et le simulateur. Comme je prsume que vous navez pas (encore) ces outils, fermez toutes ces fentres en fin dinstallation. 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 m16f84.asm , avec m pour maquette . Si vous ne dsirez pas crer un nouveau rpertoire, copiez ce fichier dans le rpertoire dinstallation : par dfaut c:\program files\MPLAB IDE. Pour chaque nouveau programme que vous allez crer, faites un copier/coller du fichier m16F84.asm. Pour notre premier programme, copiez/collez ce fichier et renommez la copie obtenue en Essai1.asm.

5.2 Cration de notre premier projet Vous pouvez maintenant lancer MPLAB IDE partir du menu dmarrer ou de licne de votre bureau, si vous en avez accept linstallation. Aprs quelques instants, vous vous retrouvez avec un cran vide avec menu et barres doutils. Sil y a des fentres ouvertes dans le bureau de MPLAB 6, fermez-les toutes, ainsi vous saurez comment les rouvrir, et tout le monde dbutera avec la mme configuration. MPLAB est un logiciel qui est construit sur la notion de projets. Un projet permet de mmoriser tout lenvironnement de travail ncessaire la construction dun . projet. Il vous permettra de rtablir tout votre environnement de travail lorsque vous le slectionnerez.

29

MPLAB 6 dispose dun wizard pour la cration des projets, qui vous permet den crer automatiquement de nouveaux. Cependant, afin de vous permettre de localiser les principales options des projets, je ne men servirai pas dans ce petit tutorial. Si par la suite vous dsirez lutiliser, il se slectionne laide du menu project->wizard Allez dans le menu Project et slectionnez new . La fentre qui souvre vous permet dintroduire le nom du projet et le rpertoire de travail du dit projet. Pour le rpertoire, vous disposez du bouton browser qui vous permet de pointer sur le bon rpertoire sans risque de vous tromper. Entrez essai1 comme nom de votre nouveau projet, et slectionnez le rpertoire dans lequel vous avez plac votre fichier maquette et votre fichier essai1.asm. Jai nomm le fichier asm de faon identique au projet, mais ce nest nullement obligatoire.

Une fois le bouton press, une nouvelle fentre apparat dans le coin suprieur gauche du bureau de MPLAB IDE.

Dans cette fentre, vous voyez le nom de votre projet (essai1.mcp), ainsi que les fichiers lis celui-ci. Pour linstant, vous nen avez aucun, cest normal.

30

Nous allons commencer prciser les paramtres importants de notre projet, et tout dabord le type de PIC que nous allons utiliser. Slectionner le menu configure->select device , une fentre apparat pour vous proposer le choix du PIC. Notez que par dfaut, Microchip vous propose un PIC de la famille 18F, promotion de nouveau produit oblige Slectionnez le 16F84.

La fentre vous montre alors, laide de leds vertes ou rouges quels outils sont supports par le PIC slectionn. Vous voyez donc que le simulateur intgr (MPLAB SIM) fonctionne avec ce PIC, et ainsi de mme pour les autres outils de dveloppement disponibles chez Microchip. Une fois cliqu , la fentre se referme. Nous allons maintenant prciser quel langage nous allons utiliser, sachant que nous travaillons en assembleur, mais que diffrents compilateurs sont proposs par Microchip et dautres socits. Slectionnez le menu project -> Select langage toolsuite . Dans la fentre qui souvre, slectionnez dans le menu droulant : Microchip MPASM toolsuite . MPASM est en effet lassembleur par dfaut de Microchip.

31

Dans les fentres infrieures, vous voyez le nom des excutables utiliss par MPASM, ne vous en proccupez pas. Cliquez pour fermer la fentre. Il nous faut maintenant indiquer MPASM quel est notre ou nos fichiers source(s). Ceci seffectue dans la fentre essai1.mcw qui est reste ouverte dans le coin suprieur gauche. Pour ajouter un fichier source, cest trs simple : cliquez avec le bouton droit sur source files , puis slectionnez Add . Une fois slectionn le fichier, le nom de celui-ci apparat dans larborescence. Notez que MPLAB pointe par dfaut sur votre rpertoire de travail, prcdemment choisi.

Ici, il est important de bien comprendre que le fichier source choisi sera celui qui sera assembl ou compil. Autrement dit, si dans ce fichier se trouve une instruction include qui inclut un autre fichier, vous ne devez pas le slectionner en supplment, il sera joint au projet au moment de lassemblage. Par contre, si vous dsirez assembler simultanment deux fichiers, et que votre premier fichier ne fait pas rfrence au second, alors vous devez ajouter ce fichier larborescence.32

Tous nos projets ne ncessiteront dajouter quun seul fichier. Si votre projet ncessite un ou plusieurs fichier(s) supplmentaire(s), la directive include sera ajoute au fichier source afin que lassembleur intgre automatiquement ce ou ces autre(s) fichier(s). Vous navez besoin de rien dautre, les autres lments de larborescence ne sont pas ncessaires pour un projet assembleur du type dont nous allons parler. Il nous reste un lment important prciser, celui du systme de numration utilis par dfaut. Slectionnez le menu : Project -> build options -> project . Une fentre souvre. Slectionnez longlet MPASM assembler .

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 Decimal . Ne touchez pas aux autres options, vous les utiliserez peut-tre lorsque vous serez devenus un pro et que vous voudrez adapter certains paramtres. A ce moment, leur rle vous semblera clair.

33

Afin dviter tout oubli, je vous conseille cependant de TOUJOURS placer un prfixe devant vos nombres, ceci vous vitera bien des dboires. Utilisez par exemple les syntaxes suivantes : 0x10, H10, ou 10h B00010000 D16 .16 : notations hexadcimales : notation binaire : notation dcimale : autre notation dcimale (noubliez pas le . )

Un nombre crit sous la forme sans prfixe sera interprt selon le paramtre prcdemment dcrit, et donc risque de poser problme si vous intgrez votre fichier dans un autre projet, ou, simplement, si vous communiquez autrui votre fichier source sans prciser la notation par dfaut. Maintenant, MPASM est prt assembler votre programme. Mais, allez-vous me dire, il ny a toujours rien lcran ! Effectivement, MPASM ne se proccupe pas des fichiers affichs lcran, seuls comptent le fichier inscrit dans larborescence et les fichiers inclus partir de ce fichier. Vous pouvez 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 a bien pu faire. Bien entendu, nous allons afficher notre fichier source, pour voir ce quil contient. La mthode la plus simple est de double-cliquer sur son nom dans larborescence de la fentre essai1.mcw. Faites-le. Voici votre fichier de dpart ouvert. Mettez-le la taille approprie en lui faisant occuper la moiti gauche de lcran si vous manquez de place (vous naurez plus besoin de fentre du projet, vous pouvez la masquer ou la rduire). Pour ouvrir un fichier qui nest pas inclus dans larborescence, utilisez le menu file>open ou licne douverture dans la barre doutils. Si vous voulez que vos crans ressemblent au mien, changez la police de lditeur. Pour ceci, slectionnez Edit -> properties , puis longlet text . Ensuite, un clic sur le bouton Select font vous permettra de choisir la police de caractres : Courier New de style Standard et dimposer une taille de 9 . Pour ceux que a intresse, je travaille sur un moniteur 22 pouces, et ma rsolution est de 1280 X 1024, a vous indique les proportions. Vrifiez galement dans longlet Tabs que la longueur de la tabulation est fixe 4 ( size sur MPLAB >7.5). Au besoin, modifiezla. Votre fichier asm est maintenant affich lcran. Notez pour ceux qui viennent de MPLAB 5 que la gestion des tabulations est diffrente sur MPLAB 5 et MPLAB 6, ce qui signifie que les mises en page dun fichier crit sur MPLAB 5 ne seront plus respectes lors du passage MPLAB 6. Jai donc modifi tous les fichiers en consquence. Ceux qui disposent de la version prcdente ont intrt utiliser les nouveaux fichiers.34

Pour ceux qui viennent de MPLAB 5, vous constatez que MPLAB 6 est plus simple manipuler, ceci va encore plus se confirmer lorsque nous verrons le simulateur. Nous allons maintenant examiner ce fichier dun peu plus prs.

35

Notes

36

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 position pour vous guider au travers du fichier. Najoutez donc pas de lignes pour linstant, pour garder la correspondance correcte avec ce texte. Si vous ne voyez pas de numro de lignes, allez dans le menu edit -> properties et cochez line numbers dans longlet editor Si vous narrivez pas effectuer des modifications dans votre fichier, et que votre clavier semble inactif (rencontr avec MPLAB 5.x), cest que vous avez utilis un caractre tendu dans le nom de votre fichier. Au contraire de MPLAB 5, MPLAB 6 gre maintenant tous les caractres tendus, pour les fichiers et pour les dossiers.

6.1 Les commentaires De la ligne 1 la ligne 31 vous voyez un grand cadre. Si vous regardez 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 joins avec cette leon le fichier essai1.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 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 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.

37

Pour voir ce quil contient, allez dans le menu file ->Open , choisissez all source files dans le cadre infrieur, et ouvrez p16F84.inc. dans le rpertoire C:\Program Files\MPLAB IDE\MCHIP_Tools pour MPLAB 6 et C:\Program Files\Microchip\MPASM Suite pour MPLAB 7 Une fois dpasse 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 interprtera FSR comme tant 0x04. 0x04 tant tout simplement ladresse de FSR dans la mmoire du PIC. H04 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 et retenir. Fermez le fichier p16F84.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 du PIC. Les valeurs crites ici seront intgres dans le fichier .hex pour signaler au programmateur les valeurs encoder aux adresses spcifiques du PIC. Nous y reviendrons. Sachez donc que si un fichier .hex a t cr par un programmeur attentif qui a utilis cette directive, vous naurez nul besoin de dfinir ces p