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
[Link] 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 [Link] 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