Instrucciones del PIC16F84A
DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.1

Índice / Introducción El lenguaje ensamblador del PIC16F84A Técnicas de programación

Instrucciones del PIC16F84A

Índice de contenidos


DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.2

Introducción

    El PIC16F84A pertenece a la gama media y es de tipo RISC; esto quiere decir que tiene un juego de instrucciones reducido, en concreto de 35 instrucciones o nemónicos que son la base de funcionamiento del PIC. Al igual que los bits de los registros, sería complicado memorizarlas todas, así que utilizaremos este documento como guía de consulta.

    Las instrucciones fundamentalmente se dividen en tres tipos. Esta división viene dada por el tipo de datos con los que trabajan:


DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.3

Repertorio 35 instrucciones

    Las 35 instrucciones ó mnemónicos de la gama media de Microchip las encontraremos resumidas en la siguiente tabla. w es el acumulador, f representa un registro cualquiera y C, DC, Z los flags del registro STATUS.

Instrucciones orientadas a registros
MNEMÓNICO
OPERANDOS
DESCRIPCIÓN CÓDIGO OP BANDERAS NCIC NOTAS
ADDWF f,d w + fd 00 0111 dfff ffff C, DC, Z 1 1,2
ANDWF f,d w AND fd 00 0101 dfff ffff Z 1 1,2
CLRF f 00 h → f 00 0001 1fff ffff Z 1 2
CLRW - 00 h → w 00 0001 0xxx xxxx Z 1 -
COMF f,d Complemento de fd 00 1001 dfff ffff Z 1 1,2
DECF f,d f - 1 → d 00 0011 dfff ffff Z 1 1,2
DECFSZ f,d f - 1 → d (si es 0 salta) 00 1011 dfff ffff Ninguna 1(2) 1,2,3
INCF f,d f + 1 → d 00 1010 dfff ffff Z 1 1,2
INCFSZ f,d f + 1 → d (si es 0 salta) 00 1111 dfff ffff Ninguna 1(2) 1,2,3
IORWF f,d w OR fd 00 0100 dfff ffff Z 1 1,2
MOVF f,d fd 00 1000 dfff ffff Z 1 1,2
MOVWF f wf 00 0000 1fff ffff Ninguna 1 -
NOP - No operación 00 0000 0xx0 0000 Ninguna 1 -
RLF f,d Rota f izq por carryd 00 1101 dfff ffff C 1 1,2
RRF f,d Rota f dcha por carryd 00 1100 dfff ffff C 1 1,2
SUBWF f,d f - wd 00 0010 dfff ffff C,DC,Z 1 1,2
SWAPF f,d Intercambia nibbles de f → d 00 1110 dfff ffff Ninguna 1 1,2
XORWF f,d w XOR fd 00 0110 dfff ffff Z1 1,2

Instrucciones orientadas a bit
MNEMÓNICO
OPERANDOS
DESCRIPCIÓN CÓDIGO OP BANDERAS NCIC NOTAS
BCF f,b Pone a 0 bit b de registro f 01 00bb bfff ffff Ninguna 1 1,2
BSF f,b Pone a 1 bit b de registro f 01 01bb bfff ffff Ninguna 11,2
BTFSC f,b Salto si bit b de reg. f es 0 01 10bb bfff ffff Ninguna 1(2) 3
BTFSS f,b Salto si bit b de reg. f es 1 01 11bb bfff ffff Ninguna 1(2) 3

DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.4

Instrucciones con literales y de control
MNEMÓNICO
OPERANDOS
DESCRIPCIÓN CÓDIGO OP BANDERAS NCIC NOTAS
ADDLW k w + kw 11 111x kkkk kkkk C,DC,Z 1 -
ANDLW k w AND kw 11 1001 kkkk kkkk Z 1 -
CALL k Llamada a subrutina k 10 0kkk kkkk kkkk Ninguna 2 -
CLRWDT - Borra temporizador del WDT 00 0000 0110 0100 TO,PD 1 -
GOTO k Ir a dirección k 10 1kkk kkkk kkkk Ninguna 2 -
IORLW k w OR k → w 11 1000 kkkk kkkk Z 1 -
MOVLW k kw 11 00xx kkkk kkkkNinguna 1 -
RETFIE - Retorno de una interrupción 00 0000 0000 1001 Ninguna 2 -
RETLW k Retorno con k en w 11 01xx kkkk kkkk Ninguna 2 -
RETURN - Retorno de una subrutina 00 0000 0000 1000 Ninguna 2 -
SLEEP - Modo Standby 00 0000 0110 0011 TO, PD 1 -
SUBLW k k - ww 11 110x kkkk kkkk C,DC,Z 1 -
XORLW k w XOR kw 11 1010 kkkk kkkk Z 1 -

Notas:

  1. Al modificar un registro de E/S con una operación sobre él mismo (por ejemplo MOVF PORTB,1), el valor utilizado es el que se halle presente en las patillas del PORTB. Por ejemplo, si el biestable tiene un "1" para una patilla configurada como entrada y se pone a nivel bajo desde el exterior, el dato se volverá a escribir como "0".
  2. Si se ejecuta esta instrucción sobre el TMR0 y d=1, se borrará el conteo de la preescala asignada (preescaler), si está asignado al TMR0, pero no se borrará la preescala asignada en OPTION_REG, que controla Timer0.
  3. Si se modifica el Contador de Programa PC o una condición de prueba es verdadera, la instrucción requiere dos ciclos máquina. El segundo ciclo se ejecuta como un NOP.

    En las tablas siguientes, por orden alfabético, veremos todos los datos de interés sobre las 35 instrucciones.

    Algunos son de poca importancia. En cambio otros, como la operación, la sintaxis, el comportamiento del registro STATUS y los ejemplos, son imprescindibles para comprender su funcionamiento.

    Aparte de estas 35 instrucciones, hay otro tipo de instrucciones usadas para simplificar la tarea de programar, y que generalmente están formadas por dos instrucciones básicas. Estas no las trataremos a fondo, pero las veremos en un resumen después de comprender el funcionamiento de las 35 instrucciones básicas.



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.5

ADDLW

ADDLW

ADD Literal to w

Operación

w + kw

Sintaxis

[Etiqueta] ADDLW k

Operadores

0 < k < 255

Ciclos

1

OPCODE

11

111x

kkkk

kkkk

Descripción Suma el contenido del registro w al literal k, y almacena el resultado en w.Si se produce acerreo el flag C se pone a "1".

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

X

X

C Se pone a 1 si se produce un Acarreo desde el bit de mayor peso.

DC Se pone a 1 si se genera un Acarreo del bit 3 al bit 4.

Z Se pone a 1 si el resultado de la operación es cero.

EJEMPLO:

	ADDLW	0x15

Si antes de la instrucción:

w = 10h = 0001 0000 b

Al ejecutarse la instrucción

w = 10 h + 15 h = 25 h

w = 0001 0000 b + 0001 0101 b = 0010 0101 b

0001 0000 b
0001 0101 b
0010 0101 b



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.6

ADDWF

ADDWF

ADD w to F

Operación

w + fd

Sintaxis

[Etiqueta] ADDWF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

0111

dfff

ffff

Descripción Suma el contenido del registro w al contenido del registro f, y almacena el resultado en w si d = 0, y en el registro f si d = 1.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

X

X

C Se pone a 1 si se produce un Acarreo desde el bit de mayor peso

DC Se pone a 1 si se genera un Acarreo del bit 3 al bit 4.

Z Se pone a 1 si el resultado de la operación es cero

EJEMPLO:

	ADDWF	FSR,0

Si antes de la instrucción. w = 17 h y FSR = C2 h como d=0

Al ejecutarse:

w = 17 h + C2 h = D9 h

FSR = C2 h

0001 0111 b
1100 0010 b
1101 1001 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.7

ANDLW

ANDLW

AND Literal and w

Operación

w AND kw

Sintaxis

[Etiqueta] ANDLW k

Operadores

0 < f < 255

Ciclos

1

OPCODE

11

1001

kkkk

kkkk

Descripción

Efectúa la operación AND lógico entre el contenido del registro w y el literal k, y almacena el resultado en w.

Esta instrucción realiza la operación AND bit a bit.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

Z Se pone a 1 si el resultado de la operación es cero

EJEMPLO:

	ANDLW	0x5F 

Si antes de la instrucción. w = A3 h

Al ejecutarse:

w = 0101 1111 b AND 1010 0011 b = 0000 0011 b = 03 h

0101 1111 b
1010 0011 b
0000 0011 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.8

ANDWF

ANDWF

AND w with F

Operación

w AND fd

Sintaxis

[Etiqueta] ANDWF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

0101

dfff

ffff

Descripción

Efectúa la operación AND lógico entre el contenido del registro w y el contenido del registro f, y almacena el resultado en w si d = 0, y en f si d = 1.

Esta instrucción realiza la operación AND bit a bit.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

Z Se pone a 1 si el resultado de la operación es cero

EJEMPLO:

	ANDWF	FSR,1 

Si antes de la instrucción. w = 17 h = 0001 0111 b y FSR = C2 h = 1100 0010 h

Al ejecutarse:

w = 17 h = 0001 0111 b

FSR = 0001 0111 b AND 1100 0010 b = 0000 0010 b = 02 h

0001 0111 b
1100 0010 b
0000 0010 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.9

BCF

BCF

Bit Clear F

Operación

0 → (f<b>)

Sintaxis

[Etiqueta] BCF f,b

Operadores

0 < f < 127
0 < b < 7

Ciclos

1

OPCODE

01

00bb

bfff

ffff

Descripción Pone a cero el bit número b del registro f.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	BCF	FLAG_REG, 7 

Si antes de la instrucción el registro:

FLAG_REG = C7 h = 1100 0111 b

Al ejecutarse la instrucción, el registro queda con el valor:

FLAG_REG = 47b = 0100 0111 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.10

BSF

BSF

Bit Set F

Operación

1 → (f<b>)

Sintaxis

[Etiqueta] BSF f,b

Operadores

0 < f < 127
0 < b < 7

Ciclos

1

OPCODE

01

11bb

bfff

ffff

Descripción Pone a 1 el bit b del registro f

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	BSF	FLAG_REG, 7 

Si antes de la instrucción el registro tiene el valor:

FLAG_REG = 0A h = 0000 1010 b

Al ejecutarse la instrucción, el registro queda con el valor:

FLAG_REG = 8A h = 1000 1010 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.11

BTFSC

BTFSC

Bit Test, Skip if Clear

Operación

Salta si (f<b>) = 0

Sintaxis

[Etiqueta] BTFSC f,b

Operadores

0 < f < 127
0 < b <7

Ciclos

1 (2)

OPCODE

01

10bb

bfff

ffff

Descripción Si el bit número b del registro f es cero, la instrucción que sigue a ésta se ignora y se trata como un NOP (skip). En este caso, y sólo en este caso, la instrucción BTFSC precisa dos ciclos para ejecutarse.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

INICIO	BTFSC	FLAG,1
ES_1	GOTO PROCESO
ES_0 

Si antes de la instrucción. PC = dirección INICIO

Al ejecutarse:

if FLAG<1> = 0,

PC = dirección ES_0 y seguirá la ejecución del programa.

if FLAG<1> = 1,

PC = dirección ES_1 y el programa continuará en PROCESO

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.12

BTFSS

BTFSS

Bit Test, Skip if Set

Operación

Salta si (f<b>) = 1

Sintaxis

[Etiqueta] BTFSS f,b

Operadores

0 < f < 127
0 < b <7

Ciclos

1 (2)

OPCODE

01

11bb

bfff

ffff

Descripción Si el bit número b del registro f está a 1, la instrucción que sigue a ésta se ignora y se trata como un NOP (skip). En este caso, y sólo en este caso, la instrucción BTFSS precisa dos ciclos para ejecutarse.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

INICIO	BTFSS	FLAG,1
ES_0	GOTO	PROCESO
ES_1 

Si antes de la instrucción. PC = dirección INICIO

Al ejecutarse:

if FLAG<1> = 0,

PC = dirección ES_0 y el programa continuará en PROCESO.

if FLAG<1> = 1,

PC = dirección ES_1 y seguirá la ejecución del programa.

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.13

CALL

CALL

Subrutine Call

Operación

PC + 1 → TOS
kPC <10:0>
PCLATCH (<4:3>) → PC (<12,11>)

Sintaxis

[Etiqueta] CALL k

Operandos

0 = k = 2047

Ciclos

2

OPCODE

10

0kkk

kkkk

kkkk

Descripción Salvaguarda la dirección de vuelta en la Pila y después llama a la subrutina situada en la dirección cargada en el PC.

El modo de cálculo de la dirección efectiva difiere según la familia PIC utilizada. También hay que posicionar PA2, PA1 y PA0 (PIC 16C5X) o el registro PCLATCH (En los demás PIC) antes de ejecutarse la instrucción.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

INICIO	CALL	SUB_1 

Si antes de la instrucción:

PC = dirección INICIO

Al ejecutarse:

PC = dirección SUB_1

TOS = dirección INICIO +1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.14

CLRF

CLRF

Clear f

Operación

00 h → f
1 → Z

Sintaxis

[Etiqueta] CLRF f

Operadores

0 < f < 127

Ciclos

1

OPCODE

00

0001

1fff

ffff

Descripción Se borra el contenido del registro f y el flag Z se activa

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

1

-

-

Z Se pone a 1 si el resultado de la operación es cero

EJEMPLO:

	CLRF	REG 

Si antes de la instrucción:

REG = 5A h

Al ejecutarse:

REG = 00 h

flag Z = 1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.15

CLRW

CLRW

Clear w

Operación

00 h → w
1 → Z

Sintaxis

[Etiqueta] CLRW

Operadores

No tiene

Ciclos

1

OPCODE

00

0001

0000

0011

Descripción El registro de trabajo w se carga con 00h. El flag Z se pone a 1

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

1

-

-

Z Se pone a 1 si el resultado de la operación es cero

EJEMPLO

	CLRW 

Si antes de la instrucción. w= 5Ah

Al ejecutarse:

w = 00

flag Z = 1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.16

CLRWDT

CLRWDT

Clear watchdog Timer

Operación

00 h → WDT
1 → T0#
1 → PD#

Sintaxis

[Etiqueta] CLRWDT

Operadores

No tiene

Ciclos

1

OPCODE

00

0000

0110

0100

Descripción Se borra tanto el registro WDT (watchdog) como su preescaler. Los bits T0# y PD# del registro de estado se ponen a "1".

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

1

1

-

-

-

T0# Se pone a 1 cuando se ejecuta la instrucción CLRWDT o SLEEP. Se pone a 0 si el temporizador watchdog se desborda

PD# Se pone a 1 cuando se ejecuta la instrucción CLRWDT o SLEEP

EJEMPLO

	CLRWDT 

Si antes de ejecutarse la instrucción

WDT = ?

Al ejecutarse: WDT = 00 h

Preescaler WDT = 0

bit de estado T0 = 1

bit de estado PD = 1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.17

COMF

COMF

Complement f

Operación

Complemento de fd

Sintaxis

[Etiqueta] COMF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

1001

dfff

ffff

Descripción Hace el complemento del contenido del registro f bit a bit. El resultado se almacena en el registro f si d=1 y en el registro w si d=0, en este caso f no varía.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

Z Se pone a 1 si el resultado de la operación es cero

EJEMPLO:

	COMF	REG1,0 

Si antes de la instrucción:

REG1 = 13 h como d= 0

Al ejecutarse:

REG1 = 13 h = 0001 0011 b

w = EC h = 1110 1100 b

flag Z = 0

0001 0011 b
1110 1100 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.18

DECF

DECF

Decrement f

Operación

f - 1 → d

Sintaxis

[Etiqueta] DECF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

0011

dfff

ffff

Descripción Se decrementa el contenido del registro f en una unidad. El resultado se almacena en f si d=1 y en w si d=0, en este caso f no varía.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

Z Se pone a 1 si el resultado de la operación es cero

EJEMPLO:

	DECF	CNT,1 

Si antes de la instrucción:

CNT = 01 h

Z = 0

Al ejecutarse:

CNT = 00 h

bit Z = 1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.19

DECFSZ

DECFSZ

Decrement f , Skip if 0

Operación

f - 1 → d, salta si resultado = 0

Sintaxis

[Etiqueta] DECFSZ f,d

Operadores

0 < f < 127
d [0.1]

Ciclos

1 (2)

OPCODE

00

1011

dfff

ffff

Descripción Decrementa el contenido del registro f en una unidad, el resultado se almacena en f si d=1 y en w si d=0, en este caso, f no varía. Si el resultado es cero, se ignora la siguiente instrucción y, en ese caso la instrucción tiene una duración de dos ciclos.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

INICIO		DECFSZ	CNT,1
		GOTO		LOOP 
CONTINUAR 

si antes de la instrucción:

PC = dirección INICIO

Al ejecutarse: CNT = CNT -1

Si CNT = 0 entonces PC = dirección CONTINUAR

Si CNT no = 0 entonces PC = dirección INICIO + 1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.20

GOTO

GOTO

Unconditional Branch

Operación

kPC <10:0>
(PCLATH <4:3>) → (PC <12:11>)

Sintaxis

[Etiqueta] GOTO k

Operadores

0 < k < 2047

Ciclos

2

OPCODE

10

1kkkk

kkkk

kkkk

Descripción

Salto incondicional, normalmente se utiliza para llamar a la subrutina situada en la dirección que se carga en PC.

El modo de cálculo de la instrucción carga desde el bit 0 al 10 de la constante k en el PC y los bits 3 y 4 del registro PCLATH en los 11 y 12 del PC

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	GOTO	SEGUIR 

Al ejecutarse:

PC = dirección SEGUIR

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.21

INCF

INCF

Increment f

Operación

f + 1 → d

Sintaxis

[Etiqueta] INCF f,d

Operadores

0 < f < 127
d [0,1]
f + 1 → d

Ciclos

1

OPCODE

00

1010

dfff

ffff

Descripción Se incrementa en una unidad el contenido del registro f, si d=1 el resultado se almacena en f, si d=0 el resultado se almacena en w, en este caso el resultado de f no varía.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

Z Se pone a 1 si el resultado de la operación es cero al haber desbordamiento

EJEMPLO:

	INCF	CNT,1 

Si antes de la instrucción:

CNT = FF h

flag Z = 0

Al ejecutarse:

FF h + 1 h = 00 h

CNT = 00

flag Z = 1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.22

INCFSZ

INCFSZ

Increment f, SkIP if 0

Operación

f +1 → d, salta si resultado = 0

Sintaxis

[Etiqueta] INCFSZ f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1 (2)

OPCODE

00

1111

dfff

ffff

Descripción Incrementa el contenido del registro f en una unidad, el resultado se almacena de nuevo en f si d=1, y en w si d=0, en este caso, f no varía. Si el resultado es cero, se ignora la siguiente instrucción y, en ese caso la instrucción tiene una duración de dos ciclos.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

INICIO		INCFSZ	CNT,1
		GOTO	SALTO 
CONTINUAR 

Si antes de la instrucción:

PC = dirección INICIO

Al ejecutarse: CNT = CNT+1

Si CNT = 0

Entonces PC = dirección CONTINUAR

Si CNT no = 0

Entonces PC = dirección INICIO + 1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.23

IORLW

IORLW

Inclusive OR Literal with w

Operación

w OR kw

Sintaxis

[Etiqueta] IORLW k

Operadores

0 < k < 255

Ciclos

1

OPCODE

11

1000

kkkk

kkkk

Descripción

Se realiza la operación lógica OR entre el registro w y el literal k. El resultado se almacena en el registro w.

Esta instrucción realiza la operación OR bit a bit.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

Z Se pone a 1 si el resultado de la operación es cero.

EJEMPLO:

	IORLW	0x35 

Si antes de la instrucción:

w = 9A h

Al ejecutarse:

w = 1001 1010 b + 0011 0101 b = 1011 1111 b = BF h

1001 1010 b
0011 0101 b
1011 1111 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.24

IORWF

IORWF

Inclusive OR w with f

Operación

w OR fd

Sintaxis

[Etiqueta] IORWF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

0100

dfff

ffff

Descripción

Efectúa la operación lógica OR entre el contenido del registro w y el contenido del registro f, y almacena el resultado en f si d=1 y en w si d=0.

Esta instrucción realiza la operación OR bit a bit.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

Z Se pone a 1 si el resultado de la operación es cero.

EJEMPLO:

	IORWF	RESUL,0 

Si antes de la instrucción

RESUL = 13 h = 0001 0011 b

w = 91 h = 1001 0001 b

Al ejecutarse:

RESUL= 0001 0011 b OR 1001 0001 b = 1001 0011 b = 93 h

0001 0011 b
1001 0001 b
1001 0011 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.25

MOVLW

MOVLW

Move literal to w

Operación

kw

Sintaxis

[Etiqueta] MOVLW k

Operadores

0 < f < 255

Ciclos

1

OPCODE

11

00xx

kkkk

kkkk

Descripción El registro w se carga con el valor de 8 bits del literal k

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

EJEMPLO:

	MOVLW	0x5A 

Al ejecutarse:

w = 5A h

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.26

MOVF

MOVF

Move f

Operación

fd

Sintaxis

[Etiqueta] MOVF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

10000

dfff

ffff

Descripción El contenido del registro f se carga en el registro destino dependiendo del valor de d. Si d=0 el destino es el registro w, si d=1 el destino es el propio registro f. Esta instrucción permite verificar dicho registro ya que el flag Z queda afectado.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

Z Se pone a 1 si el resultado de la operación es cero.

EJEMPLO:

	MOVF	FSR,0 

Al ejecutarse:

w = al valor del FSR

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.27

MOVWF

MOVWF

Move w to f

Operación

wf

Sintaxis

[Etiqueta] MOVWF f

Operadores

0 < f < 127

Ciclos

1

OPCODE

00

0000

1fff

ffff

Descripción Mueve el contenido del registro w al registro f

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	MOVWF	OPCION 

Si antes de la instrucción:

OPCION = FF h

w = 4F h

Al ejecutarse:

OPCION = 4F h

w = 4F h

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.28

NOP

NOP

No operation

Operación

no operación

Sintaxis

[Etiqueta] NOP

Operadores

No tiene

Ciclos

1

OPCODE

00

0000

0xx0

0000

Descripción No realiza operación alguna, pero sirve para consumir un ciclo de instrucción, equivalente a 4 de reloj.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

    Si usamos un cristal de cuarzo de 4 Mhz en el oscilador, podremos obtener un retardo igual a un microsegundo por cada instrucción NOP que insertemos en el código del programa:

RETARDO NOP

    NOP

    NOP

    RETURN

    Cada vez que llamemos a la subrutina RETARDO, obtendremos 3 microsegundos de demora.

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.29

RETFIE

RETFIE

Return from Interrupt

Operación

TOSPC
1 → GIE

Sintaxis

[Etiqueta] RETFIE

Operadores

No tiene

Ciclos

2

OPCODE

00

0000

0000

1001

Descripción Carga el PC con el valor que se encuentra en la parte alta de la Pila, asegurando así la vuelta de la interrupción. Pone a 1 el bit GIE, con el fin de autorizar de nuevo que se tengan en cuenta las interrupciones.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	RETFIE 

Al ejecutarse:

PC = TOS

GIE = 1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.30

RETLW

RETLW

Retur with Literal in w

Operación

kw;
TOSPC

Sintaxis

[Etiqueta] RETLW k

Operadores

0 < k < 255

Ciclos

2

OPCODE

11

01xx

kkkk

kkkk

Descripción Carga el registro w con el literal k, y después carga el PC con el valor que se encuentra en la parte superior de la PILA, efectuando así un retorno de subrutina.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	MOVLW	0x07	;Se carga 07 h en w
	CALL		TABLA	;Tabla de valores
	...	;w contiene en valor recogido
	...
TABLA  ADDWF	PC	;Se añade a PC el desplazamiento (offset) de w
	RETLW	k1	;Nueva Tabla
	RETLW	k2
	...
	...
	...
	RETLW	kn	;Fin de tabla

Al ejecutarse la instrucción w = toma el valor de k7

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.31

RETURN

RETURN

Return from Subroutine

Operación

TOSPC

Sintaxis

[Etiqueta] RETURN

Operadores

No tiene

Ciclos

2

OPCODE

00

0000

0000

1000

Descripción Carga el PC con el valor que se encuentra en la parte superior de la PILA, efectuando así un retorno de subrutina

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	RETURN 

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.32

RLF

RLF

Rotate Left f through Carry

Operación

Sintaxis

[Etiqueta] RLF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

1101

dfff

ffff

Descripción

Rotación de un bit a la izquierda del contenido del registro f, pasando por el bit de acarreo C, desde los bits menos significativos a los más significativos. El bit D7 pasa al CARRY del registro STATUS, el contenido del CARRY pasa al D0, el D0 al D1, etc. Es como si multiplicáramos por dos el contenido del registro.

Si d=1 el resultado se almacena en f, si d=0 el resultado se almacena en w.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

X

EJEMPLOS:

Si tenemos el registro VALOR = 0000 0001 b y aplicamos la instrucción RLF VALOR,1
Entonces el resultado será VALOR = 0000 0010 b y el bit C = 0.

Si tenemos el registro VALOR = 1110 0110 b y aplicamos la instrucción RLF VALOR
El resultado será VALOR = 1100 1100 b y el bit C = 1.

Si antes de la instrucción REG1 = 1110 0110 b y flag C = 0 y aplicamos la instrucción RLF REG1,0, como d = 0 el resultado queda en w, al ejecutarse:

REG1 = 1110 0110 b

w = 1100 1100 b

flag C = 1

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.33

RRF

RRF

Rotate Right f through Carry

Operación

Sintaxis

[Etiqueta] RRF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

1100

dfff

ffff

Descripción

Rotación de un bit a la derecha del contenido del registro f, pasando por el bit de acarreo C, desde los bits más significativos a los menos significativos. El bit C del registro STATUS pasa al D7, el D0 pasa al bit C, el D1 al D0, etc. Es como si dividiéramos por dos el contenido del registro.

Si d=1 el resultado se almacena en f, si d=0 el resultado se almacena en w

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

X

EJEMPLOS:

Si tenemos el registro VALOR = 0000 0001 b y aplicamos la instrucción RRF VALOR,1
Entonces el resultado será VALOR = 0000 0000 b y el bit C = 1.

Si tenemos el registro VALOR = 1000 0000 b y aplicamos la instrucción RRF VALOR,1
El resultado será VALOR = 0100 0000 b y el bit C = 0.

Si antes de la instrucción, REG1 = 1110 0110 b y flag C = 1 y aplicamos la instrucción RRF REG1,0, como d = 0 el resultado queda en w, al ejecutarse:

REG1 = 1110 0110 b

w = 0111 0011 b

flag C = 0

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.34

SLEEP

SLEEP

Sleep

Operación

00 h → WDT
0 → WDT prescaler
1 → TO#
0 → PD#

Sintaxis

[Etiqueta] SLEEP

Operadores

No tiene

Ciclos

1

OPCODE

00

0000

0110

0011

Descripción Pone al circuito en modo Sleep (bajo consumo) con parada del oscilador. Pone a 0 el flag PD# (Power Down) y el flag TO# (Timer Out) se pone a 1. Se puede salir de este estado por:
  1. Activación de MCLR para provocar un Reset.
  2. Desbordamiento del watchdog si quedó operativo en el modo reposo.
  3. Generación de una interrupción que no sea TMR0 ya que ésta se desactiva con la instrucción SLEEP.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z#

DC

C

-

-

-

1

0

-

-

-

TO Se pone a 1 al ejecutar la instrucción SLEEP o CLRWDT

PD Se pone a 0 al ejecutar la instrucción SLEEP.

EJEMPLO:

	SLEEP 

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.35

SUBLW

SUBLW

Subtract w from Literal

Operación

k - ww

Sintaxis

[Etiqueta] SUBLW k

Operadores

0 < k < 255

Ciclos

1

OPCODE

11

110x

kkkk

kkkk

Descripción Resta en complemento a dos del contenido del literal k el contenido del registro w, y almacena el resultado en w.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

X

X

Z Se pone a 1 si el resultado de la operación es cero

DC Se pone a 1 si se genera un acarreo del bit 3 al grupo de 4 bits superior

C Se pone a 1 si se genera un acarreo del bit de mayor peso.

EJEMPLO:

	SUBLW	0x02	;k - w → w, 02 h - w → w 

a) Si antes de la instrucción w = 01 h y flag C = ? al ejecutarse:
02 h - 01 h = 01 h
w = 01 h
flag C = 1 ; el resultado es positivo

b) Si antes de la instrucción w = 02 h, flag C = ? y flag Z = ? al ejecutarse:
02 h - 02 h = 00 h
w = 00 h
flag C = 1
flag Z = 1 ;el resultado es cero

c) Si antes de la instrucción w = 03 h y flag C = ? al ejecutarse:
02 h - 03 h = -01 h = - 0000 0001 b
C1(0000 0001 b)=1111 1110 b; 1111 1110 b + 1 b = 1111 1111 b = FF h
w = FF h
flag C = 0 ; el resultado es negativo

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.36

SUBWF

SUBWF

Subtract w from f

Operación

f - wd

Sintaxis

[Etiqueta] SUBWF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

0010

dfff

ffff

Descripción Resta en complemento a dos el contenido del registro f menos el contenido del registro w almacena el resultado en w si d=0 y en f si d=1.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

X

X

Z Se pone a 1 si el resultado de la operación es cero
DC Se pone a 1 si se genera un acarreo del bit 3 al grupo de 4 bits superior
C Se pone a 1 si se genera un acarreo del bit de mayor peso.

EJEMPLO:

	SUBWF	REG1,1	;f - w → f, REG1 - w → REG1 

a) Si antes de la instrucción, REG1 = 03 h, w = 02 h y flag C = ?, al ejecutarse:
03 h - 02h = 01 h
REG1 = 01h
w = 02 h
flag C = 1 ; el resultado es positivo

b) Si antes de la instrucción, REG1 = 02 h, w = 02 h y flag C = ?, al ejecutarse:
02 h - 02h = 00 h
REG1 = 00h
w = 02 h
flag C = 1
fal0 Z = 1 ; el resultado es cero

c) Si antes de la instrucción, REG1 = 01 h, w = 02 h y flag C = ?, al ejecutarse:
01 h - 02 h = -01 h = - 0000 0001 b
C1(0000 0001 b)=1111 1110 b; 1111 1110 b + 1 b = 1111 1111 b = FF h
REG1 = FF h
w = 02 h
flag C = 0 ; el resultado es negativo

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.37

SWAPF

SWAPF

Swap Nibbles in f

Operación

(f<3:0>) → (d <7:4>)
(f<7:4>) → (d <3:0>)

Sintaxis

[Etiqueta] SWAPF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

OPCODE

00

1110

dfff

ffff

Descripción Los cuatro bits de más peso del registro f se intercambian con los 4 bits de menos peso del mismo registro. Si d=0 el resultado se almacena en w, si d=1 el resultado se almacena en f.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	SWAPF	REG1,0 

Si antes de la instrucción:

REG1 = A5 h = 1010 0101 h

Como d=0 el resultado se almacenará en w

Al ejecutarse la instrucción:

REG1 = A5 h = 1010 0101 b

w = 5A h = 0101 1010 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.38

XORLW

XORLW

Exclusive OR Literal with k

Operación

w XOR kw

Sintaxis

[Etiqueta] XORLW k

Operadores

0 < f < 255

Ciclos

1

OPCODE

11

1010

kkkk

kkkk

Descripción

Realiza la función OR-Exclusiva entre el contenido del registro w y la constante k de 8 bits. El resultado se almacena en w.

Esta instrucción realiza la operación EXOR bit a bit.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

Z Se pone a 1 si el resultado de la última operación es cero.

EJEMPLO:

	XORLW	0xAF 

Si antes de la instrucción:

w = 1011 0101 b = B5 h

Al ejecutarse la instrucción:

w = 1011 0101 b → 1010 1111 b = 0001 1010 b = 1A h

1011 0101 b
1010 1111 b
0001 1010 b

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.39

XORWF

XORWF

Exclusive OR w with f

Operación

w XOR fd

Sintaxis

[Etiqueta] XORWF f,d

Operadores

0 < f < 127
d [0,1]

Ciclos

1

Descripción

Realiza la función OR-Exclusiva entre el contenido del registro w y el contenido del registro f, y almacena el resultado en f si d=1 y en w si d=0.

Esta instrucción realiza la operación EXOR bit a bit.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

X

-

-

EJEMPLO:

	XORWF	REG1,1 

Si antes de la instrucción:

REG1 = AF h = 1010 1111 b

w = B5 h = 1011 0101 b

Como d=1, el resultado se almacena en REG1

Al ejecutarse:

REG1 = 1010 1111 → 1011 0101 =0001 1010 = 1A h

w = B5 h

1010 1111
1011 0101
0001 1010

Volver a tabla



DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.40

Instrucciones OPTION y TRIS

    Entre las instrucciones anteriores no se han incluido dos que no pertenecen estrictamente hablando al repertorio de 35 instrucciones de la gama media. Estas instrucciones son OPTION y TRIS . La razón por la cual no pertenecen a estas 35 instrucciones es por que fueron creadas pensando en la gama baja, que carece de 4 de las instrucciones de la gama media: ADDLW, RETFIE, RETURN y SUBLW.

    A pesar de todo las instrucciones TRIS y OPTION existen, en principio, en la gama media, pero Microchip recomienda no utilizarlas, para mantener la compatibilidad con todos los PIC de la gama media y los que puedan aparecer.

OPTION

OPTION

Guarda el valor del acumulador en el registro OPTION

Operación

wOPTION

Sintaxis

[Etiqueta] OPTION

Operadores

No tiene

Ciclos

1

OPCODE 00 0000 0110 0010
Descripción

Esta instrucción guarda en el registro especial OPTION el valor contenido en el acumulador w. No modifica ningún bit de estado.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	MOVLW	10H 	; carga el acumulador con el valor 10h.
	OPTION		; carga el registro OPTION con el acumulador.

    Esta instrucción existe para mantener la compatibilidad con los PIC producidos con anterioridad, y como en el futuro podría dejar de implementarse, Microchip aconseja realizar el ejemplo anterior de esta otra forma:

	BSF	STATUS,RP0	; activa el banco 1.
	MOVLW	10H		; carga el acumulador con 10h
	MOVWF	OPTION_REG	; carga OPTION con el acumulador.


DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.41

TRIS

TRIS

Guarda el acumulador en uno de los registros de TRIS.

Operación

wf(TRISA ó TRISB)

Sintaxis

[Etiqueta] TRIS f

Operadores

No tiene

Ciclos

1

OPCODE 00 0000 0110 1111
Descripción

Esta instrucción guarda el valor del acumulador w en uno de los registros especiales TRIS (TRISA o TRISB) que indicamos en el parámetro f. No modifica ningún bit de estado.

Los registros TRIS determinan el funcionamiento como entrada y salida de las líneas I/O del PIC.

Registro de STATUS

PA2

PA1

PA0

TO#

PD#

Z

DC

C

-

-

-

-

-

-

-

-

EJEMPLO:

	MOVLW	16h	; carga el acumulador W con el valor 16h
	TRIS	PORTA	; carga el registro PORTA con el acumulador.

    Esta instrucción existe para mantener la compatibilidad con los PIC producidos anteriormente, y como en el futuro podría dejar de implementarse, Microchip aconseja realizar el ejemplo anterior de esta otra forma (aunque ocupa más memoria...):

	BSF	STATUS,RP0	; activa el banco 1.
	MOVLW	16h		; carga el acumulador con el valor 16h
	MOVWF	TRISA		; carga el registro PORTA con W.

DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Instrucciones del PIC16F84A 9.42

Instrucciones especiales

    Existe un conjunto de instrucciones especiales diseñadas para facilitar las operaciones a la hora de diseñar nuestros algoritmos. Estas instrucciones pueden ser implementadas con una, dos o tres de las instrucciones de la gama media. La mayoría de ellas se basa en las operaciones con los acarreos y con los bits del registro status en general. Este cuadro sólo debe servir de referencia y se recomienda usar la forma equivalente del repertorio de instrucciones, no obstante, pueden encontrarse programas que los utilicen. Por supuesto con estos algoritmos, aunque utilicen una sola expresión, no vamos disminuir los ciclos máquina necesarios.

Mnemónico
Parámetros

Descripción

Traducción

Operación
Equivalente

Flag

ADDCF

f, d

Add Carry to File

Sumar acarreo a f

BTFSC 3,0
INCF f,d

Z

ADDDCF

f, d

Add Digit Carry to File

Sumar acarreo de digito a f

BTFSC 3,1
INCF f,d

Z

B

K

Branch

Saltar a una etiqueta

GOTO k

-

BC

K

Branch on Carry

Saltar a una etiqueta si hay acarreo

BTFSC 3,0
GOTO k

-

BDC

K

Branch on Digit Carry

Saltar a una etiqueta si hay acarreo de digito

BTFSC 3,1
GOTO k

-

BNC

K

Branch on No Carry

Saltar a una etiqueta si no hay acarreo

BTFSS 3,0
GOTO k

-

BNDC

K

Branch on No Digit Carry

Saltar a una etiqueta si no hay acarreo de digito

BTFSS 3,1
GOTO k

-

BNZ

K

Branch on No Zero

Saltar a una etiqueta si no hay cero

BTFSS 3,2
GOTO k

-

BZ

K

Branch on Zero

Saltar a una etiqueta si hay cero

BTFSC 3,2
GOTO k

-

CLRC

 

Clear Carry

Poner a cero acarreo

BCF 3,0

-

CLRDC

 

Clear Digit Carry

Poner a cero acarreo de digito

BCF 3,1

-

CLRZ

 

Clear Zero

Poner a cero el flag Zero

BCF 3,2

-

LCALL

K

Long CALL

Llamada larga a una etiqueta

BSF/BCF 0A,3
BSF/BCF 0A,4
CALL k

-

LGOTO

K

Long GOTO

Salto largo a una etiqueta

BSF/BCF 0A,3
BSF/BCF 0A,4
GOTO k

-

MOVFW

F

Move File to W

Mover registro a W

MOVF f,0

Z

NEGF

f, d

Negate File

Negar un registro

COMF f,1
INCF f,d

Z

SETC

 

Set Carry

Poner a uno el acarreo

BSF 3,0

-

SETDC

 

Set Digit Carry

Poner a uno el acarreo de digito

BSF 3,1

-

SETZ

 

Set Zero

Poner a uno el Zero

BSF 3,2

-

SKPC

 

Skip on Carry

Saltar si hay acarreo

BTFSS 3,0

-

SKPDC

 

Skip on Digit Carry

Saltar si hay acarreo de digito

BTFSS 3,1

-

SKPNC

 

Skip on No Carry

Saltar si no hay acarreo

BTFSC 3,0

-

SKPNDC

 

Skip on No Digit Carry

Saltar si no hay acarreo de digito

BTFSC 3,1

-

SKPNZ

 

Skip on Non Zero

Saltar si no hay Zero

BTFSC 3,2

-

SKPZ

 

Skip on Zero

Saltar si hay Zero

BTFSS 3,2

-

SUBCF

f,d

Substract Carry from File

Restar acarreo del registro

BTFSC 3,0
DECF f,d

Z

SUBDCF

f,d

Substract Digit Carry from File

Restar acarreo de dígito del registro

BTFSC 3,1
DECF f,d

Z

TSTF

f

Test File

Probar registro

MOVF f,1

Z



Índice / Introducción El lenguaje ensamblador del PIC16F84A Técnicas de programación