Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PIC16F84

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 22

Chapitre 1.

Rappels généraux sur les processeurs


I.1. Introduction
I.2. Codage de l’information
Chapitre 2. Les microcontrôleurs

Chapitre 3. La programmation C adaptée aux microcontrôleurs

1
Introduction

Un Microcontrôleur est un circuit intégré qui regroupe dans un même boîtier une unité de
traitement de l’information avec tous les éléments vitaux d’un système programmé RAM, ROM,
Interfaces d’entrées/sorties, etc. sans nécessiter l’ajout de composants externes.

Les microcontrôleurs sont caractérisés par un plus haut degré d'intégration, une plus faible
consommation électrique, et un coût de produits réduit par rapport aux systèmes électroniques à
base de microprocesseur.

Les microcontrôleurs sont fréquemment utilisés dans les systèmes embarqués, comme les
télécommandes, les téléphones mobile, les contrôleurs des moteurs automobiles, les appareils de
bureau, l'électroménager, les jouets etc.

2
Architecture d’un Microcontrôleur

La particularité d’un microcontrôleur est qu’il est contenu dans un seul circuit intégré. Son
architecture est la même que celle d’un système informatique. Par rapport à une carte mère
d’ordinateur, les éléments qui constituent un microcontrôleur sont généralement plus simples,
moins performants, et de capacité plus limitée.

Bus d’adresses

Processeur ROM RAM I/O

Bus de données

• Le processeur est cadencé à des fréquences de quelques mégahertz ou dizaines de mégahertz


et ne consomme généralement qu’une fraction de watt.
• La mémoire morte contient généralement de un à quelques centaines de kilooctets.
• La mémoire vive est généralement très limitée : de quelques centaines d’octets à quelques
dizaines de kilooctets selon les modèles.
• Les E/S sont simplement des lignes logiques, pour lire ou fournir des informations binaires. 3
Familles des Microcontrôleurs

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, les plus connues sont :

• La famille Atmel AT91


• La famille Atmel AVR
• Le C167 de Siemens/Infineon
• La famille Hitachi H8
• La famille Intel 8051
• L'Intel 8085, à l'origine conçu pour être
un microprocesseur, a en pratique souvent
été utilisé en tant que microcontrôleur
• Le Motorola 68HC11
• La famille des PIC de Microchip
• La famille des ST6 de STMicroelectronics
• La famille ADuC d'Analog Devices
• La famille PICBASIC de Comfile Technology

Les microcontrôleurs PIC sont dérivés du PIC1650 qui à été développé à l'origine par la division
microélectronique de General instrument.
A l'époque du développement du PIC1650 par General Instrument, le nom PIC était un acronyme
de « Programmable Intelligent Computer » ou « Programmable Integrated Circuit », Actuellement, la
traduction en « Peripheral Interface Controller » ou « contrôleur d'interface périphérique » est
généralement admise
4
Les microcontrôleurs PIC

Un PIC est un microcontrôleur produit par Le fabricant Américain de circuits intégrés


MicroChip Technology . Ses principales caractéristiques sont :

• Séparation des mémoires de programme et de données (architecture Harvard) : Qui


permet d’avoir des instructions et des données pas forcément codées sur le même nombre de
bits.

• Communication avec l'extérieur seulement par des ports : Pas de bus d'adresses, ni bus de
données ni bus de contrôle comme la plupart des microprocesseurs.

• Utilisation d'un jeu d'instructions réduit : RISC (Reduced Instructions Set Construction):
Les instructions sont ainsi codées sur un nombre réduit de bits, ce qui accélère l'exécution (1 cycle
machine par instruction sauf pour les sauts qui requirent 2 cycles) d'où l’utilisation des
instructions basiques, contrairement aux systèmes d'architecture CISC (Complex Instructions
Set Construction) qui proposent plus d'instructions donc codées sur plus de bits mais réalisant
des traitements plus complexes.

Il existe trois familles de PIC :

• Base-Line : Les instructions sont codées sur 12 bits


• Mid-Line : Les instructions sont codées sur 14 bits
• High-End : Les instructions sont codées sur 16 bits
5
Identification d’un PIC

Un PIC est identifié par un numéro de la forme :


xx(L) XX yy –zz
- xx : Famille du composant (12, 14, 16, 17, 18)
- L : Tolérance plus importante de la plage de tension
- XX : Type de mémoire de programme et d’alimentation
F - FLASH 4,5 à 6V
C - EPROM ou EEPROM 4,5 à 6V
CR - PROM 4,5 à 6V
LF - FLASH 2 à 6V Composant Mémoire Données Données Fréquence
programme RAM EEPROM Max
LC - EPROM ou EEPROM 2,5 à 6V
PIC 16F83 512 Flash 36 64 10
LCR - ROM 2,5 à 6V
- yy : Identification (Type) PIC 16F84 1K Flash 68 64 10

- zz : Vitesse maximum du quartz PIC 16CR83 512 Flash 36 64 10

Exemple : PIC 16F84 –10 PIC 16CR84 1K Flash 68 64 10

Soit :
- 16 : Mid-Line (instructions codées sur 14 bits)
- F : FLASH (Mémoire programme)
- 84 : Type (Référence de 2 à 4 chiffres)
- 10 : Quartz à 10MHz au maximum
6
Le PIC 16F84
C’est un microcontrôleur 8 bits à 18 pattes qui s’est très vite répandu, et qui reste l’un des plus
utilisé dans le monde de l’électronique amateur pour de multiples raisons :

• Architecture RISC : 35 instructions de durée 1 ou 2 cycles


(1 cycle machine par instruction, sauf pour les sauts 2
cycles machine)
• Vitesse maximum 10 MHz soit une instruction en 400 ns
(1 cycle machine = 4 cycles d'horloge)
• Instructions codées sur 14 bits et (PC) Compteur
programme sur 13 bits : Adressage 8K mots (h’0000’ à
h’1FFF’)
• 1K mots de 14 bits pour la EEPROM Flash Programme de
h’000’ à h’3FF’
• 68 Octets de RAM
• 64 Octets d'EEPROM Data.
• 4 sources d'interruption
- Externe par la broche partagée avec le Port B : PB0
- Par changement d'état des bits du Port B: PB4 PB5
PB6 ou PB7
- Quand l'écriture de Data en EEPROM est terminée.
- Par débordement du Timer.
• Compteur 8 bits avec pré diviseur programmable.
• 13 Ports Entrée-Sortie bidirectionnels pouvant produire
7
25 mA par sortie. PORTA = 5 bits et PORTB=8bits.
Brochage du PIC 16F84

Le brochage du circuit montre les fonctions


des pattes comme suivant

• VSS, VDD : Connexions d'alimentation du circuit


VDD (PIN14) Alimentation (2,0 V à 5,5 V DC)
VSS (PIN5) Masse (0 V)

• RB0 à RB7 et RA0 à RA4 : 13 lignes permettent


de dialoguer avec l'extérieur du microcontrôleur
(E/S logiques)
PORT A : 5 bits bidirectionnels ; La ligne RA4 peut
aussi être utilisée (multiplexée) comme entrée
d'horloge du compteur (Timer) TMR0 (T0CKI).
PORT B : 8 bits bidirectionnels ; La ligne RB0 est
multiplexée avec une entrée d'interruption (INT)

• MCLR : Master Clear (Reset) active à état bas;


permet lorsque la tension appliquée est égale à 0V
de réinitialiser le microcontrôleur.

• OSC1/CLKIN (PIN16) , OSC2/CLKOUT (PIN15)


Connectés souvent à un cristal de quartz pour la
stabilisation externe du signal d’horloge interne 8
Brochage du PIC 16F84
Le Reset du µC 16F84 peut avoir plusieurs causes :
• Une mise sous tension POR (Power On Reset) .
• Une mise à 0 de la broche MCLR (Reset manuelle) .
• Un débordement du timer du chien de garde WDT .
Le fonctionnement du µC 16F84 nécessite une
horloge qui rythme l’exécution des instructions du
programme. On distingue trois modes d’horloge :
• Horloge interne à quartz : (MODE XT, HS ou LP) Avec
l’oscillateur à quartz, on peut avoir des fréquences
allant de 4 MHz jusqu’à 20 MHz selon le type du µC.
• Horloge interne à circuit RC : (MODE RC) Avec un
oscillateur à circuit RC, la fréquence de l’oscillation
dépend de la tension Vdd et des éléments Rext et Cext.
• Horloge externe : (MODE XT, HS ou LP) Application
d’un signal horloge externe.

9
Architecture interne du PIC 16F84

10
Architecture interne du PIC 16F84

L’architecture interne du 16F84 présente : • Une mémoire données EEPROM de 64 Octets


• Une mémoire Programme
• Un système d'initialisation (Power-up • Un bus de programme
timer) • Un bus de données
• Un système de génération d'horloge à partir • Un compteur (timer)
du quartz externe (Timing génération) • un chien de garde (WDT)
• Une Unité arithmétique et logique (ALU) • un registre des codes des l'instructions à
• La mémoire RAM contenant : exécuter
- Les SFR • 2 ports d'entrées/sorties
- 68 Octets de données • un Compteur programme avec une pile (stack)
11
Organisation de la mémoire – Mémoire programme

•La mémoire programme Flash contenant le PC 12 : 0


RETURN , CALL
programme a une capacité de 1K x 14 bits, de 13/
RETFIE
l’adresse 0000h à 03FFh. Stack Niveau 1
•Le compteur de programme (PC) présente 13 bits
donc il peut en adresser 8k mais la mémoire ne
Stack Niveau 8
contient que 1k "mots" de 14 bits d’où l’existence
Reset 0000h
des adresses images
•L'adresse 0000h contient le vecteur du reset. Interruption 0004h

Espace adressable sur 13 bits (8K max)


•le PIC va démarrer son programme à l’adresse
0000h, De ce fait, l’instruction qui sera placée à
l’adresse 0000h sera très souvent un GOTO xxxxh
mais peut être une instruction quelconque faisant

1K
partie du corps du programme si l’interruption
n’est pas utilisée.
• L'adresse 0004h contient l'unique vecteur
d'interruption du PIC.
• La pile contient 8 valeurs. pour la sauvegarde du
compteur programme avant un saut à un sous 3FFh
programme (CALL) ou quand une interruption
apparaît. Les 13 bits de la valeur du compteur
sont restitués à l'instruction de retour sous
programme ou retour d'interruption (RETURN et
RETLW ou RETFIE).
1FFFh 12
Organisation de la mémoire – Mémoire Données
Adresse Page 0 Page 1 Adresse
• Constituée de deux zones : 00h INDF INDF 80h
- SFR (Special function registers): Contient les 01h TMR0 OPTION 81h
registres de configuration et de fonction du 02h PCL PCL 82h
microcontrôleur.
03h STATUS STATUS 83h
- GPR ( General Purpose Register ) : Contient la RAM.
04h FSR FSR 84h
• Découpée en deux pages : Bank 0 et Bank 1.

12 Octets

Zone SFR
05h PORTA TRISA 85h
Accès à la Bank 0 : STATUS .RP0 = 0.
06h PORTB TRISB 86h
Accès à la Bank 1 : STATUS .RP0 = 1
07h 87h
• Chaque page contient 128 bits (de 00 à 7F), donc
7 bits d'adresse. 08h EEDATA EECON1 88h
• Les 12 premiers octets de chaque page sont 09h EEADR EECON2 89h
réservés pour la zone SFR. 0Ah PCLATH PCLATH 8Ah
• Le reste est attribué à la zone GPR de la RAM.
0Bh INTCON INTCON 8Bh
ZONE GPR:
0Ch 8Ch
Elle contient des mots de 8 bits. Les adresses GPR
68 Octets

Zone GPR 116 Octets


en page 1 sont confondues avec celles de la page 0. RAM
RAM Mappée
On atteint la même adresse en RAM quand on 68 Octets Sur page 0
adresse en h'0C' ou en h'8C'.
ZONE SFR:
4Fh CFh
Elle contient dans les deux Banks les registres 50h D0h
48 Octets

utilisés par le microcontrôleur et les


périphériques internes pour contrôler le
fonctionnement du circuit. 13
7Fh FFh
Les registres spéciaux du 16F84
Registre de configuration : un mot de 14 bits qui permet de configurer les particularités du PIC
B13 B0

CP CP CP CP CP CP CP CP CP CP PWRTE WDTE FOSC 1 FOSC 0

FOSC0 et FOSC1 : Sélection du type d'oscillateur pour l'horloge.


FOSC1 FOSC0=11 : Oscillateur à circuit RC jusqu'à 4 MHz.
FOSC1 FOSC0=10 : Oscillateur HS, quartz haute fréquence, jusqu'à 20 MHz.
FOSC1 FOSC0=01 : Oscillateur XT, quartz standard jusqu'à 4 MHz.
FOSC1 FOSC0=00 : Oscillateur LP, quartz basse fréquence, jusqu'à 200 KHz.
WDTE : Validation du timer du watchdog WDT.
WDTE=1 : WDT activé ; WDTE=0 : WDT désactivé
PWRTE : Validation d'une temporisation à la mise sous tension.
Le µC possède un timer permettant de retarder de 72 ms le lancement du programme après la
mise sous tension. Ce délai maintient le µC à l’arrêt et permet ainsi à la tension d'alimentation de
bien se stabiliser.
PWRTE=1 : le µC démarre tout de suite ; PWRTE=0 : le µC attend 72 ms.
CP : Protection en lecture des mémoires de programme et de données.
CP=1 : pas de protection ; CP=0 : protection activée
Exemple : On désire configurer le registre pour répondre aux critères suivants :
oscillateur à quartz de 4 MHz, le timer du watchdog n’est pas autorisé, une attente de 72 ms est
souhaitée et le µC n’est pas protégé en lecture.

Configuration: 1 1 1 1 1 1 1 1 1 1 0 0 0 1 En hexadécimal : 3FF1


14
Les registres spéciaux du 16F84 - SFRs

Les registres spéciaux du 16F84 sont au total 16 registres. Ils permettent la gestion du circuit.
Certains ont une fonction générale, d'autres une fonction spécifique attachée à un périphérique
donné. Ils sont situés de l'adresse 00h à l'adresse 0Bh dans la banque 0 et de l'adresse 80h à
l'adresse 8Bh dans la banque 1.
Les registres 07h et 87h n'existent pas.
INDF (00h - 80h) : Utilise le contenu de FSR pour l'accès indirect à la mémoire .
Le registre INDF n'est pas un registre physique. Quand on adresse INDF, on accède au registre dont
les 8 bits d'adresse sont contenus dans le registre FSR (04h - 84h), qui se comporte comme un
pointeur.
TMR0 (01h) : Le compteur/Timer TMR0 qui a les
caractéristiques suivantes :
- Compteur sur 8 bits.
PC : Program Counter
- Lecture / écriture de TMR0.
- Prédiviseur 8 bits programmable.
- Choix de l'horloge : interne en mode timer et externe
en mode compteur.
- Interruption au débordement ( passage de FF à 00).
- Choix du front de l'horloge en mode horloge externe.
PCL (02h - 82h) : Le compteur de programme (PC) est
sur 13 bits. Les 8 bits de poids faible sont dans le PCL
registre PCL qui est en lecture/écriture
PCLATH (0Ah-8Ah) : Contient les poids forts du
compteur de programmes (PC).
PCLATH 15
Les registres spéciaux du 16F84
REGISTRE OPTION ( h'81' ) : Registre qui fixe le fonctionnement de l’horloge interne.
B7 B0

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

RBPU : Active à 0 toutes les résistances pull-up (de tirage) à 5V pour le port B. +5V
1 : Pull up désactivé sur le Port B.
0 : Pull up activé.
INTEDG : Interrupt Edge select bit. Front de l’interruption sur RB0/INT
1: Interruption sur RB0 si front montant ↑ RBi
0: Interruption sur RB0 si front descendant ↓
TOCS : Timer TMR0 Clock Source select bit : choix de l’horloge du Timer
0: Timer piloté par horloge interne
1: Timer piloté par signal externe via la broche RA4/TOCK1 PIC 16F84
TOSE : Timer TMR0 Source Edge select bit.
PS2 PS1 PS0 Prédiv Timer Prédiv WDT
fixe le front d’horloge externe
0 0 0 2 1
1: front montant ↑ 0: front descendant ↓
PSA: affecte un facteur de division 0 0 1 4 2
0: pour le Timer 0 1 0 8 4
1: pour le chien de garde 0 1 1 16 8
PS2,PS1,PS0: (Taux de prédivision) 1 0 0 32 16
définie la valeur du facteur de division. 1 0 1 65 32
Remarque : Quand le prédiviseur est affecté au 1 1 0 128 64
Watchdog (PSA=1), TMR0 est prédivisé par 1. 1 1 1 256 128
16
Les registres spéciaux du 16F84

REGISTRE STATUS ( h'03' ou h'83' ) : On accède indifféremment à ce registre par une quelconque de
ces 2 adresses.
B7 B0

IRP RP1 RP0 TO PD Z DC C

Au reset : STATUS = 00011XXX


IRP : permet la sélection des pages en adressage indirect. Pour les deux pages possibles du PIC
16F84 (de 00 à 7F et de 80 à FF) ce bit doit être laissé à "0". Mis à "1" il permettra d'atteindre les
pages 3 et 4 (de 100 à17F et de 180 à 1FF) pour les futurs produits de Microchip.
RP1 et RP0 : permettent la sélection des pages en adressage direct pour les deux pages possibles
du PIC 16F84
00 : Bank 0 (00h – 7Fh) Exemple:
01 : Bank 1 (80h – FFh) BSF STATUS,5 ; permet d'accéder à la Page 1 car RP0=1
10 : Bank 2 (100h – 17Fh) BCF STATUS,5 ; permet l'accès à la Page 0 car RP0=0
11 : Bank 3 (180h – 1FFh)
Chaque banque est à 128 bits, uniquement le RP0
est utilisé pour le 16F84, le RP1 est maintenu à 0.
RP1 RP0 Page sélectionnée
TO = Time Out bit. Bit en lecture seulement.
1 : Après une mise sous tension, après une mise à zéro du 0 0 Page0 de 00 à 7F
watchdog (CLRWDT) ou bien après l'instruction SLEEP. 0 1 Page1 de 80 à FF
0 : Signifie qu'un Time Out du timer de watchdog est 1 0 Page2 de 100 à 17F
survenu. 17
1 1 Page3 de 180 à 1FF
Les registres spéciaux du 16F84

REGISTRE STATUS ( h'03' ou h'83' ) : On accède indifféremment à ce registre par une quelconque
de ces 2 adresses.
B7 B0

IRP RP1 RP0 TO PD Z DC C

PD : Power Down bit.


1 = Après une mise sous tension ou bien après une mise à zero du Watchdog.
0 = Après l'instruction SLEEP.

Z : Zero bit.
1 = Le résultat d'une opération arithmétique ou logique est zéro.
0 = Le résultat d'une opération arithmétique ou logique est différent de zéro.

DC : Digit Carry bit.


1 = Une retenue sur le 4eme bit des poids faible est survenue après les instructions :
ADDWF et ADDLW.
0 = Pas de retenue sur le 4eme bit des poid faible.

C = Carry bit / Borrow .


1 = Une retenue sur le bit MSB est survenue après les instructions ADDWF et ADDLW.
0 = Pas de retenue sur le bit MSB.
Pour une Borrow, l'information est inversée (après SUBLW et SUBWF)
18
Les ports Entrée/Sortie du 16F84

PORTA : (h'05') : Il comporte 5 bits. PA4 peut également servir d'entrée pour le décomptage du
Timer TMR0. Les autres bits PA0 à PA3 sont des entrées/sorties compatibles TTL . Chaque broches
peut être configurée en entrée ou en sortie grâce à un registre de direction : TRISA.
RA4 RA3 RA2 RA1 RA0

TRISA : (h'85‘)
1 : Le bit correspondant est configuré en ENTREE.
0 : Le bit correspondant est configuré en SORTIE.
TRISA4 TRISA3 TRISA2 TRISA1 TRISA0

PORTB : (h'06')
Il comporte 8 bits, Chaque broche du PORT B est munie d'un tirage au +VDD que l'on peut mettre ou
non en service en mode entrée uniquement par la mise à "0" du bit 7 dans le registre OPTION.
Ce tirage est inactif quand le port est configuré en sortie.
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

TRISB : (h'86')
1 : Le bit correspondant est configuré en ENTREE.
0 : Le bit correspondant est configuré en SORTIE.
TRISB2 TRISB1 TRISB0 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0

Au RESET: PORTA et PORTB sont configurés en ENTREE (TRISA et TRISB = 0xFF) et PORTB
présente des tirages désactivés.
La mémoire de données EEPROM du 16F84
Cette mémoire est en lecture/écriture. Elle n'est pas placée dans la zone de mémoire DATA et sera
donc adressée indirectement par 4 registres de la zone SFR, il s'agit des registres suivant :
EECON1 , EECON2 , EEDATA , EEADR
Le PIC 16F84 possède 64 octets d'EEPROM dont les adresses vont de 00 à 3F.
EEADR h'09' : Registre d'adresse.
Ce registre permet d'adresser jusqu'à 256 octets d'EEPROM mais seulement les 64 premiers
octets sont implémentés. Les deux bits de poids forts doivent donc être positionné à "0" pour être
certain de bien accéder aux 64 premiers octets.
EEDATA h'08' : Registre données, dans lequel transitent les données à écrire ou lues.
EECON1 h'88' : Registre de contrôle. Ce registre de contrôle possède 5 bits.
EEIF WRERR WREN WR RD

EEIF : EEPROM Write Operation Interrup Flag bit. WREN : EEPROM Write Enable bit.
1 : L'opération d'écriture est terminée. 1 : Autorise les cycles d'écriture.
0 : L'opération d'écriture n'est pas terminée 0 : Interdit l'écriture dans l'EEPROM.
WR : Write Control bit
WRERR : EEPROM Error Flag bit.
1 = Démarre un cycle d'écriture.
1: Une opération d'écriture s'est terminée
0 = Le cycle d'écriture est terminé.
prématurément à cause d'un reset ou de l'entrée
en action du watchdog pendant la phase RD : Read Control bit.
d'écriture. 1 = Débute un cycle de lecture de l'EEPROM.
0 : L'opération d'écriture s'est passé correctement. 0 = Ne débute pas un cycle de lecture.

EECON2 h'89' : Registre de contrôle. Ce n'est pas un registre physique. Il est utilisé uniquement
pendant les séquences d'écriture en EEPROM.
Les 35 Instructions du PIC 16F84

Instructions sur les registres (octets) :


IORWF f , d d:=W OR f
Mnémonique Description OU logique (inclusif) entre (f) (8 bits) et (W), et
place le résultat dans (destination)
ADDWF f, d Additionne le contenu du registre f (8 bits)
et (W), et place le résultat dans (destination) MOVF f , d d:=f (f) (8 bits) est chargé dans (destination)
ANDWF f, d Réalise un ET logique entre (f) (8 bits) et
MOVWF f Le contenu du registre W est déplacé (chargé)
(W), et place le résultat dans (destination)
dans le registre f
CLRF f Efface le contenu du registre (f).
Remarque : le bit Z est donc mis à 1. NOP N’effectue aucune opération
CLRF PORTA ; Le PORTA est mis à "0".
RLF f , d Réalise une rotation circulaire à gauche :
CLRW Efface le contenu de l'accumulateur (W).
Remarque : le bit Z est donc mis à 1.
COMF f , d Réalise le complément logique de (f) (8 bits),
et place le résultat dans (destination) Le résultat est placé dans (destination)

DECF f , d Décrémente (f) et place le résultat dans RRF f , d Réalise une rotation circulaire à droite :
(destination). d:=f – 1
DECFSZ f , d Décrémente (f) et place le résultat dans
(destination). d:=f - 1 Si le résultat est # 0, Le résultat est placé dans (destination).
l'instruction suivante est exécutée. Si le
résultat est 0, on saute l'instruction suivante. SUBWF f , d d:= f – W Soustrait (W) de (f) (8 bits) et place
le résultat dans (destination).
INCF f,d Incrémente (f) et place le résultat dans
(destination). d:=f+1 SWAPF f , d Les 4 bits de poids forts et les 4 bits de poids
faibles de (f) sont échangés.
INCFSZ f,d Incrémente (f) et place le résultat dans Le résultat est placé dans (destination).
(destination). d:=f+1 ; Si le résultat est # 0,
l'instruction suivante est exécutée. Si le XORWF f , d d:= W XOR f OU exclusif entre (f) (8 bits) et
résultat est 0, on saute l'instruction suivante. (W), et place le résultat dans (destination)

21
Les 35 Instructions du PIC 16F84

Instructions sur les registres (bit à bit) :


Mnémonique Description
CALL k Appelle un sous-programme (subroutine)
BCF f , b f[b]:=0 (Mise à 0 du b ème bit du registre f situé à l'adresse k
)
CLRWDT remet à 0 le Timer du chien de garde
BCF STATUS,7 ; mise à 0 du bit 7 du
registre STATUS.
GOTO k se branche à l'adresse k
BSF f , b f[b]:=1 (Mise à 1 du b ème bit du registre f
) IORLW k W:=W OR k OU logique (inclusif) entre k (8
BSF PORTA,7 ; Le bit 7 de PORTA est bits) et (W), et place le résultat dans (W)
mis à "1".
MOVLW k W:=k k (8 bits) est chargé dans (W)
BTFSC f , b Si le b ème bit du registre f est égal à 0,
alors l'instruction suivante est ignorée, et RETFIE Fin d’une interruption (Retour de sous-
une instruction NOP est exécutée à la programme d'interruption)
place
RETLW k Retour de sous-programme, avec chargement
BTFSS f , b Si le b ème bit du registre f est égal à 1, de la valeur littérale k (8 bits) dans (W)
alors l'instruction suivante est ignorée, et w:=k ,
une instruction NOP est exécutée à la
RETURN effectue un retour de sous programme
place (soit 2 cycles)
SLEEP Place le microcontrôleur en mode sommeil et
Instructions de contrôle : stoppe l'oscillateur
SUBLW k W:= k – W Soustrait W de k (8 bits) et place
ADDLW k W:=W+k Additionne k (8 bits) et (W) le résultat dans (W)
et place le résultat dans (W)
XORLW k W:=W XOR k OU exclusif entre k (8 bits) et
ANDLW k W:=W AND k ET logique entre k (8 bits) (W), et place le résultat dans (W)
et (W), et place le résultat dans (W)

Vous aimerez peut-être aussi