Vous êtes sur la page 1sur 9

Set de 35 instrucciones

ENCA
INSTRUCCIONES PARA PROGRAMAR PIC 16F877A
Instrucción ADDLW: Suma el valor constante “k” al registro “w”, y el resultado lo
guarda en el registro “w”.
Sintaxis: ADDLW k
Operación : k+(w)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: C, DC, Z
Ejemplo: ADDLW 0x10
Antes de la instrucción Registro w=0x04
Después de la instrucción Registro w=0x14

Instrucción ADDWF: Suma el contenido del registro “f” con el contenido del registro
“w”, el resultado se guarda en el registro escogido por el valor
del bit “d”
Sintaxis: ADDWF f,d
Operación : (f)+(w)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: C, DC, Z
Ejemplo: ADDWF 0x20,1
Antes de la instrucción Registro w=0x04 Registro 0x20=0x10
Después de la instrucción Registro w=0x04 Registro 0x20=0x14

Instrucción ANDLW: Aplica la operación lógica AND entre la constante k y el


registro “w”, la operación AND se efectúa bit a bit y el
resultado queda guardado en el registro “w”
Sintaxis: ANDLW k
Operación : (w)and k
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: ANDLW b’11000011’
Antes de la instrucción Registro w=b’01000010’
Después de la instrucción Registro w=b’01000010

Instrucción ANDWF: Aplica la operación lógica AND entre el contenido del registro
“f” con el contenido del registro “w”, el resultado se guardará
en el registro escogido, según el bit “d”.
Sintaxis: ANDWF f,d
Operación : (f)and (w)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: ANDWF 0x20,0
Antes de la instrucción Registro w=b’11110010’ Registro 0x20=b’11001011’
Después de la instrucción Registro w=b’11000010’ Registro 0x20=b’11001011’

Instrucción BCF: Pone a cero el bit “b” del registro “f” y el resultado lo
almacena en el mismo registro.
Sintaxis: BCF f,b
Operación : 0(f<b>)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: ninguno
Ejemplo: BCF STATUS,2
Antes de la instrucción Registro STATUS=b’11110110’
Después de la instrucción Registro STATUS=b’11110010’

Instrucción BSF: Pone a uno el bit “b” del registro “f” y el resultado lo
almacena en el mismo registro.
Sintaxis: BSF f,b
Operación : 1(f<b>)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: ninguno
Ejemplo: BSF STATUS,2
Antes de la instrucción Registro STATUS=b’11110010’
Después de la instrucción Registro STATUS=b’11110110’
1
Set de 35 instrucciones
ENCA
Instrucción BTFSC: Identifica el estado del bit “b” del registro “f”, si este es
CERO, el programa salta una línea de programación y ejecuta la
siguiente que allí se encuentre, si el bit es UNO no salta y
ejecuta la instrucción que continua.
Sintaxis: BTFSC f,b
Operación : Salta si (f<b>)=0
Ciclos de instrucción: 1 ó 2 (no salta es 1 y si salta es 2)
Bits del registro de estados que se afectan: ninguno
Ejemplo: 22 BTFSC STATUS,2
23 GOTO INICIO
24 ADDLW 0x20

Antes de la instrucción El apuntador de programa apunta a la línea 22


Después de la instrucción Si el bit 2 del registro status es 0
El apuntador de programa apunta a la línea 24

Si el bit 2 del registro status es 1


El apuntador de programa apunta a la línea 23

Instrucción BTFSS: Identifica el estado del bit “b” del registro “f”, si este es
UNO, el programa salta una línea de programación y ejecuta la
siguiente que allí se encuentre, si el bit es CERO no salta y
ejecuta la instrucción que continua.
Sintaxis: BTFSS f,b
Operación : Salta si (f<b>)=1
Ciclos de instrucción: 1 ó 2 (no salta es 1 y si salta es 2)
Bits del registro de estados que se afectan: ninguno
Ejemplo: 22 BTFSS STATUS,2
23 GOTO INICIO
24 ADDLW 0x20

Antes de la instrucción El apuntador de programa apunta a la línea 22


Después de la instrucción Si el bit 2 del registro status es 1
El apuntador de programa apunta a la línea 24

Si el bit 2 del registro status es 0


El apuntador de programa apunta a la línea 23

Instrucción CALL: Llama a una subrutina que está identificada como “k” y
finalizada en RETURN
Sintaxis: CALL k
Operación : Carga al apuntador de programa con la dirección de “k”
Ciclos de instrucción: 2
Bits del registro de estados que se afectan: ninguno
Ejemplo: 22 CALL TECLADO
23 BCF STATUS,2
Antes de la instrucción El puntador de programa apunta a la línea 22
Después de la instrucción El puntador de programa apunta a la línea donde se
halle la subrutina TECLADO, en la pila se guarda la
línea 22, y que una vez ejecutado la subrutina
CONTADOR(al encontrar un RETURN o un RETLW) el
apuntador apuntara a la línea 23

Instrucción CLRF: Borra el contenido del registro “f”, lo carga con 0x00
Sintaxis: CLRF f
Operación : (f)=0x00
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: CLRF CONTADOR
Antes de la instrucción CONTADOR=0xFA
Después de la instrucción CONTADOR=0x00

2
Set de 35 instrucciones
ENCA

Instrucción CLRW: Borra el contenido del registro “w”, lo carga con 0x00
Sintaxis: CLRW
Operación : (w)=0x00
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: NINGUNO
Ejemplo: CLRW
Antes de la instrucción w=0xAF
Después de la instrucción w=0x00

Instrucción CLRWDT: Pone a cero el contador del watchdog timer, para que no sea
reseteado el micro controlador
Sintaxis: CLRWDT
Operación : Contador del watchdog timer =0x00
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: TO, PD
Ejemplo: CLRW
Antes de la instrucción CONTADOR WDT =0x1F (Supuesto para ejemplificar)
Después de la instrucción CONTADOR WDT =0x00
TO=1, PD=1

Instrucción COMF: Complementa el contenido del registro “f”(cambia los 1 por ceros
y viceversa), el resultado se guarda en el registro escogido por
el valor del bit “d”
Sintaxis: COMF f,d
Operación : Complementa el registro f
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: COMF SENSOR, 0
Antes de la instrucción Registro SENSOR = b´11000010’
Registro w=b’01010001’
Después de la instrucción Registro SENSOR = b´11000010’
Registro w=b’00111101’

Instrucción DECF: Decrementa el contenido del registro “f” en 1, el resultado de


este decremento se guarda en el registro elegido según el valor
del bit “d”
Sintaxis: DECF f,d
Operación : (f)-1
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: DECF SENSOR, 1
Antes de la instrucción Registro SENSOR = 0x10
Registro w=0x2A
Después de la instrucción Registro SENSOR = 0x0F
Registro w=0x2A

Instrucción DECFSZ: Decrementa el contenido del registro “f” en 1, si este contenido


es 0x00 el apuntador de programa salta una línea y ejecuta la
que sigue, el resultado de este decremento se guarda en el
registro elegido según el valor del bit “d”
Sintaxis: DECFSZ f,d
Operación : (f)-1, salta una línea de programa si el resultado es cero
Ciclos de instrucción: 1 ó 2
Bits del registro de estados que se afectan: NINGUNO
Ejemplo: 22 BUCLE
23 DECFSZ CONTA,1
24 GOTO BUCLE
25 GOTO INICIO
Antes de la instrucción El apuntador de programa apunta a la línea
de programa 23
Después de la instrucción El valor de CONTA se decrementa en 1 y si
este registro es CERO salta una línea de
programa y ejecuta la línea 25 caso
3
Set de 35 instrucciones
ENCA
contrario ejecutara la línea 24.

Instrucción GOTO: Una vez ejecutado permite que el apuntador de programa apunte a
la línea de programa con denominación “k”.
Sintaxis: GOTO k
Operación : Contador de programa apunta a la línea de k
Ciclos de instrucción: 2
Bits del registro de estados que se afectan: NINGUNO
Ejemplo: 23 GOTO BUCLE
Antes de la instrucción Apuntador de programa apunta a la línea 23
Después de la instrucción Apuntador de programa apunta a la línea con
denominación BUCLE.

Instrucción INCF: Incrementa el contenido del registro “f” en 1, el resultado de


este incremento se guarda en el registro elegido según el valor
del bit “d”
Sintaxis: INCF f,d
Operación : (f)+1
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: INCF EVENTO, 1
Antes de la instrucción Registro EVENTO = 0x10
Registro w=0x2A
Después de la instrucción Registro EVENTO = 0x11
Registro w=0x2A

Instrucción INCFSZ: Incrementa el contenido del registro “f” en 1, si este contenido


es 0x00 el apuntador de programa salta una línea y ejecuta la
que sigue, el resultado de este incremento se guarda en el
registro elegido según el valor del bit “d”
Sintaxis: INCFSZ f,d
Operación : (f)+1, salta una línea de programa si el resultado es cero
Ciclos de instrucción: 1 ó 2
Bits del registro de estados que se afectan: NINGUNO
Ejemplo: 22 BUCLE
23 INCFSZ CONTA,1
24 GOTO BUCLE
25 GOTO INICIO
Antes de la instrucción El apuntador de programa apunta a la línea
de programa 23
Después de la instrucción El valor de CONTA se INCREMENTA en 1 y si
este registro es CERO (DESBORDAMIENTO)
salta una línea de programa y ejecuta la
línea 25 caso contrario ejecutara la línea
24.

Instrucción IORLW: Aplica la operación lógica OR entre la constante k y el registro


“w”, la operación OR se efectúa bit a bit y el resultado queda
guardado en el registro “w”
Sintaxis: IORLW k
Operación : (w)OR k
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: IORLW b’11000111’
Antes de la instrucción Registro w=b’01001010’
Después de la instrucción Registro w=b’11001111

Instrucción IORWF: Aplica la operación lógica OR entre el contenido del registro


“f” con el contenido del registro “w”, el resultado se guardará
en el registro escogido, según el bit “d”.
Sintaxis: IORWF f,d
Operación : (w)OR (f)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: IORWF 0x20,0
4
Set de 35 instrucciones
ENCA
Antes de la instrucción Registro w=b’11110010’ Registro 0x20=b’11001011’
Después de la instrucción Registro w=b’11111011’ Registro 0x20=b’11001011’

Instrucción MOVLW: Carga el valor de la constante “k” en el registro “w”


Sintaxis: MOVLW k
Operación : k se carga en el registro “w”
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: ninguno
Ejemplo: MOVLW 0x2A
Antes de la instrucción Registro w=0x14(sólo para ejemplificar)
Después de la instrucción Registro w=0x2A

Instrucción MOVWF: Copia el valor del registro “w” en el registro “f”


Sintaxis: MOVWF f
Operación : (w) se copia en (f)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: MOVWF CONTA
Antes de la instrucción Registro w=b’11110010’ Registro CONTA=b’11001011’
Después de la Registro w=b’11110010’ Registro CONTA= b’11110010’
instrucción

Instrucción MOVF: copia el contenido del registro “f” , el resultado de esta copia
se guardara según lo indicado do por el bit “d”
Sintaxis: MOVF f,d
Operación : Si d=0 (f) se copia en (w)
Si d=1 (f) se copia en (f), se afecta el flag Z del registro
status
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: MOVF CONTA,0
Antes de la instrucción Registro w=b’11110010’ Registro CONTA=b’11001011’
Después de la Registro w= b’11001011’ Registro CONTA= b’11001011’
instrucción

Instrucción NOP: No hace nada, solo ocupa una línea en el programa a ejecutar, se
utiliza para ganar ciclos de programación.
Sintaxis: NOP
Operación : Ejecuta un ciclo de programación vacío
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: ninguno
Ejemplo: 23 MOVF CONTA,0
24 NOP
25 …
Antes de la instrucción El apuntador de programa apunta a la línea 24
Después de la El apuntador de programa apunta a la línea 25
instrucción

Instrucción RETURN: Retorna a la dirección guardad en la pila luego de la llamada a


una subrutina (CALL)
Sintaxis: RETURN
Operación : Regresa de una subrutina
Ciclos de instrucción: 2
Bits del registro de estados que se afectan: ninguno
Ejemplo: 23 MOVF CONTA,0
24 NOP
25 CALL TECLADO
26



65 TECLADO
66 …
67 …
5
Set de 35 instrucciones
ENCA
68 …
69 RETURN

Antes de la instrucción El apuntador de programa apunta a la línea 69


Después de la El apuntador de programa apunta a la línea 26
instrucción

Instrucción RETLW: Retorna a la dirección guardad en la pila luego de la llamada a


una subrutina (CALL), a diferencia del RETURN esta regresa con
una constante “k” en el registro “w”, indicada en la sintaxis.
Sintaxis: RETLW k
Operación : Regresa de una subrutina con un valor “k” en el registro “w”
Ciclos de instrucción: 2
Bits del registro de estados que se afectan: ninguno
Ejemplo: 23 MOVF CONTA,0
24 NOP
25 CALL TECLADO
26



65 TECLADO
66 …
67 …
68 …
69 RETLW 0x1A

Antes de la instrucción El apuntador de programa apunta a la línea 69


El registro w=b’0x32’(“w” puede tener cualquier
valor)
Después de la El apuntador de programa apunta a la línea 26
instrucción El registro w=b’0x1A’

Instrucción RETFIE: Retorna a la dirección guardad en la pila luego de la llamada a


una interrupción.
Sintaxis: RETFIE
Operación : Retorna de una interrupción
Ciclos de instrucción: 2
Bits del registro de estados que se afectan: ninguno

Ejemplo: 4 GOTO ISR


5 …
6 …
7 …


16 BUCLE Bucle infinito
17 GOTO BUCLE

26 ISR
27 …
28 …
Rutina de interrupción
29 …
30 RETFIE

Antes de la instrucción El apuntador de programa apunta a la línea 30

Después de la El apuntador de programa apunta al bucle infinito


instrucción

Instrucción RLF: Rota el contenido del registro “f” un bit a la izquierda,


empleando como bit de paso el bit “C” del registro status, es
decir que cada vez que se emplee se introduce el valor del bit
“C” que empuja al registro a la izquierda y el bit sobrante se
guardara en el bit “C”. El nuevo valor de este registro se
guarda de acuerdo a lo indicado por el bit “d”

6
Set de 35 instrucciones
ENCA
Sintaxis: RLF f,d
Operación :
Inicio

C=x

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Ciclos de instrucción: 1
Bits del registro de estados que se afectan: C
Ejemplo: RLF CONTA,1
Antes de la instrucción Registro w=b’11110010’ Registro CONTA=b’11001011’
C=0
Después de la Registro w= b’11110010’ Registro CONTA= b’10010110’
instrucción C=1

Instrucción RRF: Rota el contenido del registro “f” un bit a la derecha,


empleando como bit de paso el bit “C” del registro status, es
decir que cada vez que se emplee se introduce el valor del bit
“C” que empuja al registro a la derecha y el bit sobrante se
guardara en el bit “C”. El nuevo valor de este registro se
guarda de acuerdo a lo indicado por el bit “d”
Sintaxis: RRF f,d
Operación :
Inicio

C=x

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Ciclos de instrucción: 1
Bits del registro de estados que se afectan: C
Ejemplo: RRF CONTA,0
Antes de la instrucción Registro w=b’11110010’ Registro CONTA=b’11001011’
C=0
Después de la Registro w= b’01100101’ Registro CONTA=b’11001011’
instrucción C=1

Instrucción SLEEP: 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:
 Activación de MCLR para provocar un Reset.
 Desbordamiento del watchdog si quedó operativo en el modo
reposo.
 Generación de una interrupción que no sea TMR0 ya que
ésta se desactiva con la instrucción SLEEP.
Sintaxis: SLEEP
Operación : Bit TO=1, bit PD=0
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: TO, PD

Ejemplo: SLEEP

Instrucción SUBLW: Resta el valor constante “k” al registro “w”, y el resultado lo


guarda en el registro “w”.
Sintaxis: SUBLW k
Operación : k-(w)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: C, DC, Z
Ejemplo: SUBLW 0x10
Antes de la instrucción Registro w=0x04

7
Set de 35 instrucciones
ENCA
Después de la instrucción Registro w=0x0C
C=1 (positivo o cero, k≥(w))
Ejemplo: SUBLW 0x10
Antes de la instrucción Registro w=0xF4
Después de la instrucción Registro w=0x1C
C=0 (negativo, k<(w))

Instrucción SUBWF: Resta el valor del registro “w” al valor del reigistro “f”, y el
resultado lo guarda en el registro escogido por el bit “d”.
Sintaxis: SUBWF f,d
Operación : (f)-(w)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: C, DC, Z
Ejemplo: SUBWF 0x10,0
Antes de la instrucción Registro 0x10=0x04 Registro w=0x20
Después de la instrucción Registro 0x10=0x04 Registro w=0xE4
C=0
Ejemplo: SUBWF 0x10,1
Antes de la instrucción Registro 0x10=0x04 Registro w=0x03
Después de la instrucción Registro 0x10=0x01 Registro w=0x03
C=1

Instrucción SWAPF: Intercambia los cuatro bits altos y los cuatro bits bajos del
registro “f”, el nuevo dato se guardara en el registro
seleccionado según el valor del bit “d”.
Sintaxis: SWAPF f,d
Operación : Los bits f<3:0> se intercambian con los bits f<7:4>
Ciclos de 1
instrucción:
Bits del registro de estados que se afectan: ninguno

Ejemplo: SWAPF CONTA,0


Antes de la instrucción Registro CONTA=b’11001010’ Registro w=b’10000111’
Después de la Registro CONTA=b’11001010’ Registro w=b’10101100’
instrucción

Instrucción XORLW: Aplica la operación lógica OR exclusivo entre la constante k y


el registro “w”, la operación OR se efectúa bit a bit y el
resultado queda guardado en el registro “w”
Sintaxis: XORLW k
Operación : k XOR (w)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: XORLW b’11000111’
Antes de la instrucción Registro w=b’01001010’
Después de la instrucción Registro w=b’10001101

Instrucción XORWF: Aplica la operación lógica OR exlusiva entre el contenido del


registro “f” con el contenido del registro “w”, el resultado se
guardará en el registro escogido, según el bit “d”.
Sintaxis: XORWF f,d
Operación : (f) XOR (w)
Ciclos de instrucción: 1
Bits del registro de estados que se afectan: Z
Ejemplo: XORWF 0x20,0
Antes de la instrucción Registro w=b’11110010’ Registro 0x20=b’11001011’
Después de la instrucción Registro w=b’00111001’ Registro 0x20=b’11001011’
8
Set de 35 instrucciones
ENCA

Vous aimerez peut-être aussi