Anda di halaman 1dari 31

TABLA DE NEMNICOS DE LA FAMILIA PIC16F84 MNEMNICO DESCRIPCIN CDIGO OPERACIN FLAGS AFECTADOS NOTAS

Instrucciones Orientadas a Registros ADDWF f,d ANDWF f,d CLRF f CLRW COMF f,d DECF f,d DECFSZ f,d -------INCF f,d (f)+1 a destino (INCrementa F) INCFSZ f,d - - - -IORWF f,d MOVF f,d MOVWF f NOP RLF f,d RRF f,d SUBWF f,d SWAPF f,d XORWF f,d Rota f a la dcha a travs del cary a destino (f)(W) a (destino) Intercambia los nibbles de f a destino (W) XOR (f) a (destino) Instrucciones orientadas a Bit BCF f,b BSF f,b BTFSC f,b BTFSS f,b Coloca a 0 el bit b del registro f Coloca a 1 el bit b del registro f Salta si el bit b del reg. f es 0 Salta si el bit b del reg. f es 1 01 00bb bfff ffff 01 01bb bfff ffff 01 10bb bfff ffff 01 11bb bfff ffff Ninguno Ninguno Ninguno Ninguno 1,2 1,2 3 3 (f)+1 a destino y si resultado es 0 salta (W) OR (f) a destino 00 1000 dfff ffff MOVer f a destino 00 0000 1fff ffff (W) a (f) MOVer W a destino F No operacin Rota f a la izq a travs del carry a destino 00 0000 0xx0 0000 00 1101 dfff ffff 00 1100 dfff ffff 00 0010 dfff ffff 00 1110 dfff ffff 00 0110 dfff ffff Ninguno C C C,DC,Z Ninguno Z 1,2 1,2 1,2 1,2 Ninguno 1,2 00 1111 dfff ffff Z 00 0100 dfff ffff Z 1,2 00 1010 dfff ffff Ninguno 1,2 (W)+(f) a (destino) (W) AND (f) a (destino) 00 a (f) (borrar registro F) 00 a (W) (borrar W) Complemento de f [(#f) a(destino)] 00 1001 dfff ffff (f)-1 a destino (decrementa f) 00 0011 dfff ffff (f)-1 a destino y si resultado es 0 salta (DECrementa F,Salta si Zero) Ninguno 00 1011 dfff ffff Z 1,2,3 1,2 Z 1,2,3 00 0111 dfff ffff 00 0101 dfff ffff 00 0001 1fff ffff 00 0001 0000 0011 C, DC, Z Z Z Z Z 1,2 1,2 2 1,2 1,2

Instrucciones con literales y de control

ADDLW K ANDLW K CALL K CLRWDT GOTO K IORLW K MOVLW K RETFIE RETLW K RETURN SLEEP SUBLW K XORLW K

(W)+ K a (W) (W) AND K a (W) Llamada a subrutina Clear del temporizador del WD Go To direccin (ir a direccin)

11 111x kkkk kkkk 11 1001 kkkk kkkk 10 0kkk kkkk kkkk 00 0000 0110 0100 10 1kkk kkkk kkkk

C,DC,Z Z

Ninguno Z Ninguno

(W) OR K a (W) 11 1000 kkkk kkkk K a (W) 11 00xx kkkk kkkk Retorno de una interrupcin Retorno con un literal en W Retorno de una subrutina Modo Standby K (W) W (W) XOR K (W) 00 0000 0110 0011 11 110x kkkk kkkk 11 1010 kkkk kkkk 00 0000 0000 1001 11 01xx kkkk kkkk 00 0000 0000 1000

Ninguno Ninguno Ninguno C,DC,Z Z

Notas.1. Al modificar un registro de E/S con una operacin sobre l mismo (por ejemplo MOVF PORTB,1), el valor utilizado es el que se halle presente en los pines 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". Si se ejecuta esta instruccin sobre el TMR0 y d=1, ser borrado el divisor de frecuencia (preescaler), si est asignado al TMR0. Si se modifica el Contador de Programa (PC) o una condicin de prueba es verdadera, la instruccin requiere dos ciclos mquina. El segundo ciclo se ejecuta como un NOP

2. 3.

ADDLW ADD Literal to W Operacin Sintaxis Operadores Cod.Oper. Palabras Ciclos (W) + k ----> (W) [Etiqueta] ADDLW k 0 < k < 255 0001 11df ffff 1 1

ADDLW

Cdigo de Operacin Descripcin

11

111x

kkkk

kkkk

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" Nota.- Esta instruccin no existe en el PIC 16C5X

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC X

C 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 operacin es cero

EJEMPLO: ADDLW 0x15 Si antes de la instruccin: W = 10h = 0001 0000 b Al ejecutarse la instruccin W = 10 h + 15 h = 25 h W = 0001 0000 b + 0001 0101 b = 0010 0101 b

ADDWF ADD W to F Operacin Sintaxis Operadores (W) + (f) ----> (destino) [Etiqueta] ADDWF f,d 0 < f < 127 d [0,1] Palabras Ciclos Cdigo de 00 0111 1 1 dfff

ADDWF

ffff

Operacin Descripcin 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.Si se produce acerreo el flag C se pone a "1"

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC X

C 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 operacin es cero EJEMPLO: ADDWF FSR,0 Si antes de la instruccin. W = 17 h y FSR = C2 h como d=0 Al ejecutarse: W = 17 h+ C2 h = D9 h FSR = C2 h

ANDLW AND Literal and W Operacin Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 11 1001 (W).AND. (k) ----> (W) [Etiqueta] ANDLW k 0 < f < 255 1 1 kkkk

ANDLW

kkkk

Efecta la operacin AND lgico entre el contenido del registro W y el literal k, y almacena el resultado en W.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero EJEMPLO: ANDLW 0x5F

Si antes de la instruccin. W = A3 h Al ejecutarse: W = 0101 1111 b AND 1010 0011 b = 0000 0011 B = 03 h

ANDWF AND W wind F Operacin Sintaxis Operadores (W) AND (f) ----> (destino) [Etiqueta] ANDWF f,d 0 < f < 127 d [0,1] Palabras Ciclos Cdigo de Operacin Descripcin 00 0101 1 1 dfff

ANDWF

ffff

Efecta la operacin AND lgico 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.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero EJEMPLO: ANDWF FSR,1

Si antes de la instruccin. 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

BCF Bit Clear F Operacin Sintaxis Operadores 0 --> (f<b>) [Etiqueta] BCF f,b 0 < f < 127 0<b<7 Palabras Ciclos Cdigo de Operacin Descripcin 01 00bb 1 1 bfff

BCF

ffff

Pone a cero el bit nmero b del registro f

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z -

DC -

C -

EJEMPLO:

BCF FLAG_REG, 7

Si antes de la instruccin el registro FLAG_REG = C7 h = 1100 0111 b Al ejecutarse la instruccin, el registro queda con el valor: FLAG_REG = 47b = 0100 0111 b

BSF Bit Set F Operacin Sintaxis Operadores 1 --> (f<b>) [Etiqueta] BSF f,b 0 < f < 127 0<b<7 Palabras 1

BSF

Ciclos Cdigo de Operacin Descripcin 01 11bb

1 bfff ffff

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 instruccin el registro tiene el valor. FLAG_REG = 0A h = 0000 1010 b Al ejecutarse la instruccin, el registro queda con el valor: FLAG_REG = 8A h = 1000 1010 b

BTFSC Bit Test, Skip if Clear Operacin Sintaxis Operadores skip if (f<b>) = 0 [Etiqueta] BTFSC f,b 0 < f < 127 0 < b <7 Palabras Ciclos Cdigo de operacin Descripcin 01 10bb 1 1 (2) bfff

BTFSC

ffff

Si el bit nmero b del registro f es cero, la instruccin que sigue a sta se ignora y se trata como un NOP (skip). En este caso, y slo en este caso, la instruccin BTFSC precisa dos ciclos para ejecutarse.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z -

DC -

C -

EJEMPLO: HERE BTFSC FLAG,1 FALSE GOTO PROCESS_CODE TRUE . Si antes de la instruccin. Al ejecutarse: if FLAG<1> = 0, PC = direccin TRUE if FLAG<1> = 1, PC = direccin FALSE PC = direccin HERE

BTFSS Bit Test, Skip if Set Operacin Sintaxis Operadores skip if (f<b>) = 1 [Etiqueta] BTFSS f,b 0 < f < 127 0 < b <7 Palabras Ciclos Cdigo de Operacin Descripcin 01 11bb 1 1 (2) bfff

BTFSS

ffff

Si el bit nmero b del registro f est a 1, la instruccin que sigue a sta se ignora y se trata como un NOP (skip). En este caso, y slo en este caso, la instruccin BTFSS precisa dos ciclos para ejecutarse.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z -

DC -

C -

EJEMPLO: HERE BTFSS FLAG,1

FALSE GOTO PROCESS_CODE TRUE . Si antes de la instruccin. Al ejecutarse: if FLAG<1> = 0, PC = direccin FALSE if FLAG<1> = 1, PC = direccin TRUE PC = direccin HERE

CALL Subrutine Call Operandos Sintaxis Operacin 0 = k = 2047 [Etiqueta] CALL k (PC)+1 ---> Top of Stack k ---> PC <10:0>; PCLATCH (<4:3>) ---> PC (<12,11>) Palabras Ciclos Cdigo de Operacin Descripcin 10 0kkk 1 2 kkkk

CALL

kkkk

Salvaguarda la direccin de vuelta en la Pila y despus llama a la subrutina situada en la direccin cargada en el PC. El modo de clculo de la direccin efectiva difiere segn la familia PIC utilizada. Tambin hay que posicionar PA2, PA1 y PA0 (PIC 16C5X) o el registro PCLATCH (En los dems PIC) antes de ejecutarse la instruccin.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z -

DC -

C -

EJEMPLO:

HERE CALL THERE

Si antes de la instruccin.

PC = direccin HERE Al ejecutarse: PC = direccin (THERE) TOS = direccin (HERE +1)

CLRF Clear f Operacin 00h --> f 1 ---> Z Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 00 0001 [Etiqueta] CLRF f 0 < f < 127 1 1 1fff

CLRF

ffff

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

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z 1

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero EJEMPLO: CLRF REG

Si antes de la instruccin. REG = 5A h Al ejecutarse: REG = 00 h flag Z = 1

CLRW Clear W Operacin 00h -->(W)

CLRW

1 ---> Z Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 00 0001 [Etiqueta] CLRW No tiene 1 1 0000 0011

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 1

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero EJEMPLO: CLRW

Si antes de la instruccin. W= 5Ah Al ejecutarse: W = 00 flag Z = 1

CLRWDT Clear Watchdog Timer Operacin 00h --> WDT 1 --> T0# 1 --> PD# Sintaxis Operadores Palabras Ciclos Cdigo de Operacin 00 0000 [Etiqueta] CLRWDT No tiene 1 1 0110

CLRWDT

0100

Descripcin

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# 1

PD# 1

Z -

DC -

C -

T0# Se pone a 1 cuando se ejecuta la instruccin CLRWDT o SLEEP. Se pone a 0 si el temporizador Watchdog se desborda PD# Se pone a 1 cuando se ejecuta la instruccin CLRWDT o SLEEP EJEMPLO: CLRWDT

Si antes de ejecutarse la instruccin WDT = ? Al ejecutarse: WDT = 00 h Preescaler WDT = 0 bit de estado T0 = 1 bit de estado PD = 1

COMF Complement f Operacin Sintaxis Operadores (f#) -----> (dest) [Etiqueta] COMF f,d 0 < f < 127 d [0,1] Palabras Ciclos Cdigo de Operacin Descripcin 00 1001 1 1 dfff

COMF

ffff

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 Wsi d=0, en este caso f no vara.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero EJEMPLO: COMF REG1,0

Si antes de la instruccin. REG1 = 13 h como d= 0 Al ejecutarse: REG1 = 13 h = 0001 0011 b W = EC h = 1110 1100 b flag Z = 0

DECF Decrement f Operacin Sintaxis Operadores (f)-1 --> (dest) [Etiqueta] DECF f,d 0 < f < 127 d [0,1] Palabras Ciclos Cdigo de Operacin Descripcin 00 0011 1 1 dfff

DECF

ffff

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 fno vara.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero EJEMPLO: DECF CNT,1

Si antes de la instruccin. CNT = 01 h Z=0

Al ejecutarse: CNT = 00 h bit Z = 1

DECFSZ Decrement f , Skip if 0 Operacin Sintaxis Operadores (f) -1 --> (dest) ; skip if result =0 [Etiqueta] DECFSZ f,d 0 < f < 127 d [0.1] Palabras Ciclos Cdigo de Operacin Descripcin 00 1011 1 1 (2) dfff

DECFSZ

ffff

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 vara. Si el resultado es cero, se ignora la siguiente instruccin y, en ese caso la instruccin tiene una duracin de dos ciclos.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z -

DC -

C -

EJEMPLO: GOTO LOOP CONTINUE . . .

HERE DECFSZ CNT,1

Si antes de la instruccin. PC = direccin HERE Al ejecutarse: CNT = CNT -1 Si CNT = 0 entonces PC = direccin CONTINUE Si CNT no = 0 entonces PC = direccin HERE + 1

GOTO Unconditional Branch Operacin K --> PC <10:0> (PCLATH <4:3>) ---> (PC <12:11>) Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 10 1kkkk [Etiqueta] GOTO k 0 < k < 2047 1 2 kkkk

GOTO

kkkk

Salto incondicional, normalmente se utiliza para llamar a la subrutina situada en la direccin que se carga en PC. El modo de clculo de la instruccin caga de 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 THERE

Al ejecutarse: PC = direccin THERE

INCF Increment f Operacin Sintaxis Operadores (f) + 1 --> (dest) [Etiqueta] INCF f,d 0 < f < 127 d [0,1] (f) + 1 ---> (dest) Palabras 1

INCF

Ciclos Cdigo de Operacin Descripcin 00 1010

1 dfff ffff

Se incrementa en una unidad el contenido del registro f, si d=1el resultado se almacena en f, si d=0 el resultado se almacena enW, en este caso el resultado de f no vara.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero al haber desbordamiento EJEMPLO: INCF CNT,1

Si antes de la instruccin: CNT = FF h flag Z = 0 Al ejecutarse: CNT = 00 flag Z = 1 FF h +1 h = 00 h

INCFSZ Increment f, SKIP if 0 Operacin Sintaxis Operadores (f) +1 --> (dest) , skip if result = 0 [Etiqueta] <INCFSZ f,d 0 < f < 127 d [0,1] Palabras Ciclos Cdigo de Operacin Descripcin 00 1111 1 1 (2) dfff

INCFSZ

ffff

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 vara. Si el resultado es cero, se

ignora la siguiente instruccin y, en ese caso la instruccin tiene una duracin de dos ciclos.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z -

DC -

C -

EJEMPLO:

HERE INCFSZ CNT,1 GOTO LOP CONTINUE

Si antes de la instruccin. PC = direccin HERE Al ejecutarse: CNT = CNT+1 Si CNT = 0 Entonces PC = direccin CONTINUE Si CNT no = 0 Entonces PC = direccin HERE + 1

IORLW Inclusive OR Literal with W Operacin Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 11 1000 (W).OR.k ---> (W) [Etiqueta] IORLW k 0 < k < 255 1 1 kkkk

IORLW

kkkk

Se realiza la operacin lgica OR entre el registro W y el literal k. El resultado se almacena en el registro W.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero EJEMPLO: IORLW 0x35

Si antes de la instruccin. W = 9A h Al ejecutarse: W = 1001 1010 b + 0011 0101 b = 1011 1111 b = BF h

IORWF Inclusive OR W with f Operacin Sintaxis Operadores (W) .OR.(f)--> (dest) [Etiqueta] IORWF f,d 0 < f < 127 d [0,1] Palabras Ciclos Cdigo de Operacin Descripcin 00 0100 1 1 dfff

IORWF

ffff

Efecta la operacin lgica OR entre el contenido del registroW y el contenido del registro f, y almacena el resultado en f sid=1 y en W si d=0.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero EJEMPLO: IORWF RESUL,0

Si antes de la instruccin. 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

MOVLW Move literal to W Operacin Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 11 00xx k --> (W) [Etiqueta] MOVLW k 0 < f < 255 1 1 kkkk

MOVLW

kkkk

El registro W se carga con el valor de 8 bits del literal k

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

EJEMPLO:

MOVLW 0x5A

Al ejecutarse: W = 5A h

MOVF Move f Operacin Sintaxis Operadores (f) --> (dest) [Etiqueta] MOVF f,d 0 < f < 127 d [0,1] Palabras Ciclos Cdigo de Operacin Descripcin 00 10000 1 1 dfff

MOVF

ffff

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 instruccin permite verificar dicho registro ya que el flag Z queda afectado.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

Z Se pone a 1 si el resultado de la operacin es cero EJEMPLO: MOVF FSR,0

Al ejecutarse: W = al valor del FSR

MOVWF Move W to f Operacin Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 00 0000 (W)--> (f) [Etiqueta] MOVWF f 0 < f < 127 1 1 1fff

MOVWF

ffff

Mueve el contenido del registro W al registro f

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z -

DC -

C -

EJEMPLO:

MOVWF OPTION

Si antes de la instruccin. OPTION = FF h W = 4F h Al ejecutarse: OPTION = 4F h W = 4F h

NOP No operation

NOP

Operacin Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 00 0000

no operacin [Etiqueta] NOP No tiene 1 1 0xx0 0000

No realiza operacin alguna. En realidad, se consume un ciclo de instruccin sin hacer nada. (empleada principalmente en retardos de tiempo)

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z -

DC -

C -

EJEMPLO:

NOP

RETFIE Return from Interrupt Operacin TOS --> PC 1 --> GIE Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 00 0000 [Etiqueta] RETFIE No tiene 1 2 0000

RETFIE

1001

Carga el PC con el valor que se encuentra en la parte alta de la Pila, asegurando as la vuelta de la interrupcin. Pone a 1 el bitGIE, 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

RETLW Retur with Literal in W Operacin k --> (W); TOS ---> PC Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 11 01xx [Etiqueta] RETLW k 0 < K < 255 1 2 kkkk

RETLW

kkkk

Carga el registro W con el literal k, y despus 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:

CALL TABLA . .

;W contiene tabla ; el valor offset ;W nuevo valor de tabla ;W = offset ; Nueva Tabla

TABLA: ADDWF PC RETLW k1 RETLW k2

. . . RETLW kn ;Fin de tabla

Antes de ejecutarse la instruccin W = 07 h Al ejecutarse la instruccin W = Toma el valor de k7

RETURN Return from Subroutine Operacin Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 00 0000 TOS ---> PC [Etiqueta] RETURN No tiene 1 2 0000

RETURN

1000

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 -

RLF Rotate Left f through Carry Operacin

RLF

Sintaxis Operadores

[Etiqueta] RLF f,d 0 < f < 127 d [0,1]

Palabras Ciclos Cdigo de Operacin Descripcin 00 1101

1 1 dfff ffff

Rotacin de un bit a la izquierda del contenido del registro f, pasando por el bit de acarreo C. 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

EJEMPLO:

RLF REG1,0

Si antes de la instruccin. REG1 = 1110 0110 b flag C = 0 Como d= 0 el resultado queda en W Al ejecutarse: REG1 = 1110 0110 b W = 1100 1100 b flag C = 1

RRF Rotate Right f through Carry Operacin

RRF

Sintaxis Operadores

[Etiqueta] RRF f,d 0 < f < 127 d [0,1]

Palabras Ciclos Cdigo de Operacin 00 1100

1 1 dfff ffff

Descripcin

Rotacin de un bit a la derecha del contenido del registro f, pasando por el bit de acarreo C. 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

EJEMPLO:

RRF REG1,0

Si antes de la instruccin. REG1 = 1110 0110 b flag C = 1 Como d= 0 el resultado queda en W Al ejecutarse: REG1 = 1110 0110 b W = 0111 0011 b flag C = 0

SLEEP Sleep Operacin 00h ---> WDT 0 ---> WDT prescaler 1 ---> TO# 0 --> PD# Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 00 0000 [Etiqueta] SLEEP No tiene 1 1 0110

SLEEP

0011

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. Activacin de MCLR para provocar un Reset

2. 3.

Desbordamiento del Watchdog si qued operativo en el modo reposo Generacin de una interrupcin que no sea TMR0 ya que sta se desactiva con la instruccin SLEEP.

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# 1

PD# 0

Z# -

DC -

C -

TO Se pone a 1 al ejecutar la instruccin SLEEP o CLRWDT PD Se pone a 0 al ejecutar la instruccin SLEEP EJEMPLO: SLEEP

SUBLW Subtract W from Literal Operacin Sintaxis Operadores Palabras Ciclos Cdigo de Operacin Descripcin 11 110x k - (W) ---> (W) [Etiqueta] SUBLW k 0 < k < 255 1 1 Kkkk

SUBLW

kkkk

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 X

DC X

C X

Z Se pone a 1 si el resultado de la operacin 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 0x 02

Si antes de la instruccin. W = 01 h flag C = ? Al ejecutarse: W = 01 flag C = 1 ; el resultado es positivo Si antes de la instruccin. W = 02 h flag C = ? flag Z = ? Al ejecutarse: W = 00 h flag C = 1 ; el resultado es cero flag Z = 1 Si antes de la instruccin. W = 03 h flag C = ? Al ejecutarse: W = FF h flag C = 0 ; el resultado es negativo

SUBWF Subtract W from f Operacin Sintaxis Operadores (f) - (W) ---> (dest) [Etiqueta] SUBW f,d 0 < f < 127 d [0,1] Palabras Ciclos Cdigo de Operacin Descripcin 00 0010 1 1 dfff

SUBWF

ffff

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#

DC

Z Se pone a 1 si el resultado de la operacin 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

a) Si antes de la instruccin. REG1 = 03 h W = 02 h flag C = ? Al ejecutarse REG1 = 01h W = 02 h flag C = 1 ; el resultado es positivo b) Si antes de la instruccin. REG1 = 02 h W = 02 h flag C = ? Al ejecutarse REG1 = 00h W = 02 h flag C = 1 ; el resultado es cero falz Z = 1 ; el resultado es cero c) Si antes de la instruccin. REG1 = 01 h W = 02 h bit C = ? Al ejecutarse REG1 = 00h W = FF h flag C = 0 ; el resultado es negativo falz Z = 1 ; el resultado es cero

SWAPF Swap Nibbles in f Operacin (f<3:0>) ---> (dest <7:4>) (f<7:4>) ---> (dest <3:0>) Sintaxis Operadores [Etiqueta] SWAPF f,d 0 < f < 127 d [0,1] Palabras Ciclos Cdigo de Operacin Descripcin 00 1110 1 1 dfff

SWAPF

ffff

Los cuatro bits de ms 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 instruccin. REG1 = A5 h = 1010 0101 h Como d=0 el resultado se almacenar en W Al ejecutarse la instruccin: REG1 = A5 h = 1010 0101 b W = 5A h = 0101 1010 b

XORLW Exclusive OR Literal With k Operacin Sintaxis Operadores Palabras (W).XOR.k ---> (W) [Etiqueta] XORLW k 0 < f < 255 1

XORLW

Ciclos Cdigo de Operacin Descripcin 11 1010

1 kkkk kkkk

Realiza la funcin OR-Exclusiva entre el contenido del registroW y la constante k de 8 bits. El resultado se almacena en W

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

Z Se pone a 1 si el resultado de la ltima operacin es cero EJEMPLO: XORLW 0xAF

Si antes de la instruccin. W = 1011 0101 b = B5 h Al ejecutarse la instruccin: W = 1011 0101 b 1010 1111 b = 0001 1010 b = 1A h

XORWF Exclusive OR With f Operacin Sintaxis Operadores (W).XOR.(f) ---> (des) [Etiqueta] XORWF f,d 0 < f < 127 d [0,1] Palabras Ciclos Descripcin 1 1

XORWF

Realiza la funcin OR-Exclusiva entre el contenido del registroW y el contenido del registro f, y almacena el resultado en f sid=1 y en W si f=0

Registro de STATUS

PA2 -

PA1 -

PA0 -

TO# -

PD# -

Z X

DC -

C -

EJEMPLO:

XORWF REG1,1

Si antes de la instruccin. 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

Anda mungkin juga menyukai