Utiliser les PIC 16F et 18F/Annexe/Les instructions du 18FXXX

Les instructions du 18FXXX
Image logo représentative de la faculté
Annexe 2
Leçon : Utiliser les PIC 16F et 18F

Annexe de niveau 15.

Précédent :Les instructions du 16FXXX
Suivant :Sommaire
Icon falscher Titel.svg
En raison de limitations techniques, la typographie souhaitable du titre, « Annexe : Les instructions du 18FXXX
Utiliser les PIC 16F et 18F/Annexe/Les instructions du 18FXXX
 », n'a pu être restituée correctement ci-dessus.




Opérandes :

  • f : register file address (adresse mémoire + registres) de 00 à 7F
  • W : registre de travail
  • d : sélection de destination : d=0 vers W, d=1 vers f
  • a : a=0 Access RAM sélectionnée sans tenir compte de BSR, a=1 BSR est utilisé (banked)
  • bbb : adresse de bit dans un registre 8 bits (sur 3 bits)
  • k : champ littéral (8, 12 ou 20 bits)
  • s : sélection du mode rapide : s=0 pas de restauration des registres W, STATUS et BSR
  • PC compteur programme
  • TO Time Out bit
  • PD Power Down bit

Opérations orientées octets entre registre et mémoireModifier

Opérations orientées octets entre registre et mémoire (File en anglais)
Mnémonique

Opérande

Description Cycles 16 bits Opcode status affected notes
ADDWF f[,d[,a]] Additionne W et f 1 0010 01da ffff ffff N,OV,C,DC,Z 1,2
ADDWFC f[,d[,a]] Additionne W et f et retenue 0010 00da ffff ffff N,OV,C,DC,Z 1,2
ANDWF f[,d[,a]] ET bit à bit W et f 1 0001 01da ffff ffff N,Z 1,2
CLRF f[,a] mise à 0 de f 1 0110 101a ffff ffff Z 2
COMF f,[d[,a]] Complément de f 1 0001 11da ffff ffff N,Z 1,2
CPFSEQ f[,a] compare f avec W, saute si = 1,(2 ou3) 0110 001a ffff ffff 4
CPFSGT f[,a] compare f avec W, saute si > 1, (2 ou3) 0110 010a ffff ffff 4
CPFSLT f[,a] compare f avec W, saute si < 1, (2 ou3) 0110 000a ffff ffff 1,2
DECF f[,d[,a]] Décrémente f 1 0000 01da ffff ffff C,DC,N,OV,Z 1,2,3,4
DECFSZ f[,d[,a]] Décrémente f (saute si 0) 1,(2) 0010 11da ffff ffff 1,2,3,4
DECFSNZ f[,d[,a]] Décrémente f (saute si non 0) 1,(2) 0100 11da ffff ffff 1,2,3,4
INCF f[,d[,a]] Incrémente f 1 0010 10da ffff ffff C,DC,N,OV,Z 1,2,3,4
INCFSZ f[,d[,a]] Incrémente f (saute si 0) 1,(2 ou 3) 0011 11da ffff ffff 1,2,3
INFSNZ f[,d[,a]] Incrémente f (saute si non 0) 1,(2 ou 3) 0100 10da ffff ffff 1,2,3
IORWF f[,d[,a]] Ou inclusif de f 1 0001 00da ffff ffff Z,N 1,2
MOVF f[,d[,a]] déplacement de f (adressage direct) 1 1001 00da ffff ffff Z,N 1,2
MOVFF fs,fd déplacement de fs (source) en fd (destination) 2 1100 ffff ffff ffff (s)

1111 ffff ffff ffff (d)

MOVWF f[,a] déplacement de W vers f 1 0110 111a ffff ffff
MULWF f[,a] multiplication de W par f 1 0000 001a ffff ffff
NEGF f[,a] négation de f 1 0110 110a ffff ffff C,DC,N,OV,Z 1,2
RLCF f[,d[,a]] Rotation gauche avec la retenue 1 0011 01da ffff ffff C,Z,N
RLNCF f[,d[,a]] Rotation gauche sans la retenue 1 0100 01da ffff ffff Z,N 1,2
RRCF f[,d[,a]] Rotation droite avec la retenue 1 0011 00da ffff ffff C,Z,N
RRNCF f[,d[,a]] Rotation droite avec la retenue 1 0100 00da ffff ffff Z,N 1,2
SETF f[,a] positionne f à 0xFF (tout le monde à 1) 1 0110 100a ffff ffff
SUBFWB f[,d[,a]] soustrait f de W 1 0101 01da ffff ffff C,DC,N,OV,Z 1,2
SUBWF f[,d[,a]] soustrait W de f 1 0101 11da ffff ffff C,DC,N,OV,Z 1,2
SUBWFB f[,d[,a]] soustrait W de f avec retenue 1 0101 10da ffff ffff C,DC,N,OV,Z
SWAPW f[,d[,a]] inverser les quartets dans f 1 0011 10da ffff ffff 4
TSTFSZ f[,a] teste f saute si 0 1 0110 011a ffff ffff 1,2
XORWF f[,d[,a]] Ou exclusif de f 1 0001 010da ffff ffff Z

Opérations orientées bits sur les registresModifier

Opérations orientées bits sur les registres
Mnémonique

Opérande

Description Cycles 16 bits Opcode status affected notes
BCF f,b[,a] mise à 0 du bit b dans f 1 1001 bbba ffff ffff 1,2
BSF f,b[,a] mise à 1 du bit b dans f 1 1000 bbba ffff ffff 1,2
BTFSC f,b[,a] test du bit b 0 de f saute si 0 1,(2) 1011 bbba ffff ffff 3,4
BTFSS f,b[,a] test du bit b 0 de f saute si 1 1,(2) 1010 bbba ffff ffff 3,4
BTG f,b[,a] inverser le bit du registre 1 0111 bbba ffff ffff 1,2

Opérations de contrôlesModifier

Opérations de contrôles
Mnémonique

Opérande

Description Cycles 16 bits Opcode status affected notes
BC n saut relatif court si retenue est positionnée 1,(2) 1110 0010 nnnn nnnn
BN n brancher si résultat négatif 1,(2) 1110 0110 nnnn nnnn
BNC n brancher si retenue non positionnée 1,(2) 1110 0011 nnnn nnnn
BNN n brancher si résultat non négatif 1,(2) 1110 0111 nnnn nnnn
BNOV n brancher si pas dépassement (overflow) 1,(2) 1110 0101 nnnn nnnn
BOV n brancher si dépassement (overflow) 1,(2) 1110 0100 nnnn nnnn
BNZ n brancher si résultat non nul 1,(2) 1110 0001 nnnn nnnn
BZ n brancher si résultat nul 1,(2) 1110 0000 nnnn nnnn
BRA n brancher toujours 1,(2) 1101 0nnn nnnn nnnn
CALL n [,s] appel du sous programme n (sur 20 bits) (s fast bit) 2 1110 110s kkkk kkkk

1111 kkkk kkkk kkkk

CLRWDT - mise à 0 du timer watchdog 1 0000 0000 0000 0100 /TO,/PD
DAW ajustement décimal dans W 1 0000 0000 0000 0111
GOTO n aller à l'adresse n (sur 20 bits) 2 1110 1111 kkkk kkkk

1111 kkkk kkkk kkkk

NOP - pas d'opération 1 0000 0000 0000 0000
NOP - pas d'opération 1 1111 xxxx xxxx xxxx 4
POP dépile le sommet de la pile dans PC 1 0000 0000 0000 0110
PUSH empile PC sur le sommet de la pile 1 0000 0000 0000 0101
RCALL n appel en relatif 2 1101 1nnn nnnn nnnn
RESET reset en programmation 1 0000 0000 1111 1111
RETFIE s Retour d'interruption 2 0000 0000 0001 000s
RETLW k retour avec le littéral dans W 2 000 1100 kkkk kkkk
RETURN s retour de sous-programme 2 0000 0000 0001 001s
SLEEP aller au mode standby 1 0000 0000 0000 0011 /TO,/PD

Opérations littérales (adressage immédiat)Modifier

Opérations littérales (adressage immédiat)
Mnémonique

Opérande

Description Cycles 16 bits Opcode status affected notes
ADDLW k Addition de W et k 1 0000 1111 kkkk kkkk N,OV,C,DC,Z
ANDLW k Et logique de W et k 1 0000 1011 kkkk kkkk N,Z
IORLW k OU inclusif logique de W et k 0000 1001 kkkk kkkk N,Z
LFSR f,k chargement de l'adresse 12 bits dans FSR (ff numéro de registre FSR concerné) 2 1110 1110 00ff kkkk

1111 kkkk kkkk kkkk

MOVLB k copier la valeur dans BSR 1 0000 0001 0000 kkkk
MOVLW k chargement du littéral dans W 1 0000 1110 kkkk kkkk
MULLW k multiplication du littéral par W 1 0000 1101 kkkk kkkk
RETLW k retour avec littéral dans W 2 0000 1100 kkkk kkkk
SUBLW k soustraction de W du littéral 1 0000 1000 kkkk kkkk N,OV,C,DC,Z
XORLW k ou exclusif du littéral avec W 1 0000 1010 kkkk kkkk N,Z

Opérations de programmation de la mémoireModifier

Opérations de programmation de la mémoire
Mnémonique

Opérande

Description Cycles 16 bits Opcode status affected notes
TBLRD* lecture octet Flash pointé par TBLPTR et le copie dans TABLAT 2 0000 0000 0000 1000
TBLRD*+ ... avec post increment 2 0000 0000 0000 1001
TBLRD*- ... avec post decrement 2 0000 0000 0000 1010
TBLRD+* ... avec pre increment 2 0000 0000 0000 1011
TBLWT* écriture octet Flash pointé par TBLPTR avec ce qu’il y a dans TABLAT 2 0000 0000 0000 1100
TBLWT*+ ... avec post increment 2 0000 0000 0000 1101
TBLWT*- ... avec post decrement 2 0000 0000 0000 1110
TBLWT+* ... avec pre increment 2 0000 0000 0000 1111


NotesModifier

À traduire

Note 1: When an I/O register is modified as a function of itself ( e.g., MOVF PORTB, 1), the value used will be that value present on the pins themselves. For example, if the data latch is ’1’ for a pin configured as input and is driven low by an external device, the data will be written back with a ’0’.

    2: If this instruction is executed on the TMR0 register (and, where applicable, d = 1), the prescaler will be cleared if assigned to the Timer0 Module. 
    3: If Program Counter (PC) is modified or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP.