Vous êtes sur la page 1sur 21

Les instructions du PIC16f84

1
Les instructions orientées bit
Ses instructions vont écrire ou lire des bits

2
3
Exemple
instruction Arguments de l’instructions

• BSF f,b ; Bit Set File = Mettre 1 dans le bit numéro bit b du registre f
File /registre numéro du bit

Exemple :
✓ BSF PORTA,5 ; PORTA.RA5 = 1
✓ BSF TRISA,2 ; TRISA.RA2 = 1
✓ BSF STATUS,5 ; STATUS.5 = 1

4
Exemple
instruction Arguments de l’instructions

• BCF f,b ; Bit Clear File = Mettre 0 dans le bit numéro bit b du registre f
File /registre numéro du bit

Exemple :
✓ BCF PORTA,4 ; PORTA.RA4 = 0
✓ BCF TRISA,1 ; TRISA.RA1 = 0
✓ BCF STATUS,5 ; STATUS.5 = 0

5
Exemple
instruction Arguments de l’instructions

• BTFSS f,b ; Bit Test File Skip if Set = si le bit b du registre f == 1 alors sauter une ligne
File /registre numéro du bit

Exemple :
✓ BTFSS PORTA,2 ; si (PORTA.RA2==1) Si condition est vrai : sauter une ligne
BCF PORTB,2 ; Si condition est Fausse Exécuter la ligne suivante
Exécuter PORTB.RB2=0
BSF PORTB,2 ; Exécuter PORTB.RB2=1

6
Exemple
instruction Arguments de l’instructions

• BTFSC f,b ; Bit Test File Skip if Clear = si le bit b du registre f == 0 alors sauter une ligne
File /registre numéro du bit

Exemple :
✓ BTFSC PORTA,2 ; si (PORTA.RA2==0) Si condition est vrai : sauter une ligne
BSF PORTB,2 ; Si condition est Fausse Exécuter la ligne suivante
Exécuter PORTB.RB2=1
BCF PORTB,2 ; Exécuter PORTB.RB2=0

7
Les instructions générales
Ses instructions prennent en paramètre une Constante

8
9
Exemples
instruction Constante

• MOVLW k ; Move Litteral to Work = Mettre la constante k dans le registre W


Exemple :
MOVLW 5 ;W=5

• GOTO k ; Go to adresse k
Exemple :
✓GOTO 30 ; pointer à l’adresse 30

10
Exemples
instruction Constante

• ADDLW k ; ADD Litteral and Work = ajouter la constante k au contenu du registre W


Exemple :
ADDLW 10 ; W = W+10

• ANDLW k ; AND Litteral with Work = faire le et logique entre k et le registre W


Exemple :
ADDLW 16 ; W = W && 16

11
Les instructions orientées octet
Ses instructions indiquent généralement la destination

12
13
Exemples
instruction Argument de l’instructions

d : spécifie l’emplacement
• ADDWF f,d ; ADD f and W du résultat :

File /registre destination

•Si d=0/w, le résultat est placé


Exemple : dans le registre de travail W;
✓ ADDWF PORTA,w ; W = PORTA + W
✓ ADDWF PORTA,0 ; W = PORTA + W
✓ ADDWF PORTA,f ; PORTA = PORTA + W
•Si d=1/f, le résultat est placé
dans le registre spécifié dans
✓ ADDWF PORTA,1 ; PORTA = PORTA + W
l’instruction.
✓ ADDWF C,0 ; W = C+ W

14
Exemples
instruction Argument de l’instructions

d : spécifie l’emplacement
• INCF f,d ; Incrémenter f du résultat :

File /registre destination

•Si d=0/w, le résultat est placé


Exemple : dans le registre de travail W;
✓ INCF PORTA,w ; W = PORTA + 1
✓ INCF PORTA,0 ; W= PORTA + 1
✓ INCF PORTA,f ; PORTA = PORTA + 1
•Si d=1/f, le résultat est placé
dans le registre spécifié dans
✓ INCF D,1 ; D=D+1
l’instruction.

15
Exemples
• MOVWf f ; Move Work to file = Mettre le contenu du W dans le registre f

Exemple :
✓MOVWF PORTA ; PORTA = W
✓MOVWF A ;A=W

• CLRF f ; Clear the file= Mettre 0 dans le registre f

Exemple :
✓CLRF PORTA ; PORTA = 0
✓CLRF D ;D=0

16
Les bits STATUS Affectés

17
L’indicateur d’état zéro
L’indicateur d’état Zéro (flag Z):
• Z=1 Si le résultat d’une opération qui l’affecte est NULL.
• Z=0 Si le résultat est NON NULL.

STATUS

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RP0 Z

0 : Bank0 0 : Si le résultat de la dernière opération est différent 0


1 : Bank1 1 : Si le résultat de la dernière opération est égale à 0
L’indicateur d’état zéro : Exemple

STATUS
Exemple : Bit Bit Bit Bit Bit Bit Bit Bit
7 6 5 4 3 2 1 0

✓ MOVLW 5 ; w=5 (résultat différent de 0 mais MOVLW n’affecte le bit Z)


Bit Bit Bit Bit Bit Bit Bit Bit
7 6 5 4 3 2 1 0
0
✓ ANDLW 6 ; w = 5 && 6 (résultat différent de 0 et ANDLW affecte le bit Z)
Bit Bit Bit Bit Bit Bit Bit Bit
7 6 5 4 3 2 1 0
✓ MOVLW 255 ; w=255 (résultat différent de 0 mais MOVLW n’affecte le 0
bit Z)
Bit Bit Bit Bit Bit Bit Bit Bit
7 6 5 4 3 2 1 0
✓INCF W,w ; W = W+1 = 255 +1 = 0 (résultat égale à 0 et INCF affecte le bit
1
Z) 19
Bit Bit Bit Bit Bit Bit Bit Bit
✓ MOVLW 255 ; w=255 (résultat différent de 0 mais MOVLW n’affecte le bit 7 6 5 4 3 2 1 0
1
Z)
L’indicateur d’état de débordement
L’indicateur d’état de Débordement « Carry » (flag C):
• C=1 Si le résultat d’une opération entraîne un débordement. Il s’agit en fait du 9ème bit de l’opération.
• C=0 Sinon.

STATUS

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RP0 Z C

0 : Si le résultat de la dernière opération est différent 0


1 : Si le résultat de la dernière opération est égale à 0

0 : Si le résultat de la dernière n’entraine pas un débordement


1 : Si le résultat de la dernière opération entraine un débordement
L’indicateur d’état zéro : Exemple

STATUS
Exemple :
Bit Bit Bit Bit Bit Bit Bit Bit
7 6 5 4 3 2 1 0
✓ MOVLW 5 ; w=5 (résultat différent de 0 , MOVLW n’affecte pas les bits Z
et C)
Bit Bit Bit Bit Bit Bit Bit Bit
✓ADDLW 50; w = w+50 = 55 (résultat différent de 0 et pas de débordement, 7 6 5 4 3 2 1 0
0 0
ADDLW affecte les bits Z et C)
Bit Bit Bit Bit Bit Bit Bit Bit
✓ MOVLW 250 ; w=250 (résultat différent de 0 , MOVLW n’affecte pas les 7 6 5 4 3 2 1 0
bits Z et C) 0 0

✓ADDLW 6; w = 250 +6 = 0 (résultat égale à 0 et il y’a un débordement, Bit Bit Bit Bit Bit Bit Bit Bit
7 6 5 4 3 2 1 0
ADDLW affecte les bits Z et C)
1 1
21

Vous aimerez peut-être aussi