Set de 35 instrucciones ENCA
INSTRUCCIONES PARA PROGRAMAR PIC 16F877A Suma el valor constante “k” al registro “w”, y el resultado lo guarda en el registro “w”. ADDLW Sintaxis: k k Operación : k+(w !icl !iclos os de inst instru rucc cció ión: n: " #its del registro de estados $ue se a%ectan: !, &!, ' ADDLW )emplo: *x"* *x"* ntes de la instrucción egistro w-*x* Instrucción ADDLW:
&espu/s de la instrucción
egistro w-*x"
Suma el contenido del registro “%” con el contenido del registro “w”, el resultado se guarda en el registro escogido por el valor del 0it “d” Sintaxis: ADDWF %,d Operación : (%+(w !icl !iclos os de inst instru rucc cció ión: n: " #its del registro de estados $ue se a%ectan: !, &!, ' ADDWF *x1*," )emplo: nte ntes s de la inst instru rucc cció ión n egi egist stro ro w-*x w-*x* * egi egist stro ro *x1* *x1*-* -*x" x"* * Instrucción ADDWF:
&espu/s de la instrucción
egistro w-*x*
egistro *x1*-*x"
pli plica ca la oper operac ació ión n lógi lógica ca 2& 2& entr entre e la cons consta tant nte e k regi regist stro ro “w”, “w”, la oper operac ació ión n 2& 2& se e%ec e%ect3 t3a a 0it 0it a 0it 0it resultado $ueda guardado en el registro “w” ANDLW Sintaxis: k k Operación : (wand k !icl !iclos os de inst instru rucc cció ión: n: " #its del registro de estados $ue se a%ectan: ' )emplo: ANDLW 04""****""4 04""****""4 ntes de la instrucción egistro w-04*"****"*4 Instrucción ANDLW:
&espu/ &espu/s s de de la la inst instruc rucció ción n
y y
el el
egist egistro ro w-04*" w-04*"*** ****"* *"*
plica la operación lógica 2& entre el contenido del registro “%” con el contenido del registro “w”, el resultado se guardar5 en el registro escogido, seg3n el 0it “d”. Sintaxis: ANDWF %,d Operación : (%and (w !icl !iclos os de inst instru rucc cció ión: n: " #its del registro de estados $ue se a%ectan: ' )emplo: ANDWF *x1*,* ntes ntes de la instru instrucci cción ón egist egistro ro w-04"" w-04""""* ""**"* *"*4 4 egist egistro ro *x1*-0 *x1*-04"" 4""**" **"*"" *""4 4 Instrucción ANDWF:
&esp &espu/ u/s s de la inst instru rucc cció ión n
egi egist stro ro w-04 w-04"" ""** **** **"* "*4 4
egi egist stro ro *x1* *x1*-0 -04" 4""* "**" *"*" *""4 "4
6one 6one a cero cero el 0it 0it “0” “0” del del regi regist stro ro “%” “%” almacena en el mismo registro. BCF %,0 Sintaxis: Operación : *(%708 !icl !iclos os de inst instru rucc cció ión: n: " #its del registro de estados $ue se a%ectan: ninguno )emplo: BCF S99S,1 ntes de la instrucción egistro S99S-04""""*1"*4 Instrucción BCF:
&espu/ &espu/s s de de la la inst instruc rucció ción n
el result resultad ado o
lo
y
el
lo
egist egistro ro S99S S99S-04 -04""" """"* "*0"*4
6one 6one a uno uno el 0it 0it “0” “0” del del regi regist stro ro “%” “%” almacena en el mismo registro. BSF %,0 Sintaxis: Operación : "(%708 !icl !iclos os de inst instru rucc cció ión: n: " #its del registro de estados $ue se a%ectan: ninguno )emplo: BSF S99S,1 ntes de la instrucción egistro S99S-04""""*0"*4 Instrucción BSF:
&espu/ &espu/s s de de la la inst instruc rucció ción n
y
resu result ltad ado o
egist egistro ro S99S S99S-04 -04""" """"* "*1"*4 1
Set de 35 instrucciones ENCA ;denti%ica el estado del 0it “0” del registro “%”, si este es !O, el programa salta una l
ntes de la instrucción
l apuntador de programa apunta a
la l
&espu/s de la instrucción
Si el 0it 1 del registro status es * l apuntador de programa apunta a la l
;denti%ica el estado del 0it “0” del registro “%”, si este es 2O, el programa salta una l
ntes de la instrucción
l apuntador de programa apunta a
la l
&espu/s de la instrucción
Si el 0it 1 del registro status es " l apuntador de programa apunta a la l
>lama a una su0rutina $ue est5 identi%icada como “k” %inali?ada en RETURN CALL k Sintaxis: Operación : !arga al apuntador de programa con la dirección de “k” !iclos de instrucción: 1 #its del registro de estados $ue se a%ectan: ninguno )emplo: 22 CALL 9!>&O 23 BCF S99S,1 ntes de la instrucción l puntador de programa apunta a la l
&espu/s de la instrucción
y
l puntador de programa apunta a la l
#orra el contenido del registro “%”, lo carga con *x** CLRF % Sintaxis: Operación : (%-*x** !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: CLRF !O29&O ntes de la instrucción !O29&O-*xA Instrucción CLRF:
&espu/s de la instrucción
!O29&O-*x**
2
Set de 35 instrucciones ENCA
#orra el contenido del registro “w”, lo carga con *x** CLRW Sintaxis: Operación : (w-*x** !iclos de instrucción: " #its del registro de estados $ue se a%ectan: 2;2B2O )emplo: CLRW ntes de la instrucción w-*xA Instrucción CLRW:
&espu/s de la instrucción
w-*x**
6one a cero el contador del watc@dog timer, para $ue no sea reseteado el micro controlador Sintaxis: CLRWDT Operación : !ontador del watc@dog timer -*x** !iclos de instrucción: " #its del registro de estados $ue se a%ectan: 9O, 6& )emplo: CLRW ntes de la instrucción !O29&O C&9 -*x"A (Supuesto para e)empli%icar Instrucción CLRWDT:
&espu/s de la instrucción
!O29&O C&9 -*x** 9O-", 6&-"
!omplementa el contenido del registro “%”(cam0ia los " por ceros y viceversa, el resultado se guarda en el registro escogido por el valor del 0it “d” COF %,d Sintaxis: Operación : !omplementa el registro % !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: COF S2SO, * ntes de la instrucción egistro S2SO - 0D""****"*4 egistro w-04*"*"***"4 &espu/s de la instrucción egistro S2SO - 0D""****"*4 egistro w-04**""""*"4 Instrucción COF:
&ecrementa el contenido del este decremento se guarda en del 0it “d” Sintaxis: DECF %,d Operación : (%E" !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: DECF S2SO, " ntes de la instrucción egistro S2SO egistro w-*x1 &espu/s de la instrucción egistro S2SO egistro w-*x1 Instrucción DECF:
registro “%” en ", el resultado de el registro elegido seg3n el valor
- *x"* - *x*A
&ecrementa el contenido del registro “%” en ", si este contenido es *x** el apuntador de programa salta una l 2" GOTO ;2;!;O ntes de la instrucción l apuntador de programa apunta a la l
3
Set de 35 instrucciones ENCA contrario e)ecutara la l
na ve? e)ecutado permite $ue el apuntador de programa apunte a la l )emplo: ntes de la instrucción puntador de programa apunta a la l
&espu/s de la instrucción
puntador de programa apunta a la l.
;ncrementa el contenido del este incremento se guarda en del 0it “d” Sintaxis: INCF %,d Operación : (%+" !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: INCF G29O, " ntes de la instrucción egistro G29O egistro w-*x1 &espu/s de la instrucción egistro G29O egistro w-*x1 Instrucción INCF:
registro “%” en ", el resultado de el registro elegido seg3n el valor
- *x"* - *x""
;ncrementa el contenido del registro “%” en ", si este contenido es *x** el apuntador de programa salta una l 2" GOTO ;2;!;O ntes de la instrucción l apuntador de programa apunta a la l
plica la operación lógica O entre la constante k y el registro “w”, la operación O se e%ect3a 0it a 0it y el resultado $ueda guardado en el registro “w” Sintaxis: k IORLW Operación : (wO k !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: IORLW 04""***"""4 ntes de la instrucción egistro w-04*"**"*"*4 Instrucción IORLW:
&espu/s de la instrucción
egistro w-04""**""""
plica la operación lógica O entre el contenido del registro “%” con el contenido del registro “w”, el resultado se guardar5 en el registro escogido, seg3n el 0it “d”. IORWF %,d Sintaxis: Operación : (wO (% !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: IORWF *x1*,* Instrucción IORWF:
4
Set de 35 instrucciones ENCA ntes de la instrucción
egistro w-04""""**"*4
egistro *x1*-04""**"*""4
&espu/s de la instrucción
egistro w-04"""""*""4
egistro *x1*-04""**"*""4
!arga el valor de la constante “k” en el registro “w” O%LW Sintaxis: k Operación : k se carga en el registro “w” !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ninguno )emplo: O%LW *x1 ntes de la instrucción egistro w-*x"(sólo para e)empli%icar Instrucción O%LW:
&espu/s de la instrucción
egistro w-*x1
!opia el valor del registro “w” en el registro “%” O%WF % Sintaxis: Operación : (w se copia en (% !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: O%WF !O29 ntes de la instrucción egistro w-04""""**"*4 egistro !O29-04""**"*""4 Instrucción O%WF:
&espu/s instrucción
de
la egistro w-04""""**"*4
egistro !O29- 04""""**"*4
copia el contenido del registro “%” , el resultado de esta copia se guardara seg3n lo indicado do por el 0it “d” O%F %,d Sintaxis: Operación : Si d-* (% se copia en (w Si d-" (% se copia en (%, se a%ecta el %lag ' del registro status !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: O%F !O29,* ntes de la instrucción egistro w-04""""**"*4 egistro !O29-04""**"*""4 Instrucción O%F:
&espu/s instrucción
de
la egistro w- 04""**"*""4
egistro !O29- 04""**"*""4
2o @ace nada, solo ocupa una l
&espu/s instrucción
de
la l apuntador de programa apunta a la l
etorna a la dirección guardad en la pila luego de la llamada a una su0rutina (!>> RETURN Sintaxis: Operación : egresa de una su0rutina !iclos de instrucción: 1 #its del registro de estados $ue se a%ectan: ninguno )emplo: 23 O%F !O29,* 24 NO& 2" CALL 9!>&O 2( ' ' ' (" TECLADO (( ' () ' Instrucción RETURN:
5
Set de 35 instrucciones ENCA (* ' (+ RETURN
ntes de la instrucción &espu/s instrucción
de
l apuntador de programa apunta a la l
la l apuntador de programa apunta a la l
etorna a la dirección guardad en la pila luego de la llamada a una su0rutina (!>>, a di%erencia del 92 esta regresa con una constante “k” en el registro “w”, indicada en la sintaxis. Sintaxis: RETLW k Operación : egresa de una su0rutina con un valor “k” en el registro “w” !iclos de instrucción: 1 #its del registro de estados $ue se a%ectan: ninguno )emplo: 23 O%F !O29,* 24 NO& 2" CALL 9!>&O 2( ' ' ' (" TECLADO (( ' () ' (* ' (+ RETLW *x" Instrucción RETLW:
ntes de la instrucción
&espu/s instrucción
de
l apuntador de programa apunta a la l
etorna a la dirección guardad en la pila luego de la llamada a una interrupción. RETFIE Sintaxis: Operación : etorna de una interrupción !iclos de instrucción: 1 #its del registro de estados $ue se a%ectan: ninguno Instrucción RETFIE:
)emplo: 4 GOTO ISR " ' ( ' ) ' ' ' #ucle in%inito 1( BUCLE 1) GOTO #!> ' 2( ISR 2) ' utina de interrupción 2* ' 2+ ' 30 RETFIE
ntes de la instrucción &espu/s instrucción
Instrucción RLF:
de
l apuntador de programa apunta a la l
la l apuntador de programa apunta al 0ucle in%inito
ota el contenido del registro “%” un 0it a la i?$uierda, empleando como 0it de paso el 0it “!” del registro status, es decir $ue cada ve? $ue se emplee se introduce el valor del 0it “!” $ue empu)a al registro a la i?$uierda y el 0it so0rante se guardara en el 0it “!”. l nuevo valor de este registro se guarda de acuerdo a lo indicado por el 0it “d” 6
Set de 35 instrucciones ENCA Sintaxis: Operación :
RLF %,d
;nicio !-x #itK
#itI
#itF
#it
!iclos de instrucción: " #its del registro de estados $ue se a%ectan: ! )emplo: RLF !O29," ntes de la instrucción egistro w-04""""**"*4 &espu/s instrucción
Instrucción RRF:
Sintaxis: Operación :
de
la egistro w- 04""""**"*4
#it=
#it1
#it"
#it*
egistro !O29-04""**"*""4 !-* egistro !O29- 04"**"*""*4 !-"
ota el contenido del registro “%” un 0it a la derec@a, empleando como 0it de paso el 0it “!” del registro status, es decir $ue cada ve? $ue se emplee se introduce el valor del 0it “!” $ue empu)a al registro a la derec@a y el 0it so0rante se guardara en el 0it “!”. l nuevo valor de este registro se guarda de acuerdo a lo indicado por el 0it “d” RRF %,d
;nicio !-x #itK
#itI
#itF
#it
!iclos de instrucción: " #its del registro de estados $ue se a%ectan: ! )emplo: RRF !O29,* ntes de la instrucción egistro w-04""""**"*4 &espu/s instrucción
de
la egistro w- 04*""**"*"4
#it=
#it1
#it"
#it*
egistro !O29-04""**"*""4 !-* egistro !O29-04""**"*""4 !-"
6one al circuito en modo Sleep (0a)o consumo con parada del oscilador. 6one a * el %lag 6&L (6ower &own y el %lag 9OL (9imer Out se pone a ". Se puede salir de este estado por: ctivación de H!> para provocar un eset. &es0ordamiento del watc@dog si $uedó operativo en el modo reposo. Beneración de una interrupción $ue no sea 9H* ya $ue /sta se desactiva con la instrucción S>6. SLEE& Sintaxis: Operación : #it 9O-", 0it 6&-* !iclos de instrucción: " #its del registro de estados $ue se a%ectan: 9O, 6& Instrucción SLEE&:
)emplo: SLEE&
esta el valor constante “k” al registro “w”, y el resultado lo guarda en el registro “w”. SUBLW Sintaxis: k Operación : kE(w !iclos de instrucción: " #its del registro de estados $ue se a%ectan: !, &!, ' SUBLW )emplo: *x"* ntes de la instrucción egistro w-*x* Instrucción SUBLW:
7
Set de 35 instrucciones ENCA &espu/s de la instrucción )emplo:
egistro w-*x*! !-" (positivo o cero, kM(w
*x"* SUBLW ntes de la instrucción
egistro w-*xA
&espu/s de la instrucción
egistro w-*x"! !-* (negativo, k7(w
esta el valor del registro “w” al valor del reigistro “%”, y el resultado lo guarda en el registro escogido por el 0it “d”. SUBWF %,d Sintaxis: Operación : (%E(w !iclos de instrucción: " #its del registro de estados $ue se a%ectan: !, &!, ' )emplo: SUBWF *x"*,* ntes de la instrucción egistro *x"*-*x* egistro w-*x1* Instrucción SUBWF:
&espu/s de la instrucción )emplo:
egistro *x"*-*x*
egistro w-*x !-*
ntes de la instrucción
egistro *x"*-*x*
egistro w-*x*=
&espu/s de la instrucción
egistro *x"*-*x*" !-"
egistro w-*x*=
SUBWF *x"*,"
Instrucción SWA&F:
;ntercam0ia los cuatro 0its altos y los cuatro 0its 0a)os del registro “%”, el nuevo dato se guardara en el registro seleccionado seg3n el valor del 0it “d”. SWA&F %,d >os 0its %7=:*8 se intercam0ian con los 0its %7K:8 de "
Sintaxis: Operación : !iclos instrucción: #its del registro de estados $ue se a%ectan: ninguno )emplo: SWA&F !O29,* ntes de la instrucción &espu/s instrucción
de
egistro !O29-04""**"*"*4
egistro w-04"****"""4
la egistro !O29-04""**"*"*4
egistro w-04"*"*""**4
plica la operación lógica O exclusivo entre la constante k y el registro “w”, la operación O se e%ect3a 0it a 0it y el resultado $ueda guardado en el registro “w” -ORLW Sintaxis: k Operación : k NO (w !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: -ORLW 04""***"""4 ntes de la instrucción egistro w-04*"**"*"*4 Instrucción -ORLW:
&espu/s de la instrucción
egistro w-04"***""*"
plica la operación lógica O exlusiva entre el contenido del registro “%” con el contenido del registro “w”, el resultado se guardar5 en el registro escogido, seg3n el 0it “d”. Sintaxis: -ORWF %,d Operación : (% NO (w !iclos de instrucción: " #its del registro de estados $ue se a%ectan: ' )emplo: -ORWF *x1*,* ntes de la instrucción egistro w-04""""**"*4 egistro *x1*-04""**"*""4 Instrucción -ORWF:
&espu/s de la instrucción
egistro w-04**"""**"4
egistro *x1*-04""**"*""4 8
Set de 35 instrucciones ENCA
9