CH 6. Le Microcontrôleur PIC16F84 de Microchip

publicité
Microprocesseurs & Microcontrôleurs
Lotfi BOUSSAID
Département de Génie Électrique
Ecole Nationale d’Ingénieurs de Monastir
[email protected]
2016 - 2017
Les Microcontrôleurs
Plan du Cours
- CH 1. Codage de l’Information
- CH 2. Les Portes Logiques
- CH 3. Les Registres, les mémoires et les ALU
- CH 4. Introduction aux Microprocesseurs
- CH 5. Le Microprocesseur 8086 d’Intel
- CH 6. Le Microcontrôleur PIC16F84 de Microchip
- CH 7. Introduction au Microcontrôleur 16F877
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
2
CH 6. Le Microcontrôleur PIC16F84 de Microchip
Introduction aux microcontrôleurs
Un microcontrôleur est un composant réunissant sur un seul et même silicium
plusieurs composants. On parle de "système sur une puce" (en anglais : "System On
chip"). Il existe plusieurs familles de microcontrôleurs, se différenciant par la vitesse de
leur processeur et par le nombre de périphériques qui les composent. Toutes ces
familles ont un point commun c’est de réunir tous les éléments essentiels d’une
structure à base de microprocesseur sur une même puce.
Un microcontrôleur comprend :
-
Un microprocesseur (C.P.U.) ;
Des bus;
De la mémoire de donnée (RAM et EEPROM) ;
De la mémoire programme (ROM, OTPROM, UVPROM ou EEPROM) ;
Des interfaces parallèles pour la connexion des entrées / sorties ;
Des interfaces séries (synchrone ou asynchrone) pour le dialogue avec d’autres unités;
Des Timers pour générer ou mesurer des signaux avec une grande précision temporelle.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
3
CH 6. Le Microcontrôleur PIC16F84 de Microchip
Introduction aux microcontrôleurs
Architecture interne d’un microcontrôleur
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
4
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
• Harvard
BUS SYSTÈME
BUS INSTRUCTIONS
MÉMOIRE
DONNÉES
MÉMOIRE
PROGRAMME
CPU
IO
IO
IO • • • • •
BUS DONNÉES
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
5
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Qu’est-ce qu’un PIC ?
Un PIC est un microprocesseur à lequel on a rajouté des périphériques
Les PICs sont des composants dits RISC (Reduced Instructions Set Computer)
Les familles des PICs :
• La famille Base-Line : mots d’instructions de 12 bits
• La famille Mid-Range, qui utilise des mots de 14 bits (16F84, 16F876, ..)
• La famille High-End, qui utilise des mots de 16 bits.
Tous les PICs Mid-Range ont un jeu de 35 instructions, stockent chaque instruction dans
un seul mot de programme, et exécutent chaque instruction (sauf les sauts) en 1 cycle.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
6
6
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Le PICs de MICROCHIP (2)
Identification d’un PIC
 PIC16  indique un PIC Mid-Range
 C indique que la mémoire programme est une EPROM ou plus rarement une EEPROM
 CR pour indiquer une mémoire de type ROM
 F pour indiquer une mémoire de type FLASH
 Les derniers chiffres identifient le PIC
 -XX représente la fréquence d’horloge maximale
Un composant qu’on ne peut reprogrammer est appelé O.T.P. pour One Time Programming
un 16F84-04 est un PIC Mid-Range (16) donc la mémoire programme est de type FLASH (F)
donc réinscriptible de type 84 et capable d’accepter une fréquence d’horloge de 4MHz.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
7
7
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Caractéristiques du processeur RISC : 16F84A Microprocesseur
 Seulement 35 instructions codées sur 14 bits ;
 Toutes les instructions ont un seul 1 cycle machine par instruction, sauf pour les sauts (2 cycles
machine);
 Vitesse maximum 20 MHz soit une instruction en 400 ns (1 cycle machine = 4 cycles d'horloge) ;
 Mémoire programme de 1024 mots ;
 Mémoire RAM de données de 68 octets ;
 Mémoire EEPROM de 64 octets ;
 Données de 8 bits ;
 15 Registres pour des fonctions spéciales ;
 Pile de 8 niveaux de profondeur ;
 Adressage direct, indirect and relatif ;
 4 sources d’interruption :
 Broche externe RB0/INT ;
 Débordement du timerTMR0 ;
 Interruption sur transition sur les broches PORTB<7:4> ;
 Ecriture complète des données sur la mémoire EEPROM.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
8
8
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Caractéristiques des périphériques :
 13 broches d’entrées / Sorties avec contrôle individuel de la direction ;
 Source de courant important pour la commande d’une LED :
o 25 mA max. dissipé par broche ;
o 25 mA source de courant max. par broche ;
o TMR0: Timer8-bit programmable
Caractéristiques spéciales :
 Mémoire programme FLASH à 10 000 cycles Effacement / Ecriture;
 Mémoire données EEPROM à 10,000,000 cycles Effacement / Ecriture, avec un maintien de
données > 40 ans;
 Programmable par liaison série sur 2 broches (ICSP™) ;
 Reset à la mise sous tension [Power-on Reset (POR)] , Power-up Timer(PWRT) ;
 Un Timer chien de garde (WDT) avec son propre oscillateur RC ;
 Protection de code ;
 Mode SLEEP pour la sauvegarde d’énergie ;
 Oscillateur sélectionné au choix ;
 Large plage de tension de fonctionnement :
 Commercial: 2.0V to 5.5V
 Industriel : 2.0V to 5.5V
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
9
9
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Brochage et fonction des pattes
- VSS, VDD : Alimentation
- OSC1,2 : Horloge
- RA0-4 : Port A
- RB0-7 : Port B
- T0CKL : Entrée de comptage
- INT : Entrée d'interruption
- MCLR : Reset : 0V
- Choix du mode
programmation : 12V - 14V
- Exécution : 4.5V - 5.5V
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
10
10
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Horloge
Le 16F84A peut opérer suivant 4 différents modes. L’utilisateur peut exploiter les
2 broches FOSC1 et FOSC0 pour sélectionner un de ces 4 modes :




Quartz à faible puissance (LP : LowPower Crystal)
Quartz XT (Crystal/Resonator)
Quartz à haute vitesse (HS High Speed Crystal/Resonator)
Circuit RC (Resistor/Capacitor)
 Avec l'oscillateur à Quartz, on peut avoir des fréquences allant jusqu'à 4, 10 ou
20 MHz selon le type de microcontrôleur.
 L'horloge peut être soit interne soit externe. L'horloge interne est constituée
d'un oscillateur à quartz ou d'un oscillateur RC.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
11
11
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Horloge
Horloge externe LP, XT ou HS
Horloge interne LP, XT ou HS
Horloge interne à oscillateur RC
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
12
12
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Câblage du PIC16F84A
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
13
13
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Architecture interne
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
14
14
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Principe de fonctionnement
 Un microcontrôleur exécute des instructions.
 « le cycle instruction » : le temps nécessaire à l’exécution d’une instruction.
 Une instruction est exécutée en deux phases :
- Phase de recherche du code binaire de l’instruction stocké dans la mémoire
de programme.
- Phase d’exécution de l’instruction.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
15
15
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Principe de fonctionnement
 Normalement l’exécution d’une instruction dure 8 cycles d’horloges.
 L’architecture particulière des PICs (Bus différents pour les données et le
programme) lui permet de réduire ce temps par deux.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
16
16
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Organisation de la mémoire programme FLASH
-
Program counter : 13 bits
-
Espace mémoire adressable : 1K x 14 bits
-
Les adresses 20h, 420h, 820h, C20h, 1020h,
1420h, 1820h, et 1C20h, contiennent les
mêmes instructions.
-
Le vecteur Reset est à l’adresse 0000h
-
Le vecteur interruption est à l’adresse 0004h
Mémoire programme 1K x 14 bits
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
17
17
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Organisation de la mémoire des Données RAM
-
Mémoire données 2 x 128 octets
-
Comprend deux zones :
o Special Function Registers (SFR) zone
o General Purpose Registers (GPR) zone
-
Les instructions MOVWF et MOVF permettent
de déplacer les valeurs du registre W à n’importe
quelle adresse registre (“F”), et vice-versa
-
Le bit RP0 du registre (STATUS) permet de
passer de la banque 0 à la banque 1.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
18
18
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Mémoire de données
La mémoire de données est divisée en deux espaces :
 RAM
- Les SFR (Special Function Registers) qui permettent de contrôler les
opérations sur le circuit.
- La seconde partie contient des registres généraux (GPR: General Purpose
Registers) , libres pour l'utilisateur.
- Les deux parties de la mémoire de données sont divisées en deux banques.
- Cette division est assurée par deux bits de contrôle qui se trouvent dans le
registre STATUS
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
19
19
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Mémoire de données
La mémoire donnée est divisée en deux banques:
– La banque 0 est sélectionnée en mettant le bit RP0 du registre STATUS a 0.
– La banque 1 est sélectionnée en mettant le bit RP0 du registre STATUS a 1.
• Chaque banque est composée de 128 octets.
• Les 12 premières ligne de chaque banques sont réservées pour les SFR.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
20
20
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Registres généraux GPR
⁻ GPR : General Purpose Registers.
⁻ La taille des GPR est de 8 bits.
⁻ Les GPR sont accessibles soit directement soit indirectement à travers les
registres FSR et INDF.
⁻ Les adresses GPR dans la banques 0 et la banques 1 sont mappées.
⁻ Exemple: l’adresse 0Ch et 8Ch sont accédés par le même FSR
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
21
21
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Registres à fonction spéciale SFR
SFR: Special Function Registers.
•Permettent la gestion du circuit.
•Certains registres ont une fonction générale, d'autres ont une fonction spécifique
attachée à un périphérique donné.
•L'ensemble de ces registres est souvent appelé fichier des registres.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
22
22
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Registres à
fonction
spéciale SFR
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
23
23
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Un programme simple pour mettre à zéro les
adresses mémoires RAM de 20h-2Fh en
utilisant l’adressage indirect :
movlw 0x20
movwf FSR
NEXT
clrf INDF
incf FSR
btfss FSR,4
goto NEXT
CONTINUE
:
Lotfi BOUSSAID
;initialize pointer
;to RAM
;clear INDF register
;inc pointer
;all done?
;NO, clear next
;YES, continue
Microprocesseurs & Microcontrôleurs
24
24
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Le registres d’état : STATUS
 Contient l’état des opérations arithmétiques et logiques, l’état du RESET et le
choix de la banque mémoire.
 Comme tout les registres, le registre STATUS peut être une destination des
instructions.
 Une instruction peut modifier les bits Z, DC et C.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
25
25
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Organisation de la mémoire des Données EEPROM
La EEPROM est une mémoire à lecture / écriture.
Cette mémoire est indirectement adressée par les registres SFR.
Ces registres sont :
• EECON1
• EECON2 (n’est pas un registre physiquement implémenté)
• EEDATA
• EEADR
EEDATA maintient les 8 bits de données pour le RD/WR, et le EEADR maintient les adresses des
cases mémoires sélectionnées Le PIC16F84A possède 64 octets de données EEPROM dont les
adresses se trouvent entre 0h à 3Fh.
La EEPROM est conçue pour effectuer des cycles rapides d’effacement/écriture.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
26
26
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Organisation de la mémoire des Données EEPROM
EECON1 REGISTER
(ADDRESS 88h)
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
27
27
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Organisation de la mémoire des Données EEPROM
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
28
28
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Le registres d’état : STATUS
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
29
29
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Les ports d’entrées - sorties
•
•
•
5 broches d'entrée/sortie bidirectionnelles, notées RAx avec
x={0,1,2,3,4} (courant max absorbé /fourni : 25 ma)
Le registre PORTA, d'adresse 05h dans la banque 0, permet d'y
accéder en lecture ou en écriture.
Le registre TRISA, d'adresse 85h dans la banque 1, permet de choisir le
sens de chaque patte (entrée ou sortie) : un bit à 1 positionne le port
en entrée, un bit à 0 positionne le port en sortie.
Câblage interne d’une broche du Port A
•
•
•
•
•
•
"Data Latch" : Mémorisation de la valeur écrite quand le port est en
sortie.
"TRIS Latch" : Mémorisation du sens (entrée ou sortie) de la patte.
"TTL input buffer" : Buffer de lecture de la valeur du port. La lecture
est toujours réalisée sur la patte, pas à la sortie de la bascule
d'écriture.
Transistor N : En écriture : Saturé ou bloqué suivant la valeur écrite.
En lecture : Bloqué.
Transistor P : Permet d'alimenter la sortie.
Câblage interne d’une broche du Port A
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
30
30
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Le diagramme block de la broche RA4
La broche RA4 est multiplexée avec l’entrée
Timer0 Clock représentée par RA4/T0CKI
pin.
La broche RA4/T0CKI est une entrée Trigger
de Schmitt à sortie à drain ouvert. Toutes les
autres broches RAi sont des entrées TTL est
des sorties à driver CMOS.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
31
31
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Ports A et registre TRISA
 La broche RA4 est multiplexée avec l'entrée horloge du TimerTMR0
 Elle peut être utilisée soit :
• comme E/S normale du port A,
• comme entrée horloge pour le TimerTMR0
 Le choix se fait à l'aide du bit T0CS du registre OPTION_REG.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
32
32
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Ports A et registre TRISA
 RA4 est une E/S à drain ouvert, si on veut l'utiliser comme sortie (pour allumer une
LED par exemple), il ne faut pas oublier de mettre une résistance externe vers Vdd.
•
Si RA4 est positionnée à 0, l'interrupteur est fermé, la sortie est reliée à la
masse.
•
Si RA4 est placée à 1, l'interrupteur est ouvert, la sortie est déconnectée
d'où la nécessite de la résistance externe.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
33
33
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Ports B
 8 broches d'entrée/sortie bidirectionnelles,
notées RBx avec x={0,1,2,3,4,5,6,7}
 Le registre PORTB, d'adresse 06h dans la
banque 0, permet d'y accéder en lecture ou
en écriture.
 Le registre TRISB, d'adresse 86h dans la
banque 1, permet de choisir le sens de
chaque broche (entrée ou sortie) : un bit à 1
positionne le port en entrée, un bit à 0
positionne le port en sortie.
 Les quatre bits de poids fort (RB7-RB4)
peuvent être utilisés pour déclencher une
interruption sur changement d'état.
 RB0 peut aussi servir d'entrée d'interruption
externe.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
34
34
CH 6. Le Microcontrôleur PIC16F84 de Microchip
Le Compteur (Timer)
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
35
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Le compteur Timer/ WatchDog
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
36
36
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Le registre OPTION
Le registre option est
utilisé pour configurer le
Timer et le Watchdog.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
37
37
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Le compteur TIMER
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
38
38
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Les Fusibles du 16F84A
Les bits de configuration se trouve à l’adresse 2007h
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
39
39
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Les Interruptions
La16F84 est très pauvre à ce niveau, puisqu’il ne dispose que de 4 sources d’interruptions possibles
(contre 13 pour la 16F876 par exemple). Les événements susceptibles de déclencher une
interruption sont les suivants :
 TMR0 : Débordement du timer0 (tmr0). Une fois que le contenu du tmr0 passe de 0xff à
0x00, une interruption peut être générée. Nous utiliserons ces propriétés dans le chapitre
sur le timer0.
 EEPROM: cette interruption peut être générée lorsque l’écriture dans une case EEPROM
interne est terminée. Nous verrons ce cas dans le chapitre sur l’écriture en zone eeprom.
 RB0/INT: Une interruption peut être générée lorsque, la pin RB0, encore appelée
INTerruptpin, étant configurée en entrée, le niveau qui est appliqué est modifié. Nous allons
étudier ce cas ici.
 PORTB: De la même manière, une interruption peut être générée lors du changement d’un
niveau sur une des pins RB4 à RB7. Il n’est pas possible de limiter l’interruption à une seule
de ces pins. L’interruption sera effective pour les 4 pins ou pour aucune.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
40
40
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Les Interruptions
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
41
41
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Les Interruptions
Les différentes sources d’interruption
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
42
42
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Le registre INTCON
Le registre INTCON est
utilisé pour configurer les
interruptions.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
43
43
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Organisation des instructions
Quatre types d’instructions :
1- Les instructions « orientées octet »
Elles sont codées de la manière suivante :
- 6 bits pour l’instruction : logique, car comme il y a 35 instructions, il faut 6 bits pour pouvoir les coder
toutes
- 1 bit de destination(d) pour indiquer si le résultat obtenu doit être conservé dans le registre de travail
de l’unité de calcul (W pour Work) ou sauvé dans l’opérande (F pour File).
- Reste 7 bits pour encoder l’opérande (File)
2- Les instructions « orientées bits »
Manipulation directement des bits d’un registre particulier.
Elles sont codées de la manière suivante :
- 4 bits pour l’instruction (dans l’espace resté libre par les instructions précédentes)
- 3 bits pour indiquer le numéro du bit à manipuler (bit 0 à 7 possible), et de nouveau :
- 7 bits pour indiquer l’opérande.
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
44
44
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Organisation des instructions (2)
3- Les instructions générales
Instructions qui manipulent des données. Elles sont
codées de la manière suivante :
- L’instruction est codée sur 6 bits
- Elle est suivie d’une valeur IMMEDIATE codée sur 8
bits (donc de 0 à 255).
4- Les sauts et appels de sous-routines
Ce sont les instructions qui provoquent une rupture
dans la séquence de déroulement du programme.
Elles sont codées de la manières suivante :
- Les instructions sont codés sur 3 bits
- La destination codée sur 11 bits
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
45
45
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Liste des instructions
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
46
46
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Liste des instructions
W : registre de travail (accumulateur), taille 8 bits
k : valeur littérale, taille 8 bits
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
47
47
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Liste des instructions
L : label (étiquette)
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
48
48
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Liste des instructions
f : registre (spécial ou d'usage général)
b : position du bit (0 à 7)
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
49
49
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Liste des instructions
f : registre (spécial ou d'usage général)
d : registre de destination (on peut choisir entre le registre de travail W et le registre f).
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
50
50
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Liste des instructions
f : registre (spécial ou d'usage général)
d : registre de destination (on peut choisir entre le registre de travail W et le registre f).
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
51
51
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Liste des instructions
f : registre (spécial ou d'usage général)
d : registre de destination (on peut choisir entre le registre de travail W et le registre f).
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
52
52
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Organisation d’un programme assembleur
 Les de commentaires sont précédés par le symbole « ; »
 Les DIRECTIVES sont des commandes destinées à l’assembleur
• ORG 0x000
• __CONFIG _CP_ON & _WDT_ON & _PWRTE_ON & _HS_OSC
 Les fichiers « include »
• #include <p16F84.inc>
 Les assignations
• mavaleur EQU 0x05
 Les définitions
• #DEFINE monbit PORTA,1
 Les macros
LIREIN macro
comf PORTB,0
andlw 1
endm
 La zone des variables
 CBLOCK 0x00C ; début de la zone variables
w_temp :1 ; Zone de 1 byte
status_temp : 1 ; zone de 1 byte
mavariable : 1 ; je déclare ma variable
ENDC ; Fin de la
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
53
53
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
Les différents types d’adressage :
 Adressage immédiat
 movlw 0x50
 Adresage direct
• movf 0x10,w
mémoire
 Adressage indirect
• movlw 0x50
• movwf mavariable
• movlw mavariable
• movwf FSR
•
• movf INDF,w
; W  0x50
; W  (0x10) contenu de l’emplacement
; W  0x50
; mavariable  0x50
; W  0x0E
; on place l’adresse de destination dans FSR.
; FSR POINTE sur mavariable
; w  0x50
Incf f,d
d : destination elle peut avoir :
• f : résultat dans l’emplacement mémoire.
• w : résultat est laissé dans le registre de travail,
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
54
54
CH 6. Le Microcontrôleur PIC16F84 de Microchip
Les différents types d’adressage :
Adressage indirect
Registres FSR et INDF
 FSR est un registre spécial situé à l'adresse 0x04 (en banque 0) de la mémoire des
données (Data RAM).Ce registre est également accessible en banque 1 (à l'adresse
0x84).
 Ce registre contient une adresse (de la mémoire des données).
 On dit queFSR est un "pointeur".
 Le registre spécial INDF contient la valeur du registre pointé par le registre FSR (on
parle d'adressage indirect). INDF n'est pas un registre physique
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
55
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
La Programmation
PC
Programmateur
Langage C / BASIC
PIC
Hexadécimal
Langage Assembleur
Haut niveau
Bas niveau
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
56
56
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
1er Exemple : Allumer une LED par bouton poussoir
LIST p=16F84
include "P16F84.inc“
__CONFIG _CP_ON & _WDT_ON & _PWRTE_ON & _HS_OSC
org
0x0000
bsf
STATUS,RP0
; sélectionner bank 1
movlw b‘11111111'
; Port B en entrée
movwf TRISB
movlw b‘00000000' ; Port A en sortie
movwf TRISA
bcf
STATUS,RP0
boucle
btfsc PORTB,2
bcf PORTA,2
btfss PORTB,2
bsf PORTA,2
goto boucle
end
Lotfi BOUSSAID
; sélectionner bank 0
; tester RB2, sauter si vaut 0
; sinon on allume la LED
; tester RB2, sauter si vaut 1
; RB2 vaut 0, donc LED
Microprocesseurs & Microcontrôleurs
57
57
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
2ième exemple : Faire clignoter une LED (Langage C)
#include <16F84.h>
#fuses HS,NOPROTECT,NOWDT
#use delay(clock=4000000)
#define LED
PIN_RA2
Void main(){
while( 1 ){
Output_bit(LED,1);
Delay_ms(500);
Output_bit(LED,0);
Delay_ms(1000);
}
}
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
58
58
Les Microcontrôleurs
CH 6. Le Microcontrôleur
PIC16F84 de Microchip
3ième exemple : Commande de moteur pas à pas
La fonction avance() permet de faire tourner le moteur pas à pas de n*4 pas
#include <16F876a.h>
#fuses HS,NOPROTECT,NOWDT
#use delay(clock=16000000)
Void avance(int i){
Int j;
For(j=0;j<=i;j++){
Output_b(6); //1ère position
Delay_ms(5); //pause entre 2 pas
Output_b(5); //2ème position
Delay_ms(5); //pause entre 2 pas
Output_b(9); //3ème position
Delay_ms(5); //pause entre 2 pas
Output_b(10); //4ème position
Delay_ms(5); //pause entre 2 pas
}
Return;
}
Void main(){
Avance(4); //Fait tourner le moteur de 16 pas
}
Lotfi BOUSSAID
23
22
21
20
RB3 A
RB2 B
RB1 C
RB0 D
Port B
Etat1
0
1
1
0
6
Etat2
0
1
0
1
5
Etat3
1
0
0
1
9
Etat4
1
0
1
0
10
Microprocesseurs & Microcontrôleurs
59
59
Les Microcontrôleurs
Plan du Cours
- CH 1. Codage de l’Information
- CH 2. Les Portes Logiques
- CH 3. Les Registres, les mémoires et les ALU
- CH 4. Introduction aux Microprocesseurs
- CH 5. Le Microprocesseur 8086 d’Intel
- CH 6. Le Microcontrôleur PIC16F84 de Microchip
- CH 7. Introduction au Microcontrôleur PIC16F877
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
60
Microcontrôleurs
CH 7. LeLes
Microcontrôleur
PIC16F877
Le PIC 16F877A
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
61
61
Microcontrôleurs
CH 7. LeLes
Microcontrôleur
PIC16F877
Le PIC 16F877A
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
62
62
Microcontrôleurs
CH 7. LeLes
Microcontrôleur
PIC16F877
Le PIC 16F877A
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
63
63
Microcontrôleurs
CH 7. LeLes
Microcontrôleur
PIC16F877
Le PIC 16F877A
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
64
64
Microcontrôleurs
CH 7. LeLes
Microcontrôleur
PIC16F877
Le PIC 16F877A
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
65
65
Microcontrôleurs
CH 7. LeLes
Microcontrôleur
PIC16F877
Le PIC 16F877A
Lotfi BOUSSAID
Microprocesseurs & Microcontrôleurs
66
66
Téléchargement