Está en la página 1de 18

ADDWF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Suma W y f ADDWF f,d

00 0111 dfff ffff


d=0 d=1; 0 <= f <= 31 (W) + (f) --> (dest) C, DC, Z

Suma el contenido del registro W y el registro "f". Si "d" es 0, el resultado se almacena en el registro W. Si "d" es 1 el resutado se almacena en el registro "f".

Ejemplo:

ADDWF REG,0 Antes de la instruccin: W= 0x17 REF= 0xC2 Despus de la instruccin: W= 0xD9 REG= 0xC2

ANDWF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

W AND f ANDWF f,d 00 0101 dfff ffff

d=0 d=1; 0 <= f <= 31 (W) AND (f) --> (dest) Z

Realiza la operacin lgica AND entre el registro W y el registro "f". Si "d" es 0 el resultado se almacena en el registro W. Si "d" es 1, el resultado se almacena en el registro "f".

Ejemplo:

ANDWF REG,1 Antes de la instruccin: W=0x17 REG= 0xC2 Despus de la instruccin: W=0x17 REG= 0x02

ANDLW Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

W AND literal ANDWL k

11 111x kkkk kkkk


0 <= k <= 255 (W) AND (k) --> (W) Z

Realiza la operacin lgica AND entre el registro W y la constante "k". El resultado se almacena en el registro W.

Ejemplo:

ANDLW 0x5F Antes de la instruccin: Despus de la instruccin: W= 0xA3 W= 0x03

BCF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados:

Borra un bit BCF f,b 01 00bb bfff ffff

0 <= f <= 31; 0 <= b <= 7; 0 --> (f < b >) Ninguno Borra el bit "b" del registro "f". BCF REG,7 Antes de la instruccin: REG = 0x0A

Descripcin: Ejemplo:

Despus de la instruccin:

REG = 0x47

BSF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados:

Activa un bit BSF f,b

01 01bb bfff ffff


0 <= f <= 31; 0 <= b <= 7; 1 --> (f < b >) Ninguno Activa el bit "b" del registro "f". BSF REG,0x0A Antes de la instruccin: Despus de la instruccin: REG = 0x0A REG = 0x8A

Descripcin: Ejemplo:

BTFSC Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados:

Test de bit y salto BTFSC f,b

01 10bb bfff ffff


0 <= f <= 31; 0 <= b <= 7; Salto si (f < b >) = 0 Ninguno

Descripcin:

Si el bit "b" del registro "f" es 0, se salta una instruccin y se contina con la ejecucin.

Ejemplo:

COM FALSE TRUE

BTFSC REG,1 GOTO PROCESA_X PC= Direccin (COM_) SI REG <1> = 0 PC= Direccin (TRUE) SI REG <1> = 1 PC= Direccin (FALSE)

Antes de la instruccin: Despus de la instruccin:

BTFSS Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Test de bit y salto BTFSS f,b

01 11bb bfff ffff


0 <= f <= 31; 0 <= b <= 7; Salto si (f < b >) = 1 Ninguno

Si el bit "b" del registro "f" es 1, se salta una instruccin y se contina con la ejecucin.

Ejemplo:

COM FALSE TRUE

BTFSS REG,6 GOTO PROCESA_X PC= Direccin (COM_) SI REG <6> = 0 PC= Direccin (FALSE) SI REG <6> = 1 PC= Direccin (TRUE)

Antes de la instruccin: Despus de la instruccin:

CALL

Salto a subrutina

Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

CALL k

10 0kkk kkkk kkkk


0 <= k <= 255 (PC) + 1 --> stack; k --> PC Ninguno Salto a subrutina. La direccin de retorno se guarda en el stack. La constante "k" de 8 bits forma la direccin de salto y se carga en los bits <7:0> del PC. Los bits <10:9> del PC se cargan con los bits <6:5> del registro "STATUS". PC <8> se pone a 0.

Ejemplo:

ORG CALL DESTINO Antes de la instruccin: Despus de la instruccin: PC = ORG PC = DESTINO

CLRF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Borra un registro CLRF f

00 0001 1fff ffff


0 <= f <= 32 00f --> (f); 1 --> Z Z

Se borra el contenido del registro "f" y el flag Z de estado se activa.

Ejemplo:

CLRF REG Antes de la instruccin: Despus de la instruccin: REG = 0x5A REG = 0x00 Z=1

CLRW Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Borra el registro W CLRW

00 0001 0xxx xxxx


Ninguno 00h --> W; 1 --> Z Z

El registro de trabajo "W" se carga con 00h. El flag de Z se activa.

Ejemplo:

CLRW Antes de la instruccin: Despus de la instruccin: W = 0x5A W = 0x00 Z=1

CLRWDT Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Borra el "watchdog" CLRWDT

00 0000 0110 0100


Ninguno 00h --> WDT; 1 --> TO; 1 --> PD; TO, PD

Esta instruccin borra tanto el "watchdog" como el prescaler. Los bits TO y PD del registro de estado se ponen a "1".

Ejemplo:

CLRWDT Despus de la instruccin: Contador WDT = 0 Prescaler WDT = 0 Bit de estado TO = 1 Bit de estado PD = 1

COMF

Complementa f

Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

COMF f,d

00 1001 dfff ffff


0 <= f <= 31; d = 0 d = 1 (f) --> (dest) Z

El contenido del registro "f" se complementa. Si "d" es 0 el resultado "R" se almacena en el registro W. Si "d" es 1, el resultado "R" se almacena en el registro "f".

Ejemplo: DECF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin: Decremento de f DECF f,d

00 0011 dfff ffff


0 <= f <= 31; d = 0 d = 1 (f) - 1 --> (dest) Z

Se decrementa en una unidad el contenido del registro "f". Si "d" es 0, el resultado se almacena en W. Si "d" es 1, el resultado se almacena en "f".

Ejemplo:

DEC CONT, 1 Antes de la instruccin: CONT = 0x01 Z=0 Despus de la instruccin: CONT = 0x00 Z=1

DECFSZ Sintaxis:

Decremento y salto DECFSZ f,d

Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

00 1011 dfff ffff


0 <= f <= 32; d = 0 d = 1 (f) - 1 --> d; Salto si R = 0 Ninguno

El contenido del registro "f" se decrementa. Si "d" es 0, el resultado "R" se coloca en el registro W. Si "d" es 1, el resultado "R" se coloca en el registro "f". Si R = 0, se salta la siguiente instruccin y se contina con la ejecucin.

Ejemplo:

COM_

DECFSZ REG,O GOTO_NO_ES_0

Antes de la instruccin: Despus de la instruccin:

PC = Direccin (COM_) REG = REG - 1 SI REG = 0 PC = Direccin CONTINUA SI REG != 0 PC = Direccin (COM_ + 1)

GOTO Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Salto incondicional GOTO k

10 1kkk kkkk kkkk


0 <= k <= 511 k --> PC --> <8:0> Ninguno

Se trata de un salto incondicional. Los 9 bits de la constante "k" que forman la instruccin, se cargan en los bits <8:0> del PC y forman la direccin de salto. Los bits <10:9> del PC se cargan con los bits <6:5> del registro de estado.

Ejemplo:

ORG GOTO DESTINO Antes de la instruccin: Despus de la instruccin: PC = 0 PC = DESTINO

INCF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Incremento de f INCF f,d

00 1010 dfff ffff


0 <= k <= 31; d = 0 d = 1 (f) + 1 --> (dest) Z

Incrementa en una unidad el contenido del registro "f". Si "d" es 0, el resultado se almacena en W. Si "d" es 1, el resultado se almacena en "f".

Ejemplo:

INCF CONT,1 Antes de la instruccin: CONT = 0xFF Z=0 Despus de la instruccin: CONT = 0x00 Z=1

INCFSZ Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Incremento de f, si es 0 salta INCFSZ f,d

00 1111 dfff ffff


0 <= f <= 31; d = 0 d = 1 (f) + 1 --> (dest); Salto si R = 0 Ninguno

Incrementa en una unidad el contenido del registro "f". Si "d" es 0, el resultado se almacena en W. Si "d" es 1, el resultado se almacena en "f". Si R=0, se salta la siguiente instruccin y se

contina con la ejecucin.

Ejemplo:

COM_

INCFSZ REG,1 GOTO_NO_ES_0

CONTINUA Antes de la instruccin: Despus de la instruccin: PC = Direccin (COM_) CONT + 1 SI CNT = 0 PC = Direccin CONTINUA SI REG != 0 PC = Direccin (COM_ + 1) IORLW Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin: W OR literal IORLW k

11 1000 kkkk kkkk


0 <= f <= 255 (W).OR.(k) --> (W) Z

Se realiza la funcin lgica OR entre el registro W y la contante "k". El resultado se almacena en el registro W.

Ejemplo:

IORLW Ox35 Antes de la instruccin: Despus de la instruccin: W = 0x9A W = 0xBF

IORWF Sintaxis: Formato de la instruccin

OR entre W y f IORWF f,d

00 0100 dfff ffff

Operandos: Operacin: Flags afectados: Descripcin:

0 <= f <= 31; d = 0 d = 1 (W).OR.(f) --> (dest) Z

Realiza la operacin lgica OR entre el registro W y el registro "f". Si "d" es 0 el resultado se almacena en el registro W. Si "d" es 1, el resultado se almacen en el registro "f".

Ejemplo:

IORWF REG,0 Antes de la instruccin: RESULTADO = 0x13 W = 0x91 Despus de la instruccin: RESULTADO = 0x13 W = 0x93 Z=0

MOVF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Mover a f MOVF f,d

00 1000 dfff ffff


0 <= f <= 31; d = 0 d = 1 (f) --> (dest) Z

El contenido del registro "f" se mueve al destino "d". Si "d" es 0, el destino es el registro w. Si "d" es 1, el destino es el propio registro "f". Esta posibilidad permite verificar dicho registro ya que el flag Z queda afectado.

Ejemplo:

MOVF REG,0 Despus de la instruccin: W = REG

MOVLW Sintaxis: Formato de la

Carga un literal en W MOVLW k

11 00xx kkkk kkkk

instruccin Operandos: Operacin: Flags afectados: Descripcin: 0 <= f <= 255 (k) --> (W) Ninguno

El registro W se carga con el valor de 8 bits expresado mediante la literal "k".

Ejemplo:

MOVLW 0x5A Despus de la instruccin: W = 0x5A

MOVWF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin: Ejemplo:

Mover W a f MOVWF f

00 0000 1fff ffff


0 <= f <= 31 (W) --> (dest) Ninguno Mueve el contenido del registro W al registro "f". MOVWF REG Antes de la instruccin: REG = 0xFF W = 0x4F Despus de la instruccin: REG = 0x4F W = 0x4F

NOP Sintaxis: Formato de la instruccin Operandos: Operacin:

No operar NOP

00 0000 0xx0 0000


Ninguno No operar

Flags afectados: Descripcin:

Ninguno

No realiza operacin alguna. Consume un ciclo de instruccin. NOP

Ejemplo:

RETLW Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Retorno, carga W RETWL k

11 01xx kkkk kkkk


0 <= f <= 255 (k) --> (W); TOS --> PC Ninguno

El registro W se carga con los 8 bits de la constante k. El PC se carga con el contenido de la cima stack (TOS): direccin de retorno. Esta instruccin consume dos ciclos.

Ejemplo:

CALL TABLA

;contiene el offset ;de la tabla.

;Ahora W tiene el

. ADDWF PC TABLA RETLW K1 RETLW K2 . . RETLW Kn

;valor de la tabla ;W offset ;comienza tabla

;Fin de la tabla

Antes de la instruccin: Despus de la instruccin: W = 07 W = Valor de K8 RLF Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin: Rota f a la izquierda RLF f,d

00 1101 dfff ffff


0 <= f <= 31; d = 0 d = 1 Rotacin a la izquierda de f C

El contenido del registro "f" se rota una posicin a la izquierda. El bit de ms peso pasa al carry y el carry se introduce por el bit de menos peso de "f". Si "d" es 0, el resultado se coloca en el registro W. Si "d" es 1, el resultado queda en el registro "f".

Ejemplo:

RLF REG1,0 Antes de la instruccin: REG1 = 11100110 C=0 Despus de la instruccin: REG1 = 11100110 W = 11001100 C=1

RRF

Rota f a la derecha

Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

RRF f,d

00 1100 dfff ffff


0 <= f <= 31; d = 0 d = 1 Rotacin a la derecha C El contenido del registro "f" se rota a la derecha. El bit de menos peso de "f" pasa al flag carry. El carry se coloca en el bit de ms peso de "f". Si "d" es 0, el resultado se almacena en el registro W. Si "d" es 1, el resultado se almacena en "f". RRF REG1 Antes de la instruccin: REG1 = 11100110 C=0 Despus de la instruccin: REG1 = 11100110 W = 01110011 C=0

Ejemplo:

SLEEP Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

Pasa a estado de reposo SLEEP

00 0000 0110 0011


Ninguno ooh --> WDT; 0 --> WDT prescaler; 1 --> TO; 0 --> PD TO, PD, GPWUF

Al salir, activa el bit de estado TO y borra el PD. El WDT y el prescaler se borran. Al entrar en el modo SLEEP, se detiene el oscilador.

Ejemplo: SUBWF Sintaxis:

SLEEP Resta f - W SUBWF f,d

Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

00 0010 dfff ffff


0 <= f <= 32; d = 0 d = 1 (f) - (W) --> (dest) C, DC, Z

Resta, por el mtodo del complemento a 2, el contenido del registro "f" menos el contenido del registro W. Si "d" es 0, el resultado se almacena en el registro W. Si "d" es 1, el resultado se almacena en el registro "f". Si el resultado es negativo, el carry se pone a 0.

Ejemplo:

SUBWF REG,1 Antes de la instruccin: REG = 1 W=2 Despus de la instruccin: REG = 0xFF W = 0xFF

SWAPF Sintaxis: Formato de la instruccin Operandos: Operacin:

Intercambio de f SWAPF f,d

00 1110 dfff ffff


0 <= f <= 31; d = 0 d = 1 (f<3:0>) --> (dest.<7:4>) (f<7:4>) --> (dest.<3:0>) Ninguno

Flags afectados: Descripcin:

Los cuatro bits de ms peso del registro "f" se intercambian con los cuatro bits de menos peso del mismo registro. Si "d" es 0, el resultado se coloca en el registro W. Si "d" es 1, el resultado queda en el registro "f".

Ejemplo:

SWAPF REG,0 Antes de la instruccin: Despus de la instruccin:

REG = 0x5A REG = 0x5A W = 0xA5

XORLW Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

W XOR literal XORLW k

11 1010 kkkk kkkk


0 <= k <= 255 (W).XOR.K --> (W) Z Realiza la funcin lgica OR exclusiva (EOR) entre el contenido del registro W y la constante "k" de 8 bits. El resultado se almacena en el registro W.

Ejemplo:

XORLW 0xAF Antes de la instruccin: Despus de la instruccin: W = 0xB5 W = 0x1A

XORWF

W XOR f

Sintaxis: Formato de la instruccin Operandos: Operacin: Flags afectados: Descripcin:

XORWF f,d

00 0110 dfff ffff


0 <= f <= 31; d = 0 d = 1 (W).XOR.(f) --> (dest.) Z Realiza la funcin lgica OR exclusiva (EOR) entre el contenido del registro W y el registro "f". Si "d" es 0, el resultado se almacena en el registro W. Si "d" es 1 el resultado se almacena en el registro "f".

Ejemplo:

XORWF REG,1 Antes de la instruccin: REG = 0xAF W = 0xB5 Despus de la instruccin: REG = 0x1A W = 0xB5

También podría gustarte