A continuació tenim un resum breu de les instruccions i la seva finalitat. Per a informació completa, heu de consultar l'apartat 15 del document de característiques del PIC 16F690.
En les instruccions on s'indiqui VAR vol dir que cal entrar-hi una adreça de la memòria de dades (o una variable) mentre que a les que s'indiqui VAL cal entrar-hi un valor i a les que s'indiqui ADR cal posar-hi una adreça de la memòria de programa (o una etiqueta). A les instruccions sobre bits cal, a més, indicar quin és el bit afectat. Moltes de les instruccions tenen dos formats, segons si el resultat es guarda a la variable o a l'acumulador. Aquí s'ha preferit posar-les dos cops per clarificar el seu us. A cada instrucció s'indica també la seva descripció en anglès ja que ajuda a recordar-les.
En principi, després de cada instrucció que no sigui de salt es fa la instrucció següent. En aquells casos en els que s'indica salta es fa la instrucció següent (+1) si no es compleix la condició especificada i se salta la instrucció (+2) si es compleix la condició. A la columna Status s'indiquen els bits d'estat (C, Z o DC) que són modificats per la instrucció.
Les diferents tipologies d'instruccions disponibles són:
| Instrucció | Descripció | Status |
| andwf VAR,f | AND W with f Fa la funció and (i) entre la variable i l'acumulador i guarda el resultat a la variable |
Z |
| andwf VAR,w | AND W with f Fa la funció and (i) entre la variable i l'acumulador i guarda el resultat a l'acumulador |
Z |
| iorwf VAR,f | Inclusive OR W with f Fa la funció ior (o inclusiva) entre la variable i l'acumulador i guarda el resultat a la variable |
Z |
| iorwf VAR,w | Inclusive OR W with f Fa la funció ior (o inclusiva) entre la variable i l'acumulador i guarda el resultat a l'acumulador |
Z |
| xorwf VAR,f | Exclusive OR W with f Fa la funció xor (o exclusiva) entre la variable i l'acumulador i guarda el resultat a la variable |
Z |
| xorwf VAR,w | Exclusive OR W with f Fa la funció xor (o exclusiva) entre la variable i l'acumulador i guarda el resultat a l'acumulador |
Z |
| comf VAR,f | Complement f Fa el complement (intercanvia zeros i uns) de la variable i guarda el resultat a la variable |
Z |
| comf VAR,w | Complement f Fa el complement (intercanvia zeros i uns) de la variable i guarda el resultat a l'acumulador |
Z |
| Instrucció | Descripció | Status |
| clrf VAR | Clear f Esborra (posa a zero) la variable |
Z |
| clrw | Clear W Esborra (posa a zero) l'acumulador |
Z |
| decf VAR,f | Decrement f Decrementa la variable (li resta 1) i guarda el resultat a la variable |
Z |
| decf VAR,w | Decrement f Decrementa la variable (li resta 1) i guarda el resultat a l'acumulador |
Z |
| incf VAR,f | Increment f Incrementa la variable (li suma 1) i guarda el resultat a la variable |
Z |
| incf VAR,w | Increment f Incrementa la variable (li suma 1) i guarda el resultat a l'acumulador |
Z |
| decfsz VAR,f | Decrement f, Skip if 0 Decrementa la variable (li resta 1) i guarda el resultat a la variable; si el resultat és zero salta |
|
| decfsz VAR,w | Decrement f, Skip if 0 Decrementa la variable (li resta 1) i guarda el resultat a l'acumulador; si el resultat és zero salta |
|
| incfsz VAR,f | Increment f, Skip if 0 Incrementa la variable (li suma 1) i guarda el resultat a la variable; si el resultat és zero salta (si s'ha incrementat un FFh) |
|
| incfsz VAR,w | Increment f, Skip if 0 Incrementa la variable (li suma 1) i guarda el resultat a l'acumulador; si el resultat és zero salta (si s'ha incrementat un FFh) |
|
| addwf VAR,f | Add W and f Suma la variable amb l'acumulador i guarda el resultat a la variable |
C DC Z |
| addwf VAR,w | Add W and f Suma la variable amb l'acumulador i guarda el resultat a l'acumulador |
C DC Z |
| subwf VAR,f | Subtract W from f VAR = VAR - W Resta l'acumulador de la variable i guarda el resultat a la variable |
C DC Z |
| subwf VAR,w | Subtract W from f W = VAR - W Resta l'acumulador de la variable i guarda el resultat a l'acumulador |
C DC Z |
| Instrucció | Descripció | Status |
| movf VAR,f | Move f Copia el valor de la variable a la variable (serveix per veure si és zero) |
Z |
| movf VAR,w | Move f Copia el valor de la variable a l'acumulador |
Z |
| movwf VAR | Move W to f Copia el valor de l'acumulador a la variable |
|
| rlf VAR,f | Rotate Left f through Carry Desplaça un lloc cap a l'esquerra els bits de la variable i guarda el resultat a la variable (equival a multiplicar per 2). Vegeu l'Exemple RL. El valor que hi ha prèviament a C entra per la dreta i el bit de l'esquerra va a parar a C. |
C |
| rlf VAR,w | Rotate Left f through Carry Desplaça un lloc cap a l'esquerra els bits de la variable i guarda el resultat a l'acumulador (equival a multiplicar per 2). Vegeu l'Exemple RL. El valor que hi ha prèviament a C entra per la dreta i el bit de l'esquerra va a parar a C. |
C |
| rrf VAR,f | Rotate Right f through Carry Desplaça un lloc cap a la dreta els bits de la variable i guarda el resultat a la variable (equival a dividir per 2). Vegeu l'Exemple RL. El valor que hi ha prèviament a C entra per l'esquerra i el bit de la dreta va a parar a C. |
C |
| rrf VAR,w | Rotate Right f through Carry Desplaça un lloc cap a la dreta els bits de la variable i guarda el resultat a l'acumulador (equival a dividir per 2). Vegeu l'Exemple RL. El valor que hi ha prèviament a C entra per l'esquerra i el bit de la dreta va a parar a C. |
C |
| swapf VAR,f | Swap nibbles in f Permuta els nibbles de la variable i guarda el resultat a la variable |
|
| swapf VAR,w | Swap nibbles in f Permuta els nibbles de la variable i guarda el resultat a l'acumulador |
| Instrucció | Descripció | Status |
| bcf VAR,bit | Bit Clear f Posa a 0 el bit indicat de la variable |
|
| bsf VAR,bit | Bit Set f Posa a 1 el bit indicat de la variable |
|
| btfsc VAR,bit | Bit Test f, Skip if Clear Mira si està activat el bit indicat de la variable; si està desactivat salta |
|
| btfss VAR,bit | Bit Test f, Skip if Set Mira si està activat el bit indicat de la variable; si està activat salta |
| Instrucció | Descripció | Status |
| andlw VAL | AND literal with W Fa la funció and (i) entre l'acumulador i el valor indicat i guarda el resultat a l'acumulador |
Z |
| iorlw VAL | Inclusive OR literal with W Fa la funció ior (o inclusiva) entre l'acumulador i el valor indicat i guarda el resultat a l'acumulador |
Z |
| xorlw VAL | Exclusive OR literal with W Fa la funció xor (o exclusiva) entre l'acumulador i el valor indicat i guarda el resultat a l'acumulador |
Z |
| Instrucció | Descripció | Status |
| addlw VAL | Add literal and W Suma l'acumulador amb el valor indicat i guarda el resultat a l'acumulador |
C DC Z |
| sublw VAR,w | Subtract W from literal L = L - W Resta l'acumulador del valor indicat i guarda el resultat a l'acumulador |
C DC Z |
| Instrucció | Descripció | Status |
| movlw VAL | Move literal to W Guarda a l'acumulador el valor indicat |
Z |
Important: La instrucció movlw posa a l'acumulador el valor que hi posem al costat; no el valor d'una variable; si li posem una etiqueta o una variable ens agafarà l'adreça que correspon a l'etiqueta o l'adreça de la posició de memòria on es guarda la variable. En les tres línies de l'exemple següent tenim tres casos diferents. En el primer posem a l'acumulador el valor 47 (decimal), en el segon hi copiem els vuit bits de menys pes de l'adreça (no el valor) de la variable Comptador i en el tercer hi posem els vuit bits de menys pes de l'adreça de la memòria de programa que correspon a l'etiqueta Bucle.
movlw .47 ; W valdrà 47 (decimal) movlw Comptador ; Posem l'adreça de la variable Comptador a W movlw Bucle ; Posem l'adreça de Bucle (memòria de programa) a W
Si volem posar a l'acumulador el valor de la variable Comptador ho hem de fer així:
movf Comptador,w ; Posem el valor de la variable Comptador a W
| Instrucció | Descripció | Status |
| goto ADR | Go to address Salta a l'adreça de la memòria de programque s'indica |
|
| call ADR | Call Subroutine Crida a una funció que comença a l'adreça de la memòria de programque s'indica (l'adreça de la instrucció següent a l'actual es guarda a la pila) |
|
| return | Return from Subroutine Retorna des d'una funció (va a l'adreça de la memòria de programa indicada a la pila) |
|
| retlw VAL | Return with literal in W Guarda a l'acumulador el valor indicat i retorna des d'una funció (va a l'adreça de la memòria de programa indicada a la pila) |
|
| retfie | Return from interrupt Retorna des d'una interrupció (va a l'adreça de la memòria de programa indicada a la pila) |
Important: No es poden emprar indistintament les instruccions goto i call. La instrucció call és només per a saltar a una funció, de la qual sempre s'ha de retornar amb un return. En canvi, la instrucció goto és per a salts interns a la mateixa part del programa (ja sigui el programa principal, una funció o una funció d'interrupció).
| Instrucció | Descripció | Status |
| nop | No Operation No fa res i perd un cicle de programa (1 μs en la configuració bàsica) |
|
| clrwdt | Clear Watchdog Timer Posa a zero el temporitzador del Watchdog |
|
| sleep | Go into Standby mode Posa el processador en mode d'espera |

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.