http://f4hla.free.fr/
mnemonique | Instructions sur les registres ( octets ) | bits modifies |
ADDWF f,d | d:=W+f | C,DC,Z |
ANDWF f,d | d:=W AND f | Z |
CLRF f | f:=0 | Z |
CLRW | W:=0 | Z |
COMF f,d | d:=NOT(f) | Z |
DECF f,d | d:=f-1 | Z |
DECFSZ f,d | d:=f-1 ; Skip if Zero | . |
INCF f,d | d:=f+1 | Z |
INCFSZ f,d | d:=f+1 ; Skip if Zero | . |
IORWF f,d | d:=W OR f | Z |
MOVF f,d | d:=f ( permet de savoir si f=0 en faisant MOVF f,1 ) | z |
MOVWF f | f:=W | . |
NOP | n'effectue aucune opération | . |
RLF f,d | d=f SHL 1 | C |
RRF f,d | d=f SHR 1 | C |
SUBWF f,d | d:= f-W ( en complement à 2 --> d:=f + not (W) +1 ) | C,DC,Z |
SWAPF f,d | d:= f[4..7] <--> f[0..3] ( inverse les quartets ) | . |
XORWF f,d | d:= W XOR f | Z |
mnemonique | Instructions sur les registres ( bit par bit ) | bits modifies |
BCF f,b | f[b]:=0 ( mets à 0 le bit b de f ) | . |
BSF f,b | f[b]:=1 ( mets à 1 le bit b de f ) | . |
BTFSC f,b | teste le bit b de f ; Skip if Clear ( 0 ) | . |
BTFSS f,b | teste le bit b de f ; Skip if Set ( 1 ) | . |
mnemonique | Instructions de controle | bits modifies |
ADDLW k | W:=W+k | C,DC,Z |
ANDLW k | W:=W AND k | Z |
CALL k | appele un sous programme | . |
CLRWDT | remet à 0 le timer du chien de garde | TO,PD |
GOTO k | se branche à l'adresse k | . |
IORLW k | W:=W OR k | Z |
MOVLW k | W:=k | . |
RETFIE | fin d'une interruption | . |
RETLW k | w:=k , puis effectue un retour de sous programme | . |
RETURN | effectue un retour de sous programme | . |
SLEEP | place le circuit en mode sommeil et stoppe l'oscillateur | TO,PD |
SUBLW k | W:=k-W | C,DC,Z |
XORLW k | W:=W XOR k | Z |
d prend pour valeur 0 ou 1. Dans le cas ou d=0, alors d est W. Dans le cas ou d=1, d est f (c'est à dire le registre sur lequel on travail).
Je conseille de definir W EQU 0 et F EQU 1 au début du programme et d'utiliser W ou F selon la destination du resultat. Si on utilise les fichiers d'include par défaut (P16F84.inc) lors de la compilation ces valeurs sont déjà definies.
Le datasheet complet du pic16f84 est disponible [ICI].