Académique Documents
Professionnel Documents
Culture Documents
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 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
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
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 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 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
6
Set de 35 instrucciones
ENCA
Sintaxis: RLF f,d
Operación :
Inicio
C=x
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
C=x
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
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