Secciones
Foros Electrónica
Boletines de correo
Boletines
Alguien dijo ...
Aunque todas las posibles preguntas de la ciencia recibiesen respuesta, ni siquiera rozarían los verdaderos problemas de la vida.

Ludwig Wittgenstein(1889-1951).
Filósofo austro-húngaro
Electrónica Fácil en Twitter
siguenos en twitter
Sitios recomendados
Contacto

Juegos instrucciones PIC

INSTRUCCIONES QUE MANEJAN REGISTROS
Nemónicos operandosDescripción 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 través del carry 1 C
RRF f,d Rota f a la dcha. a través 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
Operación: (W) + (f) --> (dest)
Flags afectados: C, DC, Z
Descripción: 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 instrucción: Después de la instrucción: 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
Operación: (W) AND (f) --> (dest)
Flags afectados: Z
Descripción: Realiza la operación lógica 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 instrucción: Después de la instrucción: W=0x17 REG= 0xC2 W=0x17 REG= 0x02
ANDLW
W AND literal
Sintaxis: [label] ANDWL k
Operandos: 0 <= k <= 255
Operación: (W) AND (k) --> (W)
Flags afectados: Z
Descripción: Realiza la operación lógica AND entre el registro W y la constante "k". El resultado se almacena en el registro W.
Ejemplo: ANDLW 0x5FAntes de la instrucción: Después de la instrucción: W= 0xA3 W= 0x03
BCF
Borra un bit
Sintaxis: [label] BCF f,b
Operandos: 0 <= f <= 31; 0 <= b <= 7;
Operación: 0 --> (f < b >)
Flags afectados: Ninguno
Descripción: Borra el bit "b" del registro "f".
Ejemplo: BCF REG,7Antes de la instrucción: Después de la instrucción: REG = 0x0A REG = 0x47
BSF
Activa un bit
Sintaxis: [label] BSF f,b
Operandos: 0 <= f <= 31; 0 <= b <= 7;
Operación: 1 --> (f < b >)
Flags afectados: Ninguno
Descripción: Activa el bit "b" del registro "f".
Ejemplo: BSF REG,0x0AAntes de la instrucción: Después de la instrucción: REG = 0x0A REG = 0x8A
BTFSC
Test de bit y salto
Sintaxis: [label] BTFSC f,b
Operandos: 0 <= f <= 31; 0 <= b <= 7;
Operación: Salto si (f < b >) = 0
Flags afectados: Ninguno
Descripción: Si el bit "b" del registro "f" es 0, se salta una instrucción y se continúa con la ejecución.
Ejemplo: COM BTFSC REG,1FALSE GOTO PROCESA_X TRUE ºAntes de la instrucción: Después de la instrucción: PC= Dirección (COM_) SI REG <1> = 0 PC= Dirección (TRUE)SI REG <1> = 1 PC= Dirección (FALSE)
BTFSS
Test de bit y salto
Sintaxis: [label] BTFSS f,b
Operandos: 0 <= f <= 31; 0 <= b <= 7;
Operación: Salto si (f < b >) = 1
Flags afectados: Ninguno
Descripción: Si el bit "b" del registro "f" es 1, se salta una instrucción y se continúa con la ejecución.
Ejemplo: COM BTFSS REG,6FALSE GOTO PROCESA_X TRUE ºAntes de la instrucción: Después de la instrucción: PC= Dirección (COM_) SI REG <6> = 0 PC= Dirección (FALSE)SI REG <6> = 1 PC= Dirección (TRUE)
CALL
Salto a subrutina
Sintaxis: [label] CALL k
Operandos: 0 <= k <= 255
Operación: (PC) + 1 --> stack; k --> PC
Flags afectados: Ninguno
Descripción: Salto a subrutina. La dirección de retorno se guarda en el stack. La constante "k" de 8 bits forma la dirección 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 instrucción: Después de la instrucción: PC = ORG PC = DESTINO
CLRF
Borra un registro
Sintaxis: [label] CLRF f
Operandos: 0 <= f <= 32
Operación: 00f --> (f); 1 --> Z
Flags afectados: Z
Descripción: Se borra el contenido del registro "f" y el flag Z de estado se activa.
Ejemplo: CLRF REGAntes de la instrucción: Después de la instrucción: REG = 0x5A REG = 0x00 Z = 1
CLRW
Borra el registro W
Sintaxis: [label] CLRW
Operandos: Ninguno
Operación: 00h --> W; 1 --> Z
Flags afectados: Z
Descripción: El registro de trabajo "W" se carga con 00h. El flag de Z se activa.
Ejemplo: CLRWAntes de la instrucción: Después de la instrucción: W = 0x5A W = 0x00 Z = 1
CLRWDT
Borra el "watchdog"
Sintaxis: [label] CLRWDT
Operandos: Ninguno
Operación: 00h --> WDT; 1 --> TO; 1 --> PD;
Flags afectados: TO, PD
Descripción: Esta instrucción borra tanto el "watchdog" como el prescaler. Los bits TO y PD del registro de estado se ponen a "1".
Ejemplo: CLRWDT Después de la instrucción: 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
Operación: (f) --> (dest)
Flags afectados: Z
Descripción: 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
Operación: (f) - 1 --> (dest)
Flags afectados: Z
Descripción: 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 instrucción: Después de la instrucción: 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
Operación: (f) - 1 --> d; Salto si R = 0
Flags afectados: Ninguno
Descripción: 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 instrucción y se continúa con la ejecución.
Ejemplo: COM_ DECFSZ REG,O GOTO_NO_ES_0Antes de la instrucción: Después de la instrucción: PC = Dirección (COM_) REG = REG - 1SI REG = 0 PC = Dirección CONTINUASI REG != 0 PC = Dirección (COM_ + 1)
GOTO
Salto incondicional
Sintaxis: [label] GOTO k
Operandos: 0 <= k <= 511
Operación: k --> PC --> <8:0>
Flags afectados: Ninguno
Descripción: Se trata de un salto incondicional. Los 9 bits de la constante "k" que forman la instrucción, se cargan en los bits <8:0> del PC y forman la dirección 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 instrucción: Después de la instrucción: PC = 0 PC = DESTINO
INCF
Incremento de f
Sintaxis: [label] INCF f,d
Operandos: 0 <= k <= 31; d = 0 ó d = 1
Operación: (f) + 1 --> (dest)
Flags afectados: Z
Descripción: 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 instrucción: Después de la instrucción: 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
Operación: (f) + 1 --> (dest); Salto si R = 0
Flags afectados: Ninguno
Descripción: 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 instrucción y se continúa con la ejecución.
Ejemplo: COM_ INCFSZ REG,1 GOTO_NO_ES_0 CONTINUAAntes de la instrucción: Después de la instrucción: PC = Dirección (COM_) CONT + 1SI CNT = 0 PC = Dirección CONTINUASI REG != 0 PC = Dirección (COM_ + 1)
IORLW
W OR literal
Sintaxis: [label] IORLW k
Operandos: 0 <= f <= 255
Operación: (W).OR.(k) --> (W)
Flags afectados: Z
Descripción: Se realiza la función lógica OR entre el registro W y la contante "k". El resultado se almacena en el registro W.
Ejemplo: IORLW Ox35Antes de la instrucción: Después de la instrucción: W = 0x9A W = 0xBF
IORWF
OR entre W y f
Sintaxis: [label] IORWF f,d
Operandos: 0 <= f <= 31; d = 0 ó d = 1
Operación: (W).OR.(f) --> (dest)
Flags afectados: Z
Descripción: Realiza la operación lógica 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 instrucción: Después de la instrucción: 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
Operación: (f) --> (dest)
Flags afectados: Z
Descripción: 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 Después de la instrucción: W = REG
MOVLW
Carga un literal en W
Sintaxis: label MOVLW k
Operandos: 0 <= f <= 255
Operación: (k) --> (W)
Flags afectados: Ninguno
Descripción: El registro W se carga con el valor de 8 bits expresado mediante la literal "k".
Ejemplo: MOVLW 0x5A Después de la instrucción: W = 0x5A
MOVWF
Mover W a f
Sintaxis: label MOVWF f
Operandos: 0 <= f <= 31
Operación: (W) --> (dest)
Flags afectados: Ninguno
Descripción: Mueve el contenido del registro W al registro "f".
Ejemplo: MOVWF REG Antes de la instrucción: Después de la instrucción: REG = 0xFF W = 0x4F REG = 0x4F W = 0x4F
NOP
No operar
Sintaxis: [label] NOP
Operandos: Ninguno
Operación: No operar
Flags afectados: Ninguno
Descripción: No realiza operación alguna. Consume un ciclo de instrucción.
Ejemplo: NOP
OPTION
Carga reg. OPTION
Sintaxis: [label] OPTION
Operandos: Ninguno
Operación: (W) --> OPTION
Flags afectados: Ninguno
Descripción: El contenido del registro W se carga en el registro OPTION. Este es un registro de sólo escritura donde se configura el funcionamiento del prescaler y el TMR0.
Ejemplo: OPTIONAntes de la instrucción: Después de la instrucción: W = 0x07 OPTION = 0x07
RETWL
Retorno, carga W
Sintaxis: [label] RETWL k
Operandos: 0 <= f <= 255
Operación: (k) --> (W); TOS --> PC
Flags afectados: Ninguno
Descripción: 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): dirección de retorno. Esta instrucción 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
Operación: Rotación a la izquierda de f
Flags afectados: C
Descripción: El contenido del registro "f" se rota una posición a la izquierda. El bit de más 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 instrucción: Después de la instrucción: 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
Operación: Rotación a la derecha
Flags afectados: C
Descripción: 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 más 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 instrucción: Después de la instrucción: REG1 = 11100110 C = 0 REG1 = 11100110W = 01110011 C = 0
SLEEP
Pasa a estado de reposo
Sintaxis: [label] SLEEP
Operandos: Ninguno
Operación: ooh --> WDT; 0 --> WDT prescaler; 1 --> TO; 0 --> PD
Flags afectados: TO, PD, GPWUF
Descripción: 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
Operación: (f) - (W) --> (dest)
Flags afectados: C, DC, Z
Descripción: Resta, por el método 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 instrucción: Después de la instrucción: 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
Operación: (f<3:0>) --> (dest.<7:4>) (f<7:4>) --> (dest.<3:0>)
Flags afectados: Ninguno
Descripción: Los cuatro bits de más 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 instrucción: Después de la instrucción: REG = 0x5A REG = 0x5A W = 0xA5
TRIS
Carga registro TRIS
Sintaxis: [label] TRIS f
Operandos: 5 <= f <= 7
Operación: (W) --> Registro TRIS "f"
Flags afectados: Ninguno
Descripción: El contenido del registro W se carga en uno de los tres registros TRIS (TRISA, TRISB, TRISC) según "f" valga 5, 6 ó 7 respectivamente. Los registros TRIS se emplean para configurar cada una de las puertas A, B ó C para que actúen sus líneas como entrada o salida.
Ejemplo: TRIS PORTAAntes de la instrucción: Después de la instrucción: W = 0xA5 TRISA = 0xA5
XORLW
W XOR literal
Sintaxis: [label] XORLW k
Operandos: 0 <= k <= 255
Operación: (W).XOR.K --> (W)
Flags afectados: Z
Descripción: Realiza la función lógica 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 instrucción: Después de la instrucción: W = 0xB5 W = 0x1A
XORWF
W XOR f
Sintaxis: [label] XORWF f,d
Operandos: 0 <= f <= 31; d = 0 ó d = 1
Operación: (W).XOR.(f) --> (dest.)
Flags afectados: Z
Descripción: Realiza la función lógica 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 instrucción: Después de la instrucción: REG = 0xAF W = 0xB5 REG = 0x1A W = 0xB5
powered by phppowered by MySQLPOWERED BY APACHEPOWERED BY CentOS© 2004 - 2016Información LegalPrensa