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

Les opérandes peuvent être de plusieurs types:
* f : adresse mémoire de registres (register file address) de 00 à 7F
* W : registre de travail
* d : sélection de destination : d=0 vers W, d=1 vers f
* pp : numéro de PORT entre 1 et 3 sur deux bits
* bbb : adresse de bit dans un registre 8 bits (sur 3 bits)
* k : champ littéral (8, ou 11 bits)
* PC compteur programme

## Opérations orientées octets entre registre et mémoire

Opérations orientées octets entre registre et mémoire (File en anglais) :
| Mnémonique Opérande | Description | Cycles | 14 bits Opcode | status affected | notes |
| ADDWF f,d | Additionne W et f | 1 | 00 0111 dfff ffff | C,DC,Z | 1,2 |
| ANDWF f,d | ET bit à bit W et f | 1 | 00 0101 dfff ffff | Z | 1,2 |
| CLRF f | mise à 0 de f | 1 | 00 0001 1fff ffff | Z | 2 |
| CLRW - | mise à 0 de W | 1 | 00 0001 0xxx xxxx | Z | |
| COMF f,d | Complément de f | 1 | 00 1001 dfff ffff | Z | 1,2 |
| DECF f,d | Décrémente f | 1 | 00 0011 dfff ffff | Z | 1,2 |
| DECFSZ f,d | Décrémente f (saute si 0) | 1,(2) | 00 1011 dfff ffff | Z | 1,2,3 |
| INCF f,d | Incrémente f | 1 | 00 1010 dfff ffff | Z | 1,2 |
| INCFSZ f,d | Incrémente f (saute si 0) | 1,(2) | 00 1111 dfff ffff | Z | 1,2,3 |
| IORWF f,d | Ou inclusif de f | 1 | 00 0100 dfff ffff | Z | 1,2 |
| MOVF f,d | déplacement de f (adressage direct) | 1 | 00 1000 dfff ffff | Z | 1,2 |
| MOVWF | déplacement de W vers f | 1 | 00 0000 1fff ffff | | |
| NOP - | pas d'opération | 1 | 00 0000 0xx0 0000 | | |
| RLF f,d | Rotation gauche avec la retenue | 1 | 00 1101 dfff ffff | C | 1,2 |
| RRF f,d | Rotation droite avec la retenue | 1 | 00 1100 dfff ffff | C | 1,2 |
| SUBWF f,d | soustrait W de f | 1 | 00 0010 dfff ffff | C,DC,Z | 1,2 |
| SWAPW f,d | inverser les quartets dans f | 1 | 00 1110 dfff ffff | | 1,2 |
| XORWF f,d | Ou exclusif de f | 1 | 00 0110 dfff ffff | Z | 1,2 |

## Opérations orientées bits sur les registres

Opérations orientées bits sur les registres :
| Mnémonique Opérande | Description | Cycles | 14 bits Opcode | notes |
| BCF f,b | mise à 0 du bit b dans f | 1 | 01 00bb bfff ffff | 1,2 |
| BSF f,b | mise à 1 du bit b dans f | 1 | 01 01bb bfff ffff | 1,2 |
| BTFSC f,b | test du bit b 0 de f saute si 0 | 1,(2) | 01 10bb bfff ffff | 1,2 |
| BTFSS f,b | test du bit b 0 de f saute si 1 | 1,(2) | 01 11bb bfff ffff | 1,2 |

## Opérations littérales (adressage immédiat) et de contrôles

Opérations littérales (adressage immédiat) et de contrôles :
| Mnémonique Opérande | Description | Cycles | 14 bits Opcode | status affected |
| ADDLW k | Addition de W et k | 1 | 11 111x kkkk kkkk | C,DC,Z |
| ANDLW k | Et logique de W et k | 1 | 11 1001 kkkk kkkk | Z |
| CALL k | appel du sous programme k | 2 | 10 0kkk kkkk kkkk | |
| CLRWDT - | mise à 0 du timer watchdog | 1 | 00 0000 0110 0100 | /TO,/PD |
| GOTO k | aller à l'adresse | 2 | 10 1kkk kkkk kkkk | |
| IORLW | Ou inclusif littéral | 1 | 11 1000 kkkk kkkk | Z |
| MOVLW | chargement de W en littéral | 1 | 11 00xx kkkk kkkk | |
| RETFIE | Retour d'interruption | 2 | 00 0000 0000 1001 | |
| RETLW k | retour avec le littéral dans W | 2 | 11 01xx kkkk kkkk | |
| RETURN | retour de sous-programme | 2 | 00 0000 0000 1000 | |
| SLEEP | aller au mode standby | 1 | 00 0000 0110 0011 | /TO,/PD |
| SUBLW k | retire W du littéral | 1 | 11 110x kkkk kkkk | C,DC,Z |
| XORLW | Ou exclusif avec littéral | 1 | 11 1010 kkkk kkkk | Z |
| Sommaire | Les instructions du 18FXXX |