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 :

ce qui permet de stocker un programme de :

 

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

 

W : régistre de travail (accumulateur), taille 8 bits

k : valeur littérale, taille 8 bits

Mnémonique , opérande
Description
bit du registre STATUS affecté
nombre de cycles
MOVLW k k (8 bits) est chargé dans (W)
-
1
ADDLW kAdditionne k (8 bits) et (W) et place le résultat dans (W)
C, DC , Z
1
SUBLW k

Soustrait W de k (8 bits) et place le résultat dans (W)

k - (W) -> (W)

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

 

L : label (étiquette)

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

 

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

b : position du bit (0 à 7)

Mnémonique , opérande
Description
bit du registre STATUS affecté
nombre de cycles
BCF f , bMise à 0 du b ème bit du registre f
-
1
BSF f , bMise à 1 du b ème bit du registre f
-
1
BTFSC f , bSi le b ème bit du registre f est égal à 0, alors l'instruction suivante est ignorée, et une instruction NOP est exécutée à la place (soit 2 cycles)
-
1 ou 2
BTFSS f , bSi le b ème bit du registre f est égal à 1, alors l'instruction suivante est ignorée, et une instruction NOP est exécutée à la place (soit 2 cycles)
-
1 ou 2

 

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

Mnémonique , opérande
Description
bit du registre STATUS affecté
nombre de cycles
MOVWF f(W) est chargé dans (f)
-
1
MOVF f , d(f) (8 bits) est chargé dans (destination)
Z
1
ADDWF f , d

Additionne le contenu du registre f (8 bits) et (W), et place le résultat dans (destination)

C, DC , Z
1
SUBWF f , d

Soustrait (W) de (f) (8 bits) et place le résultat dans (destination).

(f) - (W) ->(destination)

C, DC , Z
1
ANDWF f , dRéalise un ET logique entre (f) (8 bits) et (W), et place le résultat dans (destination)
Z
1
IORWF f , dRéalise un OU logique (inclusif) entre (f) (8 bits) et (W), et place le résultat dans (destination)
Z
1
XORWF f , dRéalise un OU exclusif entre (f) (8 bits) et (W), et place le résultat dans (destination)
Z
1
COMF f , d Réalise le complément logique de (f) (8 bits), et place le résultat dans (destination)
Z
1
DECF f , d

Décrémente (f) et place le résultat dans (destination).

(f) - 1 -> (destination)

Z
1
DECFSZ f , d

Décrémente (f) et place le résultat dans (destination).

Si le résultat est 0, alors l'instruction suivante est ignorée, et une instruction NOP est exécutée à la place (soit 2 cycles)

-
1 ou 2
INCF f , d

Incrémente (f) et place le résultat dans (destination).

(f) + 1 -> (destination)

Z
1
INCFSZ f , d

Incrémente (f) et place le résultat dans (destination).

Si le résultat est 0, alors l'instruction suivante est ignorée, et une instruction NOP est exécutée à la place (soit 2 cycles)

-
1 ou 2
CLRF f

Efface le contenu du registre (f).

Remarque : le bit Z est donc mis à 1.

Z
1
CLRW

Efface le contenu de l'accumulateur (W).

Remarque : le bit Z est donc mis à 1.

Z
1
RLF f , d

Réalise une rotation circulaire à gauche :

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

C
1
RRF f , d

Réalise une rotation circulaire à droite :

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

C
1
SWAPF f , d

Les 4 bits de poids forts et les 4 bits de poids faibles de (f) sont échangés.

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

-
1
NOPCette instruction ne fait rien (durée 1 cycle).
-
1

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