Upload
faical-sd
View
219
Download
0
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