اهلا بك

الكاتب

مرحبا بكم

البحث فى المدونه

اشترك ليصلك كل جديد

احصل على كل جديد فى عالم التدوين لحظه بلحظه اشترك الان

الأربعاء، 25 فبراير 2015

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
Mnémonique , opérande
Description
bit du registre STATUSaffecté
nombre de cycles
MOVLW kk (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 kSoustrait W de k (8 bits) et place le résultat dans (W)
k - (W) -> (W)
C, DC , Z
1
ANDLW kRéalise un ET logique entre k (8 bits) et (W), et place le résultat dans (W)
Z
1
IORLW kRéalise un OU logique (inclusif) entre k (8 bits) et (W), et place le résultat dans (W)
Z
1
XORLW kRé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 LBranchement à l'adresse L
-
2
CALL LAppelle un sous-programme (subroutine) situé à l'adresse L
-
2
RETURNRetour de sous-programme
-
2
RETLW kRetour 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 , dAdditionne le contenu du registre f (8 bits) et (W), et place le résultat dans (destination)
C, DC , Z
1
SUBWF f , dSoustrait (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 , dRéalise le complément logique de (f) (8 bits), et place le résultat dans (destination)
Z
1
DECF f , dDécrémente (f) et place le résultat dans (destination).
(f) - 1 -> (destination)
Z
1
DECFSZ f , dDé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 , dIncrémente (f) et place le résultat dans (destination).
(f) + 1 -> (destination)
Z
1
INCFSZ f , dIncré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 fEfface le contenu du registre (f).
Remarque : le bit Z est donc mis à 1.
Z
1
CLRWEfface le contenu de l'accumulateur (W).
Remarque : le bit Z est donc mis à 1.
Z
1
RLF f , dRéalise une rotation circulaire à gauche :
Le résultat est placé dans (destination).
C
1
RRF f , dRéalise une rotation circulaire à droite :
Le résultat est placé dans (destination).
C
1
SWAPF f , dLes 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

التعليقات
0 التعليقات

0 التعليقات:

إضغط هنا لإضافة تعليق

إرسال تعليق

Blogger Widgets