You are on page 1of 9

Juegos instrucciones PIC INSTRUCCIONES QUE MANEJAN REGISTROS Nemnicos operandos Descripcin Ciclos Flags ADDWF f,d Suma

W y f 1 C, DC, Z ANDWF f,d AND W con f 1 Z CLRF f Borra f 1 Z CLRW --- Borra W 1 Z COMF f,d Complementa f 1 Z DECF f,d Decrementa f 1 Z DECFSZ f,d Decrementa f, si es 0 salta 1 (2) Ninguno INCF f,d Incrementa f 1 Z INCFSZ f,d Incrementa f, si es 0 salta 1 Ninguno IORWF f,d OR entre W y f 1 Z MOVF f,d Mueve f 1 Z MOVWF f Mueve W a f 1 Ninguno NOP --- No opera 1 Ninguno RLF f,d Rota f a la izqda. a travs del carry 1 C RRF f,d Rota f a la dcha. a travs del carry 1 C SUBWF f,d Resta a f el reg. W 1 C, DC, Z SWAPF f,d Intercambia f 1 Ninguno XORWF f,d XOR de W con f 1 Z INSTRUCCIONES QUE MANIPULAN BITS BCF f,b Borra bit de f 1 Ninguno BSF f,b Pone a 1 el bit de f 1 Ninguno BTFSC f,b Comprueba un bit de f y salta si es 0 1 (2) Ninguno BTFSS f,b Comprueba un bit de f y salta si es 1 1 (2) Ninguno INSTRUCCIONES DE CONTROL Y DE OPERANDOS INMEDIATOS ANDLW k AND inmediato con W 1 Z CALL k Llamada a subrutina 2 Ninguno CLRWDT k Borra Watchdog 1 TO, PD GOTO k Salto incondicional 2 Ninguno IORLW k OR inmediato con W 1 Z MOVLW k Mueve a W un valor inmediato 1 Ninguno OPTION k Carga el registro OPTION 1 Ninguno RETLW k Retorno y carga de W 2 Ninguno SLEEP --- Pasa a estado de reposo 1 TO, PD TRIS f Carga el registro 1 Ninguno XORLW k OR exclusiva a W 1 Z ADDWF Suma W y f Sintaxis: [label] ADDWF f,d Operandos: d=0 d=1; 0 <= f <= 31 Operacin: (W) + (f) --> (dest) Flags afectados: C, DC, Z Descripcin: 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: Despus de la instruccin: W= 0x17 REF= 0xC2 W= 0xD9 REG= 0xC2 ANDWF

W AND f Sintaxis: [label] ANDWF f,d Operandos: d=0 d=1; 0 <= f <= 31 Operacin: (W) AND (f) --> (dest) Flags afectados: Z Descripcin: 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: Despus de la instruccin: W=0x17 REG= 0xC2 W=0x17 REG= 0x02 ANDLW W AND literal Sintaxis: [label] ANDWL k Operandos: 0 <= k <= 255 Operacin: (W) AND (k) --> (W) Flags afectados: Z Descripcin: Realiza la operacin lgica AND entre el registro W y la constante "k". El resultado se almacena en el registro W. Ejemplo: ANDLW 0x5FAntes de la instruccin: Despus de la instruccin: W= 0xA3 W= 0x03 BCF Borra un bit Sintaxis: [label] BCF f,b Operandos: 0 <= f <= 31; 0 <= b <= 7; Operacin: 0 --> (f < b >) Flags afectados: Ninguno Descripcin: Borra el bit "b" del registro "f". Ejemplo: BCF REG,7Antes de la instruccin: Despus de la instruccin: REG = 0x0A REG = 0x47 BSF Activa un bit Sintaxis: [label] BSF f,b Operandos: 0 <= f <= 31; 0 <= b <= 7; Operacin: 1 --> (f < b >) Flags afectados: Ninguno Descripcin: Activa el bit "b" del registro "f". Ejemplo: BSF REG,0x0AAntes de la instruccin: Despus de la instruccin: REG = 0x0A REG = 0x8A BTFSC Test de bit y salto Sintaxis: [label] BTFSC f,b Operandos: 0 <= f <= 31; 0 <= b <= 7; Operacin: Salto si (f < b >) = 0 Flags afectados: Ninguno Descripcin: Si el bit "b" del registro "f" es 0, se salta una instruccin y se contina con la ejecucin.

Ejemplo: COM BTFSC REG,1FALSE GOTO PROCESA_X TRUE Antes de la instruccin: Despus de la instruccin: PC= Direccin (COM_) SI REG <1> = 0 PC= Direccin (TRUE)SI REG <1> = 1 PC= Direccin (FALSE) BTFSS Test de bit y salto Sintaxis: [label] BTFSS f,b Operandos: 0 <= f <= 31; 0 <= b <= 7; Operacin: Salto si (f < b >) = 1 Flags afectados: Ninguno Descripcin: Si el bit "b" del registro "f" es 1, se salta una instruccin y se contina con la ejecucin. Ejemplo: COM BTFSS REG,6FALSE GOTO PROCESA_X TRUE Antes de la instruccin: Despus de la instruccin: PC= Direccin (COM_) SI REG <6> = 0 PC= Direccin (FALSE)SI REG <6> = 1 PC= Direccin (TRUE) CALL Salto a subrutina Sintaxis: [label] CALL k Operandos: 0 <= k <= 255 Operacin: (PC) + 1 --> stack; k --> PC Flags afectados: Ninguno Descripcin: 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 DESTINOAntes de la instruccin: Despus de la instruccin: PC = ORG PC = DESTINO CLRF Borra un registro Sintaxis: [label] CLRF f Operandos: 0 <= f <= 32 Operacin: 00f --> (f); 1 --> Z Flags afectados: Z Descripcin: Se borra el contenido del registro "f" y el flag Z de estado se activa. Ejemplo: CLRF REGAntes de la instruccin: Despus de la instruccin: REG = 0x5A REG = 0x00 Z = 1 CLRW Borra el registro W Sintaxis: [label] CLRW Operandos: Ninguno Operacin: 00h --> W; 1 --> Z Flags afectados: Z Descripcin: El registro de trabajo "W" se carga con 00h. El flag de Z se activa. Ejemplo: CLRWAntes de la instruccin: Despus de la instruccin: W = 0x5A W = 0x00 Z = 1 CLRWDT

Borra el "watchdog" Sintaxis: [label] CLRWDT Operandos: Ninguno Operacin: 00h --> WDT; 1 --> TO; 1 --> PD; Flags afectados: TO, PD Descripcin: 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 = 0Prescaler WDT = 0 Bit de estado TO = 1 Bit de estado PD = 1 COMF Complementa f Sintaxis: label COMF f,d Operandos: 0 <= f <= 31; d = 0 d = 1 Operacin: (f) --> (dest) Flags afectados: Z Descripcin: 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 Decremento de f Sintaxis: [label] DECF f,d Operandos: 0 <= f <= 31; d = 0 d = 1 Operacin: (f) - 1 --> (dest) Flags afectados: Z Descripcin: 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: Despus de la instruccin: CONT = 0x01 Z = 0 CONT = 0x00 Z = 1 DECFSZ Decremento y salto Sintaxis: [label] DECFSZ f,d Operandos: 0 <= f <= 32; d = 0 d = 1 Operacin: (f) - 1 --> d; Salto si R = 0 Flags afectados: Ninguno Descripcin: 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_0Antes de la instruccin: Despus de la instruccin: PC = Direccin (COM_) REG = REG - 1SI REG = 0 PC = Direccin CONTINUASI REG != 0 PC = Direccin (COM_ + 1) GOTO Salto incondicional Sintaxis: [label] GOTO k Operandos: 0 <= k <= 511 Operacin: k --> PC --> <8:0> Flags afectados: Ninguno

Descripcin: 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 DESTINOAntes de la instruccin: Despus de la instruccin: PC = 0 PC = DESTINO INCF Incremento de f Sintaxis: [label] INCF f,d Operandos: 0 <= k <= 31; d = 0 d = 1 Operacin: (f) + 1 --> (dest) Flags afectados: Z Descripcin: 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: Despus de la instruccin: CONT = 0xFF Z = 0 CONT = 0x00 Z = 1 INCFSZ Incremento de f, si es 0 salta Sintaxis: [label] INCFSZ f,d Operandos: 0 <= f <= 31; d = 0 d = 1 Operacin: (f) + 1 --> (dest); Salto si R = 0 Flags afectados: Ninguno Descripcin: 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 CONTINUAAntes de la instruccin: Despus de la instruccin: PC = Direccin (COM_) CONT + 1SI CNT = 0 PC = Direccin CONTINUASI REG != 0 PC = Direccin (COM_ + 1) IORLW W OR literal Sintaxis: [label] IORLW k Operandos: 0 <= f <= 255 Operacin: (W).OR.(k) --> (W) Flags afectados: Z Descripcin: Se realiza la funcin lgica OR entre el registro W y la contante "k". El resultado se almacena en el registro W. Ejemplo: IORLW Ox35Antes de la instruccin: Despus de la instruccin: W = 0x9A W = 0xBF IORWF OR entre W y f Sintaxis: [label] IORWF f,d Operandos: 0 <= f <= 31; d = 0 d = 1 Operacin: (W).OR.(f) --> (dest) Flags afectados: Z Descripcin: 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: Despus de la instruccin: RESULTADO = 0x13 W = 0x91 RESULTADO = 0x13W = 0x93 Z = 0 MOVF Mover a f Sintaxis: [label] MOVF f,d Operandos: 0 <= f <= 31; d = 0 d = 1 Operacin: (f) --> (dest) Flags afectados: Z Descripcin: 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 Carga un literal en W Sintaxis: label MOVLW k Operandos: 0 <= f <= 255 Operacin: (k) --> (W) Flags afectados: Ninguno Descripcin: 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 Mover W a f Sintaxis: label MOVWF f Operandos: 0 <= f <= 31 Operacin: (W) --> (dest) Flags afectados: Ninguno Descripcin: Mueve el contenido del registro W al registro "f". Ejemplo: MOVWF REG Antes de la instruccin: Despus de la instruccin: REG = 0xFF W = 0x4F REG = 0x4F W = 0x4F NOP No operar Sintaxis: [label] NOP Operandos: Ninguno Operacin: No operar Flags afectados: Ninguno Descripcin: No realiza operacin alguna. Consume un ciclo de instruccin. Ejemplo: NOP OPTION Carga reg. OPTION Sintaxis: [label] OPTION Operandos: Ninguno Operacin: (W) --> OPTION Flags afectados: Ninguno

Descripcin: El contenido del registro W se carga en el registro OPTION. Este es un registro de slo escritura donde se configura el funcionamiento del prescaler y el TMR0. Ejemplo: OPTIONAntes de la instruccin: Despus de la instruccin: W = 0x07 OPTION = 0x07 RETWL Retorno, carga W Sintaxis: [label] RETWL k Operandos: 0 <= f <= 255 Operacin: (k) --> (W); TOS --> PC Flags afectados: Ninguno Descripcin: 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: TABLA W = 07 W = Valor de K8 RLF Rota f a la izquierda Sintaxis: [label] RLF f,d Operandos: 0 <= f <= 31; d = 0 d = 1 Operacin: Rotacin a la izquierda de f Flags afectados: C Descripcin: 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: Despus de la instruccin: REG1 = 11100110 C = 0 REG1 = 11100110W = 11001100 C = 1 RRF Rota f a la derecha Sintaxis: [label] RRF f,d Operandos: 0 <= f <= 31; d = 0 d = 1 Operacin: Rotacin a la derecha Flags afectados: C Descripcin: 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". Ejemplo: RRF REG1 Antes de la instruccin: Despus de la instruccin: REG1 = 11100110 C = 0 REG1 = 11100110W = 01110011 C = 0 SLEEP Pasa a estado de reposo Sintaxis: [label] SLEEP Operandos: Ninguno Operacin: ooh --> WDT; 0 --> WDT prescaler; 1 --> TO; 0 --> PD Flags afectados: TO, PD, GPWUF Descripcin: 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: SLEEP SUBWF Resta f - W Sintaxis: [label] SUBWF f,d Operandos: 0 <= f <= 32; d = 0 d = 1 Operacin: (f) - (W) --> (dest) Flags afectados: C, DC, Z Descripcin: 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: Despus de la instruccin: REG = 1 W = 2 REG = 0xFF W = 0xFF SWAPF Intercambio de f Sintaxis: [label] SWAPF f,d Operandos: 0 <= f <= 31; d = 0 d = 1 Operacin: (f<3:0>) --> (dest.<7:4>) (f<7:4>) --> (dest.<3:0>) Flags afectados: Ninguno 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,0Antes de la instruccin: Despus de la instruccin: REG = 0x5A REG = 0x5A W = 0xA5 TRIS Carga registro TRIS Sintaxis: [label] TRIS f Operandos: 5 <= f <= 7 Operacin: (W) --> Registro TRIS "f" Flags afectados: Ninguno Descripcin: El contenido del registro W se carga en uno de los tres registros TRIS (TRISA, TRISB, TRISC) segn "f" valga 5, 6 7 respectivamente. Los registros TRIS se emplean para configurar cada una de las puertas A, B C para que acten sus lneas como entrada o salida. Ejemplo: TRIS PORTAAntes de la instruccin: Despus de la instruccin: W = 0xA5 TRISA = 0xA5 XORLW W XOR literal Sintaxis: [label] XORLW k Operandos: 0 <= k <= 255 Operacin: (W).XOR.K --> (W) Flags afectados: Z Descripcin: 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 0xAFAntes de la instruccin: Despus de la instruccin: W = 0xB5 W = 0x1A

XORWF W XOR f Sintaxis: [label] XORWF f,d Operandos: 0 <= f <= 31; d = 0 d = 1 Operacin: (W).XOR.(f) --> (dest.) Flags afectados: Z Descripcin: 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: Despus de la instruccin: REG = 0xAF W = 0xB5 REG = 0x1A W = 0xB5

You might also like