Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instrucciones 16f84
Instrucciones 16f84
Descripcin Microchip
Add Literal and W
Operacin equivalente
W=W+k
BSF f,b
Bit Set f
f(b) = 1
BTFSC f,b
BTFSS f,b
CALL k
Subroutine Call
CLRF f
Clear f
f=0
CLRW
Clear W
Register W = 0
CLRWDT
Watchdog timer = 0
COMF f,d
Complement f
DECF f,d
Decrement f
W = W AND k
f(b) = 0
INCF f,d
Increment f
Salta en la direccin k
MOVF f,d
Move f
MOVWF f
Move W to f
f=W
NOP
No Operation
Ninguna operacin
OPTION
OPTION = W
RETFIE
RETLW k
Return Literal to W
RETURN
RLF f,d
RRF f,d
SLEEP
SUBLW k
W=k-W
W=k
TRIS f
TRIS di f = W
XORLW k
ADDLW
Status Register
Suma la constante K a W
addlw k
Sintassi:
Operaciones equivalentes: W = W + k
Descripcin:
Suma la constante K al valor grabado en el acumulador W y pone el resultado
en el acumulador.
org 00H
Ejemplo:
start
movlw 10
addlw 12
Despues de haber realizado este programa el acumulador W valdra 22.
Nota
esta instruccin influencia i bit Z, DC y C de el registro STATUS.
Z vale 1 si el resultado de la operacin vale o.
DC vale 1 si el resultado de la operacin es un nmero superior de 15.
C vale 1 si el resultado es positivo es decir si el bit 7 de el registro que
contiene el resultado vale 0 y 1 si el resultado es negativo es decir si el bit de
el registro que contiene el resultado vale 1.
ADDWF
ADD W and F
Status Register
;Primer addendo = 10
;Segundo addendo = 15
;W = add1
;W = W + add2
ANDLW
Status Register
ANDWF
AND W with F
Status Register
;Graba en el registro
;0CH el valor inicial que hay
;Prepara la mascara de el bit
;Efectua el AND y graba el
;resultado en el acumulador W
BCF
Bit Clear F
Status Register
BSF
Bit Set F
Status Register
BTFSC
Status Register
BTFSS
Status Register
loop
btfss parm1,0
;D0 = 1 ? Si, sale
goto
loop
;No, efectua el loop
Este programa efectua un loop infinito el mismo programa no efectua el loop si
reemplazamos la instruccin:
movlw 11111111B ;Valor inicial
con la instruccin:
Nota
CALL
Subroutine CALL
Status Register
Llamada a subroutine
call k
Sintassi:
Operaciones equivalentes:
Descripcin:
Llama durante la ejecucin una subroutine grabada en la direccin K.
El parametro K puede ser especificado utilizando directamente el valor
nmerico de la direccin o tambin la correspondiente label.
org 00H
Ejemplo:
call ledOn
...
;Subroutine cuando un led se prende
ledOn
Nota
bsf PORTB,LED1
return
Cuando la CPU de el PIC encuentra una instruccin CALL, graba en el STACK
el valor de el registro PC + 1 de esta manera se logra volver a comenzar la
ejecucin de la instruccin siguiente a la CALL, entonces escribe en el PC la
direccin de la subroutine saltando a la ejecucin de esta ultima.
El valor original de el PC se restablece en la salida de la subroutine con la
ejecucin de la instruccin de regreso RETURN o RETLW.
En el PIC16F84 estan disponibles 8 niveles de stack, por lo tanto el nmero
mximo de CALL que regresan, es decir de instrucciones CALL en el interior
de la subroutine que a su vz contienen otras CALL, se limita a 8 niveles.
Esta instruccin no influencia ningun bit de estado.
CLRF
CLeaR F register
Status Register
CLRW
CLeaR W register
Status Register
CLRWDT
Status Register
COMF
COMplement F
Status Register
Nota
comf parm1,F
...
Al final de la ejecucin de el programa el valor de el registro parm1 ser
10101010B.
Esta instruccin influencia el bit Z de el registro STATUS.
Z vale 1 si el resultado de la operacin vale 0.
DECF
DECrement F register
Status Register
Ejemplo:
;Escribe en W el valor 23 H
;Copia en el registro 0CH el valor
de W
decf OCH,F ;Reduce el valor contenido en el
registro 0CH
Nota
DECFSZ
Status Register
Ejemplo:
10
counter
;counter = 10
loop
Nota
GOTO
GO TO address
Status Register
Ve en ejecucin a la direccin K
goto k
Sintassi:
Operaciones equivalentes:
Descripcin:
Determina un salto de el programa en ejecucin en la direccin K.
El parametro K puede ser especificado utilizando directamente el valor
nmerico de la direccin o tambin la correspondiente label.
org 00H
Ejemplo:
loop
Nota
goto loop
Este programa efectua un ciclo (loop) infinito.
Esta instruccin no influye ningun bit de estado.
INCF
INCrement F
Status Register
INCFSZ
Status Register
IORLW
Status Register
IORWF
Inclusive OR W with F
Status Register
Ejemplo:
Nota
movlw 11111111B
iorwf parm1,F
Al final de la ejecucin el valor de el registro parm 1 ser: 11111111B.
Esta instruccin influencia el bit Z de el registro STATUS.
Z vale 1 si el resultado de la operacin vale 0.
MOVLW
Da a W un valor constante
Sintassi:
Operaciones equivalentes:
Descripcin:
Ejemplo:
Nota
MOVe Literal to W
Status Register
movlw k
W=k
Da al acumulador W el valor constante K.
org 00H
start
movlw 20
...
Despues de haber realizado este programa el acumulador W vale 20.
Esta instruccin no influye ningun bit de estado.
MOVF
MOVe F
Status Register
Ejemplo:
Nota
MOVWF
MOVe W to F
Status Register
movwf 01H
10H
Para los registros utilizados por el PIC para funciones especificas, normalmente
no se introduce directamente la direccin ma el correspondiente nombre
simbolico definido en el file P16F84.INC.
El codigo ser, entonces el siguiente:
movlw 10H
10H
movwf TMR0 ;y lo graba en el registro TMR0
Nota
NOP
No OPeration
Status Register
Ninguna operacin
nop
Sintassi:
Operaciones equivalentes:
Descripcin:
Esta instruccin no sigue ninguna operacin pero es util para introducir un
retraso de un ciclo de mquina.
Ejemplo:
Utilizando un quarzo de 4 MHz se podra obtener un retraso de 1 ?s para cada
instruccin NOP introducida en nuestro source..
nop
Nota
;Sigue un retraso de 1s
OPTION
Status Register
;Activa el banco de
movlw 01000100B
movwf OPTION_REG
...
Nota
RETFIE
Status Register
;Interrupt vector
intHandler
Nota
retfi
;Regresa de el interrupt
En esta source el programa principal realiza un loop infinito.
Si se habilita uno de los interrup de el 16F84 apenas el mismo se realizara el
control ser dado automaticamente a el programa que se encuentra en la
direccin 04H (en el ejemplo intHandler), la instruccin RETFI determinara
entonces el regreso a el lopp principal.
Esta instruccin no influencia ningun bit de estado.
RETLW
RETurn Literal to W
Status Register
Nota
nop
retlw 10
Una vz que se realiza este programa graba en el registro rtc el valor 10 pasando
por la subroutine mysub 1.
Esta instruccin no influencia ningun bit de estado
Observar tambin la instruccin RETURN.
RETURN
Status Register
mySub1
mySub1
nop
return
Nota: En el PIC16F84 pueden ser colocadas en forma de nido hasta 8 llamadas
a subroutine de el tipo:
org 00H
call
....
mySub1
mySub1
call
mySub2
return
mySub2
call
mySub3
return
mySub3
return
Nota
RLF
Status Register
Ejemplo:
Nota
clrf
C,STATUS
movlw
movwf
01010101B
parm1
;Valore inicial
rlf
parm1,F
Al final de el programa el registro parm 1 valdra 10101010B mientras el
CARRY tendra un valor cero.
Esta instruccin no influencia ningun otro bit de estado adems de el CARRY.
RRF
Status Register
Fig. 3.2
El contenido de el bit CARRY de el registro status se pone en el bit D7 mientras
el valor en la salida de el bit D0 se introduce en el CARRY.
El valor de el parametro d determina la destinacin de el resultado obtenido al
final de la rotacin:
Ejemplo:
Nota
C,STATUS
01010101B
movwf parm1
rrf
parm1,F
Al final de el programa el registro parm 1 vale 00101010B mientras el CARRY
vale 1.
Esta instruccin no influencia ningun otro bit de estado adems de el CARRY.
SLEEP
Status Register
SUBLW
Status Register
Sustrae a K el valor en W
sublw k
Sintassi:
Operaciones equivalentes: W = k - W
Descripcin:
Sustrae a la constante K el valor grabado en el acumulador W.
org 00H
Ejemplo:
start
movlw 10
sublw 12
...
despues de haber realizado este programa el valor de el acumulador W vale 2.
Nota
esta instruccin influencia i bit Z, DC y C de el registro STATUS.
Z vale 1 si el resultado de la operacin vale 0.
DC vale 1 si el resultado de la operacin es un nmero superior a 15.
C vale 1 si el resultado es positivo es decir si el bit 7 de el registro que
contiene el resultado vale 0 y 1 si el resultado es negativo es decir si el bit 7
de el registro que contiene el resultado vale 1.
SUBWF
SUBstract W from F
Status Register
SWAPF
SWAP F
Status Register
Cambia el valor de los cuatros bit ms significativos de el registro en la direccin F con los quatros bit
menos significativos.
swap f,d
Sintassi:
Operaciones equivalentes: f = Swap de los bit 0123 con 4567 de f
Descripcin:
Cambia el valor de los cuatros bit ms significativos (D7 - D4) contenidos en el
registro en la direccin f con los cuatros bit menos significativos (D3 - D0) de el
mismo.
El resultado se graba en el acumulador W o en el mismo registro f en base a el
valor de d:
Para d = W el resultado se graba en el registro W
Para d = F il risultato se graba en el registro F
Ejemplo:
Nota
TRIS
Status Register
11111111B
PORTA
Nota: Esta instruccin existe para matener la compatibilidad con los PIC hasta
ahora producidos, la Microchip no aconseja su uso. Es en vs aconsejado
utilizar las siguientes instrucciones.
org 00H
start
bsf
Nota
STATUS,RP0
;Activa
banco de registros 1
movlw 11111111B
movwf TRISA
...
En otras palabras se aconseja de escribir directamente en los registros TRIS
presentes en el banco 1 de losregistros de el PIC utilizando la MOVWF en vz
de la instruccin TRIS que en un futuro podria no ser ms utilizada.
Esta instruccin no influencia ningun bit de estado.
XORLW
Status Register
XORWF
eXclusive OR W with F
Status Register
Ejemplo:
Esta instruccin influencia los bit Z de el registro STATUS que vale 1 si el resultado de la
operacin es 0.
Hagamos la hipotesis de tener que efectuar el XOR entre el registro W y el registro REG1
definido por nosotros en la direccin 0CH con el comando:
REG1 EQU 0CH
Podemos utilizar la instruccin IORWF en dos formas segun a donde queremos poner el
resultado, es decir:
xorwf COUNTER,F
O tambin:
xorwf COUNTER,W
Nota
;W = COUNTER XOR W
El OR exclusivo (XOR) es una operacin entre dos bit donde el bit que resulta vale o si los
dos bit son iguales.
Muchas veces el XOR se utiliza en el assembler de el PIC para efectuar la comparacin entre
dos valores cuando falta una instruccin especifica.
Observemos como:
Hipotisamos de tener un valor en el registro REG1 y de querer verificar si es igual a 57H.
Las instrucciones que hay que seguir son las siguientes:
movlw 57H
xorwf REG1,W
btfss STATUS,Z
goto
goto
;Salta si es diferente de 57 H
;Salta si es igual a 57 H
diverso
uguale
Status Register