Professional Documents
Culture Documents
INTRODUCTION
Définition
L’architecture interne d’un microcontrôleur est celle d’un microprocesseur avec ses interfaces.
Le microprocesseur est le moteur (unité centrale) du microcontrôleur qui comporte en plus, tous
les interfaces, et ceci dans un même boitier.
Il existe plusieurs versions d’un microcontrôleur, car les utilisateurs n’ont pas tous besoin des
mêmes interfaces. Par exemples, certains vont privilégier plusieurs convertisseurs analogiques
digitaux alors que d’autres vont souhaiter étendre l’espace mémoire interne.
- Une mémoire morte, du type ROM pour conserver le programme, l’ensemble des
instructions qui seront exécutées par l’unité centrale, même si le processeur perd son
alimentation électrique ;
- Une mémoire de données intermédiaires, variables sous la forme d’une RAM, dont le
contenu est effacé si le microprocesseur perd son alimentation électrique ;
- Des ports regroupés sous forme d’entrée ou de sortie ou les deux (E/S), pour
communiquer avec l’extérieur ;
- Des bus (bus de données, d’adresses et de contrôle) pour échanger des informations
entre les différents modules ;
1
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
Domaines d’utilisation
Un microcontrôleur sert :
- Machines à laver
- Photocopieuses
- Guichet bancaire automatiques
- Alarmes
- Détection
- Supervision dans les appareils
2
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
Architecture Harvard contre Von Neumann
Mémoire de
programme
Unité centrale Bus de données contenant
instructions et
données
Architecture Harvard
Mémoire de
Unité programme
Mémoire de données Bus de données Bus d’instructions ne contenant
centrale que des
instructions
Les microcontrôleurs PIC utilisent une architecture Harvard. Ils font également appel à une
architecture de type RISC (Reduced Instruction Set Computer).
- Les circuits RISC utilisent une structure de type pipe-line qui leur permet d’exécuter
une instruction tout en recherchant la suivante en mémoire ;
- De plus, les circuits RISC exécutent toutes leurs instructions en un seul cycle
machine dû en grande partie au codage de l’instruction en un seul mot.
NN LLL XXX
3
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
NN : famille à laquelle appartient le circuit : peut être 12, 16, 17 ou 18. On
distingue 3 grandes familles :
LLL : ensemble de une, deux ou trois lettres désignant tout à la fois, le type de
mémoire de programme contenu dans le circuit et la plage de tension
d’alimentation (étendue ou normale) :
- CC : mémoire EPROM
- CR : mémoire ROM
- F : mémoire Flash.
Exemple : 16 F 84-04 : PIC Mid-range dont la mémoire programme est de type Flash, de
référence 84 et capable d’accepter une fréquence d’horloge de 4 MHz.
Remarque :
Les PICs sont des composants statiques, c’est-à-dire que la fréquence d’horloge peut être
abaissée jusqu’à l’arrêt complet sans perte de données et sans disfonctionnement.
4
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
LE MICROCONTROLEUR PIC 16F84
PRESENTATION GENERALE
STRUCTURE INTERNE
LE BROCHAGE
5
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
RB0 peut servir comme entrée/sortie normale du port B ou comme une entrée d’interruption
RA4 peut servir comme entrée sortie normale du port A ou comme entrée d’horloge externe
pour le pilotage du timer (TMR0).
En fonctionnement normal, la broche MCLR doit être reliée directement ou par l’intermédiaire
d’une résistance de 1 KΩ à +Vdd (+5V). Le bouton poussoir BP permet de faire une remise à
zéro externe.
Le circuit d’horloge peut être un circuit R/C ou R est connecté entre Vdd et OSC1 et C entre
OSC1 et Vss.
6
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
ORGANISATION DE LA MEMOIRE
7
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
LA MEMOIRE DE PROGRAMME (FLASH)
Cette mémoire de 1024 mots ($000-$3FF) de 14 bits stocke le programme. Elle est volatile et
reprogrammable à souhait. Chaque position de 14 bits contient une instruction. Ce qui permet
de coder sur un mot l’instruction et l’opérande ou son adresse. Le code produit est ainsi
compact. L’emplacement du programme peut se situer à n’importe quel endroit de la mémoire.
Les adresses 000h et 004h sont réservées. Elles correspondent respectivement aux vecteurs de
RESET et d’INTERRUPTION.
Suite à une remise à 0 (RESET) ou à la mise sous tension, le programme commence toujours à
l’adresse 000h (vecteur RESET).
org 004
goto L1
org 0x30
MAIN ………..
………..
………..
L1 ………..
………..
retfie
end
8
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
LES REGISTRES DE L’UNITE CENTRALE (LA MEMOIRE RAM)
Ces registres permettent de configurer tous les modules internes du PIC. On distingue :
Ces registres sont accessibles en lecture et écriture suivant leur fonction. L’espace mémoire
contenant ces registres est scindée en 2 parties : BANK0 et BANK1. Ces deux parties sont
accessibles par la même adresse ; la sélection de l’un des bank se fait selon deux bits de
contrôle : (RP1 et RP0) du registre d’état STATUS.
Dans le bank 0 les registres occupent les adresses 00h à 0Bh. Ce sont les registres
fondamentaux.
Dans le bank 1, les registres occupent les adresses 80h à 8B. Ce sont les registres associés.
Certains registres figurent dans les deux bank pour en faciliter l’accès.
9
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
Remarque :
Compteur RES 3
Le PIC dispose de 64 octets ($00 à $3f) de mémoire de type EEPROM réservés au stockage
des données qu’on désire conserver en cas d’absence de tension d’alimentation. Cette mémoire
que l’on peut lire et écrire commence à l’adresse 2100h.
L’inconvénient de cette mémoire est le temps d’écriture qui est assez long (environ 10 ms).
10
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
Toute lecture ou écriture dans le registre EEDATA se fait dans la position mémoire pointée par
EEADR. En fait, EEADR contient l'adresse relative par rapport à la page qui commence en
0x2100, autrement dit, l'adresse va de 0 à 63.
1. Ecriture dans L'EEPROM doit être autorisée par le positionnement à 1 du bit WREN ;
2. Placer l’adresse relative dans EEADR ;
3. Placer la donnée à écrire dans EEDATA ;
4. Placer 0x55 dans EECON2 ;
5. Placer 0xAA dans EECON2 ;
6. Démarrer l'écriture en positionnant le bit WR (bit 1 du registre EECON1);
7. Attendre la fin de l'écriture, (10 ms) (EEIF=1 ou WR=0) ;
8. Recommencer au point 2 si on a d'autres données à écrire.
Remarque :
C’est une ALU 8 bits qui réalise les opérations arithmétique et logique entre l’accumulateur W
et n’importe quel autre registre « f » ou constante k. L’accumulateur W est un registre de travail
8 bits, il n’a pas d’adresse comme les autres SFR. Pour les instructions à 2 opérandes, c’est
toujours le registre W qui contient l’un des opérandes. Pour les instructions à un opérande,
celui-ci peut être soit dans W soit n’importe quel registre f.
11
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
LES REGISTRES SPECIAUX
Ils permettent de configurer tous les modules internes du PIC (les ports, le timer, la gestion des
interruptions, etc.). Ces registres sont contenus dans l’espace mémoire RAM située au dessus
du registre à usage général (GPR). Ils sont désignés par « Special Function Rgister (SFR) » et
repartis sur deux pages appelés « bank » :
Ce registre n’a aucune existence physique. En écriture, un NOP est produit. En lecture, on y
trouve toujours 00. Ce registre sert uniquement à spécifier l’utilisation de l’adressage indirect
de la façon suivante :
ADDWF INDF,W; ajouter au contenu du registre W, le contenu de la case mémoire adressée par le registre
FSR.
c)- Le registre F02 ou F82 (PCL) : 8 bits de poids faible du compteur de programme PC.
C’est un registre de 8 bits. Ce n’est autre que les 8 bits de poids faible du registre PC
(program counter). Le contenu de ce registre est complété avec tout ou partie du registre
PCLATH pour générer la valeur réelle du PC lors de certaines instructions particulières.
Ce registre contient les bits d’état de l’unité centrale et les bits RP0 et RP1 de sélection des
pages (bank) de la mémoire de données.
C =1 si retenue, 0 sinon
DC=1 si une retenue est générée du bit 3 vers le quartet supérieur dans les
instructions ADDLW et ADDWF. DC =0 sinon.
Z=1 si le résultat de l’opération arithmétique ou logique exécutée est nul et à 0
sinon.
PD = 0 lors de l’exécution de l’instruction SLEEP. Il est à 1 suite à une mise
sous tension ou à l’exécution de l’instruction CLRWDT.
12
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
TO =1 lors du débordement du timer chien de garde et est à 0 suite à une mise
sous tension ou à l’exécution de l’instruction CLRWDT ou SLEEP.
RP0 = 0 : choix du bank 0 et RP0 = 1, choix du bank 1.
Le contenu de ce registre est utilisé pour réaliser l’adressage indirect. C’est un registre de 8 bits.
h)- registre F08 (EEDATA) : registre contenant la donnée à écrire ou à lire dans la
mémoire EEPROM.
i)- registre F09 (EEADR) : registre contenant l’adresse à accéder dans la mémoire
EEPROM
j)- registre F0A ou F8A (PCLATCH) : 5 bits de poids fort du compteur de programme
7 6 5 4 3 2 1 0
GIE EEIE TOIE INTE RBIE TOIF INTF RBIF
Si 1 : interruptions activées
Si 0 : interruptions désactivées
13
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
INTF : INTerrupt Flag – drapeau d’interruption provoquée par la broche RB0/INT
Si 1 une interruption vient de se produire sur RB0
Doit être remis à 0 par programmation
RBIF : RB port change interrupt flag – drapeau d’interruption provoquée par les broches
RB4 à RB7
Si 1 un changement d’état vient de se produire sur l’un des ports RB4 à RB7
Doit être remis à 0 par programmation.
l)- registre F81 (OPTION) : registre de contrôle du diviseur, des interruptions externes et
des pull-ups du port B.
7 6 5 4 3 2 1 0
RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0
14
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
m)- registre F85 [TRISA]: registre de contrôle de direction du port A
Registre à utiliser lors d’une lecture ou d’une écriture dans la mémoire EEPROM.
4 3 2 1 0
EEIF WRERR WREN WR RD
WR : WRite
Normalement à 0, il se met dans cet état de lui-même
1 pour écrire une donnée ; bit remis automatiquement à 0.
RD :Read
Normalement à 0, il se met dans cet état de lui-même
1 pour lire une donnée ; bit remis à 0 automatiquement
p)- registre F89 [EECON2] : registre de sécurité d’écriture pour la mémoire EEPROM
15
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
REGISTRE DE CONFIGURATION
C’est un registre de 14 bits situé à l’adresse 0x2007 hors de l’espace d’adressage normal du
PIC. Il n’est accessible qu’au moment de la programmation. On accède à ce registre à l’aide de
la directive _CONFIG. Cette directive permet de :
13 12 11 10 9 8 7 6 5 4 3 2 1 0
2
CP CP CP CP CP CP DP CP CP CP PWRTE WDTE FOSC1 FOSC0
bits 1:0 FOSC1:FOSC0 Sélection du type d'oscillateur pour l'horloge
11 : Oscillateur RC
10 : Oscillateur HS (High speed) : quartz haute fréquence (jusqu'à 10 MHz)
01 : Oscillateur XT, c'est le mode le plus utilisé, quartz jusqu'à 4 MHz
00 : Oscillateur LP (Low power), consommation réduite, jusqu'à 200 kHz
16
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
WDTE = 0 : Watch Dog Timer désactivé
_config_CP_OFF&_PWTE_ON&WDTE_OFF&_XT_OSC
17
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
LES MODES D’ADRESSAGE
Définition
Les modes d’adressage sont un ensemble de techniques permettant d’accéder aux opérandes
d’une opération ou à leur adresse.
Dans ce mode d’adressage, la donnée manipulée par l’instruction est codée avec l’instruction
elle-même. La donnée en question s’appelle ici un « littéral ». Le mode d’adressage permet de
charger directement une valeur dans un registre.
MOVLW k ; transférer le littéral k, qui est une valeur quelconque codée sur 8 bits (de 0 à 255) dans le
registre W.
Adressage direct
Ce mode consiste à coder le nom du ou des registres directement dans l’instruction. Il permet
d’opérer sur un registre contenu dans l’instruction. Le registre est repéré par son nom ou par
son adresse.
MOVWF f ; transférer le contenu du registre W dans le registre f repéré par son adresse
Ce mode d’adressage ne s’emploie jamais seul mais toujours couplé avec l’adressage direct.
BCF f,b ; mettre à zéro le bit b du registre f ; b varie entre 0 et 7 ; f est repéré par son adresse.
Adressage indirect
Le registre FSR d’adresse 04 ou registre de sélection du registre dans lequel on place le numéro
du registre adressé. Le mode de notation correspondant utilise le registre INDF sous la forme
par exemple :
MOVWF INDF ; transférer le contenu de W dans l’emplacement mémoire adressé par FSR
MOVF INDF,d ; transférer l’octet adressé par FSR dans W si d = 0 ou dans l’emplacement mémoire
18
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
LES INSTRUCTIONS DU PIC 16F84
Tous les PICs Mid-range ont un jeu de 35 instructions. Chaque instruction est codée sur un mot
de 14 bits qui contient le code opération ainsi que l’opérande. A part les instructions de saut,
toutes les instructions sont exécutées en un cycle d’horloge. Sachant que l’horloge fournie au
PIC est prédivisée par 4, si on utilise par exemple un quartz de 4 MHz, on obtient donc 1 000 000
de cycles/ seconde, soit une puissance de l’ordre de 1MIPS (1 Million d’Instructions par
seconde).
Ce sont des instructions qui manipulent les données sous forme d’octets.
Exemple :
MOVF f,d
Ce sont des instructions destinées à manipuler directement les bits d’un registre particulier.
Exemple :
Ce sont les instructions qui manipulent des données (littérales) qui sont codées dans
l’instruction directement. La valeur immédiate appelée « littéral » est codée sur 8 bits (de 0 à
255).
Remarque :
Les mnémoniques de ces instructions comportent un « L » pour littéral. Ce sont des instructions
à un seul opérande qui est le littéral k.
Exemple :
ANDLW k ; ET logique entre le « littéral » k et le contenu du registre W. Le résultat est stocké dans W.
19
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
SUBLW k ; k - W ⟶ W.
Exemple :
CALL L ; appel du sous-programme L
GOTO L ; branchement à l’étiquette L
NOP ; pas d’opération
RETURN ; retour d’un sous-programme
RETFIE ; retour d’interruption
RETLW ; retour d’un sous-programme avec k dans le registre W.
SLEEP ; mise en mode standby
La liste complète des instructions du PIC 16F84 se trouve en annexe.
20
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
Reg2
endc
……………………………………….
; Début du programme après RESET et configuration des lignes de port
org 0
bsf STATUS, RP0 ; choix du bank 1
movlw b’xxxxxxxx’ ; charger le registre w avec le nombre binaire (x=0 ou 1)
movwf TRISB ; configuration des lignes du port B en entrée ou en sortie
bcf STATUS, RP0 ; choix du bank 0
Debut instruction 1
Instruction 2
; Sous programmes
end ; fin du programme
21
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
L’INTERFACE PARALLELE DU PIC 16F84
Le port A
C’est un port de 5 bits (RA0-RA4). Chaque entrée/sortie est compatible TTL. La configuration
de direction pour chaque ligne d’E/S est déterminée par le registre TRISA.
La broche RA4 est multiplexée avec l’entrée horloge du timer TMRO. Le choix se fait à l’aide
du bit TOCS du registre OPTION_REG.
Registre OPTION_REG
RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0
Le port B
C’est un port bidirectionnel de 8 bits (RB0-RB7). Toutes les broches sont compatibles TTL. La
configuration de direction se fait grâce au registre TRISB. En entrée, la ligne RB0 appelée
aussi INT peut déclencher une interruption externe INT. En entrée, une quelconque des lignes
RB4 à RB7 peut déclencher une interruption RBI. Le registre de sortie est PORTB d’adresse
06 du Bank 0.
Remarque :
LE TIMER TMRO
22
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
Dans le cas de l'horloge externe, on peut choisir le front sur lequel le TIMER
s'incrémente.
o TOSE = 0 ⟹ incrémentation sur fronts montants
o TOSE = 1 ⟹ incrémentation sur fronts descendants
Quelle que soit l'horloge choisie, on peut la passer dans un diviseur de fréquence
programmable (prescaler) dont le rapport est fixé par les bits PS0, PS1 et PS2 du registre
OPTION_REG (tableau ci-contre). L'affectation ou non du prédiviseur se fait à l'aide
du bit PSA du registre OPTION_REG
o PSA = 0 ⟹ on utilise le prédiviseur
o PSA = 1 ⟹ pas de prédiviseur (affecté au chien de garde)
Le contenu du timer TMR0 est accessible par le registre qui porte le même nom. Il peut
être lu ou écrit à n'importe quel moment. Après une écriture, l'incrémentation est inhibée
pendant deux cycles instruction.
23
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
LE WATCHDOG TIMER WDT (CHIEN DE GARDE)
L'horloge du WDT est ajustée pour que Le Time-Out arrive toutes les 18 ms. Il est
cependant possible d'augmenter cette durée en faisant passer le signal Time-Out dans un
prédiviseur programmable (partagé avec le timer TMR0). L’affectation se fait à l'aide du bit
PSA du registre OPTION_REG.
PSA = 1 ⟹ on utilise le prédiviseur
PSA = 0 ⟹ pas de prédiviseur (affecté à TMR0)
Le rapport du prédiviseur est fixé par les bits PS0, PS1 et PS2 du registre OPTION_REG.
L'utilisation du WDT doit se faire avec précaution pour éviter la réinitialisation (inattendue)
répétée du programme. Pour éviter un WDT timeOut lors de l'exécution d'un programme, on a
deux possibilités :
24
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
LE MODE SLEEP
Le PIC peut être placé en mode faible consommation à l'aide de l'instruction SLEEP. Dans ce
mode, l'horloge système est arrêtée ce qui arrête l'exécution du programme. Pour sortir du mode
SLEEP, il faut provoquer un WAKE-UP, pour cela il y a 3 possibilités :
RESET externe dû à l'initialisation du PIC en mettant l'entrée MCLR à 0. Le PIC
reprend l'exécution du programme à partir du début.
Timeout du chien de garde WDT si celui-ci est validé. Le PIC reprend le programme à
partir de l'instruction qui suit l'instruction SLEEP
Interruption INT (sur RB0) ou RBI (sur RB4-RB7) ou EEI (fin d'écriture en EEPROM
de données). Le bit de validation de l'interruption en question doit être validé, par
contre, le WAKE-UP a lieu quelle que soit la position du bit de validation globale GIE.
On a alors deux situations :
o GIE = 0, Le PIC reprend l'exécution du programme à partir de l'instruction
qui suit l'instruction SLEEP, l'interruption n'est pas prise en compte.
o GIE = 1, Le PIC exécute l'instruction qui se trouve juste après l'instruction
SLEEP puis se branche à l'adresse 0004 pour exécuter la procédure
d'interruption. Dans le cas où l'instruction suivant SLEEP n'est pas désirée, il
faut utiliser l'instruction NOP.
LES INTERRUPTIONS
Une interruption provoque l’arrêt du programme principal pour aller exécuter une procédure
d'interruption. A la fin de cette procédure, le microcontrôleur reprend le programme à l’endroit
où il s’était arrêté. Le PIC16F84 possède 4 sources d'interruption. A chaque interruption sont
associés deux bits: un bit de validation et un drapeau. Le premier permet d'autoriser ou non
l'interruption, le second permet au programmeur de savoir de quelle interruption il s'agit. Tous
ces bits sont dans le registre INTCON à part le drapeau EEIF de l'interruption EEI qui se trouve
dans le registre EECON1.
Lorsque l'événement déclencheur d'une interruption intervient, alors son drapeau est positionné
à un (levé). Si l'interruption correspondante a été validée, elle est alors déclenchée : le
programme arrête ce qu'il est en train de faire et va exécuter la procédure d'interruption qui se
trouve à l'adresse 4 en exécutant les étapes suivantes :
l'adresse contenue dans le PC (Program Counter) est sauvegardée dans la pile, puis
remplacée par la valeur 0004 (adresse de la routine d'interruption).
Le bit GIE est mis à "0" pour inhiber toutes les interruptions (afin qu'on ne soit pas
dérangés pendant l'exécution de la procédure d'interruption).
A la fin de la procédure d'interruption (instruction RETFIE) :
o le bit GIE est replacé à l'état haut (autorisant ainsi un autre événement)
o le contenu du PC est rechargé à partir de la pile, ce qui permet au
programme de reprendre là où il s'est arrêté
25
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
Remarque :
- Le drapeau reste à l’état haut même après le traitement de l’interruption. Par
conséquent, il faut toujours le remettre à "0" à la fin de la routine d'interruption
sinon l'interruption sera déclenchée de nouveau juste après l'instruction RETFIE.
Cette interruption est provoquée par un changement d'état sur l'entrée RB0 du port B quand
elle est programmée en entrée. Elle est gérée par les bits :
- INTE : bit de validation (1=oui, 0=non) ;
- INTF : drapeau ;
- INTEDG : front de déclenchement, 1=montant, 0=descendant (registre
OPTION_REG).
Cette interruption est provoquée par un changement d'état sur l'une des entrées RB4 à RB7 du
port B, Le front n'a pas d'importance. Les bits associés sont RBIE (validation) et RBIF (drapeau)
du registre INTCON.
Cette interruption est provoquée par le débordement du timer TMR0. Les bits associés
sont T0IE (validation) et T0IF (drapeau) du registre INTCON.
Cette interruption est déclenchée à la fin d'une écriture réussie dans l'EEPROM. Les bits
associés sont EEIE (validation) et EEIF (drapeau) du registre INTCON.
26
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène
REFERENCES
27
Le microcontrôleur PIC 16F84 de Microchip – Notes de cours – année 2015 – Dr. ALI Eugène