Vous êtes sur la page 1sur 4

12/29/2018 Jeu d'instructions 16F84A 16F628A 16F88 16F876A 16F886

Jeu d'instructions des PIC 16F84A, 16F628A,


16F88, 16F876A et 16F886

Les PIC 16F84A, 16F628A, 16F88, 16F876A, 16F886 (famille mid-range) ont le même jeu
d'instructions, constitué de seulement 35 instructions (architecture RISC : Reduced Instruction-
Set Computer).

Une instruction est codée par un mot de 14 bits.

La mémoire programme (de type Flash) a une taille de :

1792 octets (16F84A)


3584 octets (16F628A)
7168 octets (16F88)
14 336 octets (16F876A - 16F886)

ce qui permet de stocker un programme de :

1024 instructions (16F84A)


2048 instructions (16F628A)
4096 instructions (16F88)
8192 instructions (16F876A - 16F886)

Une instruction nécessite 1 cycle, ou bien 2 cycles dans le cas d'une instruction de branchement
(GOTO, CALL ...).

Avec une horloge à quartz de 20 MHz, un cycle correspond à 4/(20.106) = 200 nanosecondes.

Le microcontrôleur peut donc exécuter jusqu'à 5 millions d'instructions par seconde (5 MIPS) !

Jeu d'instructions
W : régistre de travail (accumulateur), taille 8 bits

k : valeur littérale, taille 8 bits

bit du
Mnémonique , registre nombre
Description
opérande STATUS de cycles
affecté
MOVLW k k (8 bits) est chargé dans (W) - 1
ADDLW k Additionne k (8 bits) et (W) et place le C, DC , 1
résultat dans (W) Z
http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/jeu_instruction.htm 1/4
12/29/2018 Jeu d'instructions 16F84A 16F628A 16F88 16F876A 16F886

Soustrait W de k (8 bits) et place le


résultat dans (W) C, DC ,
SUBLW k 1
Z
k - (W) -> (W)
Réalise un ET logique entre k (8 bits)
ANDLW k Z 1
et (W), et place le résultat dans (W)
Réalise un OU logique (inclusif) entre
IORLW k k (8 bits) et (W), et place le résultat Z 1
dans (W)
Réalise un OU exclusif entre k (8 bits)
XORLW k Z 1
et (W), et place le résultat dans (W)

L : label (étiquette)

bit du
Mnémonique , registre nombre
Description
opérande STATUS de cycles
affecté
GOTO L Branchement à l'adresse L - 2
Appelle un sous-programme
CALL L - 2
(subroutine) situé à l'adresse L
RETURN Retour de sous-programme - 2
Retour de sous-programme, avec
RETLW k chargement de la valeur littérale k (8 - 2
bits) dans (W)
Retour de sous-programme
RETFIE - 2
d'interruption
/TO,
CLRWDT Efface le Watchdog 1
/PD
Place le microcontrôleur en mode /TO,
SLEEP 1
sommeil /PD

f : registre (spécial ou d'usage général)

b : position du bit (0 à 7)

bit du
Mnémonique , registre nombre
Description
opérande STATUS de cycles
affecté
BCF f , b Mise à 0 du b ème bit du registre f - 1
BSF f , b Mise à 1 du b ème bit du registre f - 1

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/jeu_instruction.htm 2/4
12/29/2018 Jeu d'instructions 16F84A 16F628A 16F88 16F876A 16F886

BTFSC f , b Si le b ème bit du registre f est égal à - 1 ou 2


0, alors l'instruction suivante est
ignorée, et une instruction NOP est
exécutée à la place (soit 2 cycles)
Si le b ème bit du registre f est égal à
1, alors l'instruction suivante est
BTFSS f , b - 1 ou 2
ignorée, et une instruction NOP est
exécutée à la place (soit 2 cycles)

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

bit du
nombre
Mnémonique registre
Description de
, opérande STATUS
cycles
affecté
MOVWF f (W) est chargé dans (f) - 1
MOVF f , d (f) (8 bits) est chargé dans (destination) Z 1
ADDWF f , Additionne le contenu du registre f (8 bits) et C, DC ,
1
d (W), et place le résultat dans (destination) Z
Soustrait (W) de (f) (8 bits) et place le résultat
SUBWF f , dans (destination). C, DC ,
1
d Z
(f) - (W) ->(destination)
ANDWF f , Réalise un ET logique entre (f) (8 bits) et (W),
Z 1
d et place le résultat dans (destination)
Réalise un OU logique (inclusif) entre (f) (8
IORWF f ,
bits) et (W), et place le résultat dans Z 1
d
(destination)
XORWF f , Réalise un OU exclusif entre (f) (8 bits) et
Z 1
d (W), et place le résultat dans (destination)
Réalise le complément logique de (f) (8 bits),
COMF f , d Z 1
et place le résultat dans (destination)
Décrémente (f) et place le résultat dans
DECF f , d (destination). Z 1
(f) - 1 -> (destination)
Décrémente (f) et place le résultat dans
(destination).
DECFSZ f ,
Si le résultat est 0, alors l'instruction suivante - 1 ou 2
d
est ignorée, et une instruction NOP est
exécutée à la place (soit 2 cycles)
INCF f , d Incrémente (f) et place le résultat dans Z 1
http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/jeu_instruction.htm 3/4
12/29/2018 Jeu d'instructions 16F84A 16F628A 16F88 16F876A 16F886

(destination).

(f) + 1 -> (destination)


Incrémente (f) et place le résultat dans
(destination).
INCFSZ f ,
Si le résultat est 0, alors l'instruction suivante - 1 ou 2
d
est ignorée, et une instruction NOP est
exécutée à la place (soit 2 cycles)
Efface le contenu du registre (f).
CLRF f Z 1
Remarque : le bit Z est donc mis à 1.
Efface le contenu de l'accumulateur (W).
CLRW Z 1
Remarque : le bit Z est donc mis à 1.
Réalise une rotation circulaire à gauche :

RLF f , d C 1

Le résultat est placé dans (destination).


Réalise une rotation circulaire à droite :

RRF f , d C 1

Le résultat est placé dans (destination).


Les 4 bits de poids forts et les 4 bits de poids
SWAPF f , d faibles de (f) sont échangés. - 1
Le résultat est placé dans (destination).
NOP Cette instruction ne fait rien (durée 1 cycle). - 1

(C) Fabrice Sincère ; Révision 1.0.4

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/jeu_instruction.htm 4/4

Vous aimerez peut-être aussi