Vous êtes sur la page 1sur 9

11/04/2020

Microprocesseurs et Microcontrôleurs

Jeu d’instructions du PIC 16F84A


Pr. A. AIT MADI

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 1

Plan

Introduction
Modes d’adressage
Instructions opérant sur registre
Instructions opérant sur un bit
Instructions opérant sur une constante
Instructions de saut et d’appel de procédures

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 2

1
11/04/2020

introduction

 Le PIC 16F84A possède 35 instructions


 Chaque instruction du PIC16F84A est codé sur 14 bits divisés en:
• Un Code opération qui spécifie le type d’instruction
• Un Opérande
 On distingue :
• Instructions opérant sur registre
• Instructions opérant sur un bit
• Instructions opérant sur une constante
• Instructions de saut et d’appel de procédures

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 3

introduction
Format d’une instruction

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 4

2
11/04/2020

Modes d’adressage

 Un mode d’adressage montre comment une instruction accède à une donnée

 Il existe trois grands types d'accès à une donnée ou modes d'adressage

• Adressage immédiat : La donnée est contenue dans l'instruction

Exemple :
movlw 0xC4 ; Transfert la valeur 0xC4 dans W

• Adressage direct : La donnée est contenue dans un registre. Ce dernier peut


être par un nom (par exemple W) ou une adresse mémoire.

Exemple :
movf 0x2B, 0 ; Transfert dans W la valeur contenue à l'adresse 0x2B.

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 5

Modes d’adressage

• Adressage indirect : L'adresse de la donnée est contenue dans un pointeur

 Un seul pointeur est disponible pour l'adressage indirect : FSR. Contenu à l'adresse
04h dans les deux banques

 L'accès au registre d'adresse contenue dans FSR se fait en utilisant le registre


INDF qui se trouve à l’adresse 00h sur les deux banques

 INDF utilisé pour accéder à la donnée elle-même, FSR servant à choisir l'adresse.

Exemple :
movlw 0x1A ; Charge 1Ah dans W
movwf FSR ; Charge W, contenant 1Ah, dans FSR
movf INDF, 0 ; Charge la valeur contenue à l'adresse 1Ah dans W

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 6

3
11/04/2020

Instructions opérant sur registre


 Ce sont des instructions qui manipulent un octet se trouvant dans la RAM. Ça
peut être un registre de configuration SFR ou une case mémoire quelconque
(Registre GPR)

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 7

Instructions opérant sur registre

 F (File) désigne une adresse, qui appartient (0x00 à 0x7F), de n'importe quel
registre SFR ou GPR
 Pour les registres SFR, on peut utiliser leurs noms à condition d'inclure le fichier
p16F84A.inc dans le programme
 W (Work register) : registre de travail qui fait la fonction d’un accumulateur
 d (Destination select)
• d=0 ou W : Stockage du résultat dans W
• d=1 ou f : Stockage du résultat dans F(File)

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 8

4
11/04/2020

Instructions opérant sur registre


Exemples de description d’une instruction

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 9

Instructions opérant sur registre


• Exemples
 Écrire la partie du programme qui permet de faire l’addition des contenus des
cases mémoires d’adresses 0x1Ch et 0x1Dh et mettre le résultat dans la case
mémoire d’adresse 0x1Eh

MOVF 0x1C, 0 ; recopie le contenu de l’adresse 1Ch dans le registre de travail W


ADDWF 0x1D, 0 ; faire l’addition entre W et le contenu de l’adresse ;0x1D et mettre le
résultat dans W
MOVWF 0x1E ; copier le contenu de W dans la case mémoire 0x1E

 Écrire la partie du programme qui permet de mettre à zéro le port A et le port B

CLRF 0x5 ; l’écriture CLRF PORTA est aussi valable


CLRF 0x6 ; l’écriture CLRF PORTB est aussi valable

 Écrire la partie du programme qui permet de complémenter le contenu du port


B
COMF PORTB ; Inverser les bits du port B

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 10

5
11/04/2020

Instructions opérant sur un bit

 Ce sont des instructions destinées à manipuler directement un bit d’un registre


que se soit un registre de configuration SFR ou une case mémoire quelconque
(registre GPR). Tous les bits de la RAM peuvent être manipulé individuellement

 b : numéro du bit dans un registre de 8 bits, qui peut être remplacé le nom du
bit si le fichier p16F84A.inc est inclus dans le programme

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 11

Instructions opérant sur un bit

• Exemples
 Écrire la partie du programme qui permettra de mettre 1 le bit RB5 du PORTB
BSF 0x06, 5 ; on peut aussi faire BSF PORTB,RB5
 Écrire la partie du programme qui permet de mettre à zéro le bit 3 du port A et
le bit 5 du port B
BCF PORTA,3 ; mettre à 0 le bit 3 du port A
BCF PORTB,5 ; mettre à 0 le bit 5 du port B

 Écrire la partie du programme qui permet de mettre à 1 le bit de sélection de


page, RP0, du registre STATUS

BSF STATUS, RP0 ; Mettre à 1 le bit RP0 du STATUS: se mettre sur ;BANK1

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 12

6
11/04/2020

Instructions opérant sur une constante

 Elles manipulent les données qui sont codés directement dans l’instruction. Ce
sont les instructions entre l’accumulateur W est une constante K

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 13

Instructions opérant sur une constante

• Exemples
 Écrire la partie du programme qui permettra de faire l’addition entre la valeur
0x55 et le contenu du registre W
ADDLW 0x55 ; W contiendra le résultat W+0x55

 Écrire la partie du programme qui permet d’écrire la valeur 0x12 sur le port B
MOVLW 0x12 ; mettre 0x12 dans le registre W
MOVWF PORTB ; transférer W=0x55 sur PORTB

 Écrire la partie du programme qui permet de faire un « ET » logique entre 0x55


et 0x2D et écrire le résultat dans le port B

MOVLW 0x55 ; mettre 0x55 dans W


ANDLW 0x2D ; faire un ET logique entre W=0x55 et 0x2D et mettre le ;résultat dans W
MOVWF PORTB ; transférer W dans le port B

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 14

7
11/04/2020

Instructions de saut et d’appel de procédures

 Ce sont des instructions qui provoque une rupture dans la séquence de


déroulement du programme comme CALL et GOTO

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 15

Instructions de saut et d’appel de procédures

• L’instruction GOTO

 Permet de transférer l’exécution à une autre position du programme repérée par


une étiquette (label)

Instruction 1
Instruction 2
Goto bonjour
Instruction 3
Instruction 4
Instruction 5
bonjour Instruction 6
Instruction 7

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 16

8
11/04/2020

Instructions de saut et d’appel de procédures

• L’instruction CALL
 L’instruction call permet d’appeler une fonction
 Une fonction est un sous programme écrit à la
suite du programme principal. Sa première ligne
doit comporter une étiquette et elle doit se
terminer par return

 La différence entre call et goto est que :


o quant le processeur rencontre l’instruction
call, il sauvegarde l’adresse de la ligne
suivante dans la pille avant d’aller exécuter
les instructions constituant la fonction
o Comme ça, quand il rencontre l’instruction
return, il sait où il doit retourner pour
continuer l’exécution du programme principal

RST+GMA(S6)-ENSA-KENITRA
RST(S6)-ENSA -KENITRA 17

Vous aimerez peut-être aussi