juego de instrucciones pic
TRANSCRIPT
-
8/18/2019 Juego de Instrucciones PIC
1/6
Set
de
Instrucciones
PIC
-
8/18/2019 Juego de Instrucciones PIC
2/6
ADDLW Suma un literal
Sintaxis: [label] ADDLW k
Operandos: 0 ≤ k ≤ 255
Operación: : (W) (k)⇒ (W)
Flags afectados: C! DC! "
Código OP: ## ###$ kkkk kkkk
Descripción: Suma el contenido del
re%istro W & k! %uardando el
resultado en W'
Ejemplo: ADDLW 0$C2
Antes W 0$#*
Des u,s W 0$D-
A.DLW W A.D literal
Sintaxis: [label] A.DLW k
Operandos: 0 ≤ k ≤ 255
Operación: : (W) A.D (k)⇒ (W)
Flags afectados: "
Código OP: ## #00# kkkk kkkk
Descripción: /ealia la o+eraci1n
l1%ica A.D entre el contenido del
re%istro W & k! %uardando el
resultado en W'
Ejemplo: ADDLW 0$C2
Antes W 0$#*
Des u,s W 0$D-
ADDW W
Sintaxis: [label] ADDW 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: (W) (3)⇒ (dest)
Flags afectados: C! DC! "
Código OP: 00 0### d333 3333
Descripción: Suma el contenido del
re%istro W & el re%istro 3' Si d es 0! el
resultado se almacena en W! si d es #se almacena en 3'
Ejemplo: ADDW /4!0
Antes W 0$#*'! /4 0$C2 Des u,s W 0$D- /4 0$C2
67SS 7est de bit & salto
Sintaxis: [label] 67SS 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: Salto si (38b9) #
Flags afectados: .in%uno
Código OP: 0# ##bb b333 3333
Descripción: Si el bit b del re%istro 3
es #! se salta una instrucci1n & se
contin:a con la e;ecuci1n' 4n caso desalto! ocu+ar< dos ciclos de relo;'
Ejemplo: 67SS /4!=
>7> .>?4S?0
SI?4S?0 Instrucci1n
A.DW W A.D
Sintaxis: [label] A.DW 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: (W) A.D (3)⇒ (dest)
Flags afectados: "
Código OP: 00 0#0# d333 3333
Descripción: /ealia la o+eraci1n
l1%ica A.D entre los re%istros W & 3'
Si d es 0! el resultado se almacena en
W! si d es # se almacena en 3'
Ejemplo: : A.DW /4!0
Antes W 0$#*'! /4 0$C2
Des+u,s W 0$#*! /4 0$02
6C 6orra un bit
Sintaxis: [label] 6C 3!b
Operandos: 0 ≤ 3 ≤ #2*! 0 ≤ b ≤ *
Operación: : 0⇒ (38b9)
Flags afectados: .in%uno
Código OP: 0# 00bb b333 3333
Descripción: 6orra el bit b del
re%istro 3
Ejemplo: : 6C /4!*
Antes /4 0$C*
Des+u,s /4 0$@*
67SC 7est de bit & salto
Sintaxis: [label] 67SC 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: Salto si (38b9) 0
Flags afectados: .in%uno
Código OP: 0# #0bb b333 3333
Descripción: Si el bit b del re%istro 3
es 0! se salta una instrucci1n & se
contin:a con la e;ecuci1n' 4n caso desalto! ocu+ar< dos ciclos de relo;'
Ejemplo: 67SC /4!=
>7> .>?4S?0
SI?4S?0 Instrucci1n
6S Actia un bit
Sintaxis: [label] 6S 3!b
Operandos: 0 ≤ 3 ≤ #2*! ! 0 ≤ b ≤ *
Operación: #⇒ (38b9)
Flags afectados: .in%uno
Código OP: 0# 0#bb b333 3333
Descripción: Actia el bit b del
re%istro 3
Ejemplo: : 6S /4!*
Antes /4 0$0A
Des+u,s /4 0$BA
CALL Salto a subrutina
Sintaxis: [label] CALL k
Operandos: 0 ≤ k ≤ 20@*
Operación: PC⇒ Pila k⇒ PC
Flags afectados: .in%uno
Código OP: #0 0kkk kkkk kkkk
Descripción: Salto a una subrutina'La +arte ba;a de k se car%a en PCL! &
la alta en PCLA7C' >cu+a 2 ciclos
de relo;'
Ejemplo:>/I4. CALL D4S7I.>
Antes PC >/I4.
-
8/18/2019 Juego de Instrucciones PIC
3/6
CL/ 6orra un re%istro
Sintaxis: [label] CL/ 3
Operandos: 0 ≤ 3 ≤ #2*
Operación: : 0$00⇒ (3)! # ⇒ "
Flags afectados: "Código OP: 00 000# #333 3333
Descripción: 4l re%istro 3 se car%a
con 0$00' 4l 3la% " se actia'
Ejemplo: : CL/ /4
Antes /4 0$5A
Des+u,s /4 0$00! " #
CL/W 6orra el re%istro W
Sintaxis: [label] CL/W
Operandos: .in%uno
Operación: : 0$00⇒ W! #⇒ "
Flags afectados: "Código OP: 00 000# 0$$$ $$$$
Descripción: 4l re%istro de traba;o
W se car%a con 0$00' 4l 3la% " se
actia'
Ejemplo: : CL/W
Antes W 0$5A
Des+u,s W 0$00! " #
CL/WD7 6orra el WD7
Sintaxis: [label] CL/WD7
Operandos: .in%uno
Operación: 0$00⇒ WD7! #⇒ E7>
#⇒ EPDFlags afectados: E7>! EPD
Código OP: 00 0000 0##0 0#00
Descripción: 4sta instrucci1n borra
tanto el WD7 como su +reescaler'
Los bits E7> & EPD del re%istro deestado se +onen a #'
Ejemplo: : CL/WD7
Des+u,s Contador WD7 0!
Preescales WD7 0!
E7> #! EPD #
I.CS" Incremento & salto
Sintaxis: [label] I.CS" 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: (3) F#⇒ d Salto si /0
Flags afectados: .in%uno
Código OP: 00 #### d333 3333
Descripción: Incrementa el
contenido del re%istro 3' Si d es 0! el
resultado se almacena en W! si d es #
se almacena en 3' Si la resta es 0 saltala si%uiente instrucci1n! en cu&o caso
costarGa 2 ciclos'
Ejemplo: I.CSC /4!0
>7> .>?4S?0 SI?4S?0 Instrucci1n
C>H Com+lemento de 3
Sintaxis: [label] C>H 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: : (E 3)! #⇒ (dest)
Flags afectados: "
Código OP: 00 #00# d333 3333
Descripción: 4l re%istro 3 escom+lementado' 4l 3la% " se actia si
el resultado es 0' Si d es 0! el
resultado se almacena en W! si d es #
se almacena en 3''
Ejemplo: : C>H /4!0
Antes /4 0$#
Des+u,s /4 0$#! W 0J4C
I.C Decremento de 3
Sintaxis: [label] I.C 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: : (3 ) #⇒ (dest)
Flags afectados: "
Código OP: 00 #0#0 d333 3333
Descripción: Incrementa en # el
contenido de 3' Si d es 0! el resultado
se almacena en W! si d es # se
almacena en 3'
Ejemplo: : I.C C>.7!#
Antes C>.7 0$! " 0
Des+u,s C>.7 0$00! " #
>7> Salto incondicional
Sintaxis: [label] >7> k
Operandos: 0 ≤ k ≤ 20@*
Operación: k⇒ PC 8B09
Flags afectados: .in%uno
Código OP: #0 #kkk kkkk kkkk
Descripción: Se trata de un salto
incondicional' La +arte ba;a de k se
car%a en PCL! & la alta en
PCLA7C' >cu+a 2 ciclos de relo;'
Ejemplo: >/I4. >7> D4S7I.>
Antes PC >/I4.
Des+u,s PC D4S7I.>
D4CS" Decremento & salto
Sintaxis: [label] D4CS" 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: (3) F#⇒ d Salto si /0
Flags afectados: .in%uno
Código OP: 00 #0## d333 3333
Descripción: Decrementa elcontenido del re%istro 3' Si d es 0! el
resultado se almacena en W! si d es #
se almacena en 3' Si la resta es 0 salta
la si%uiente instrucci1n! en cu&o caso
costarGa 2 ciclos'
Ejemplo: D4CSC /4!0
>7> .>?4S?0
SI?4S?0 Instrucci1n
D4C Decremento de 3
Sintaxis: [label] D4C 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: : (3 ) K #⇒ (dest)
Flags afectados: "
Código OP: 00 00## d333 3333
Descripción: Decrementa en # elcontenido de 3' Si d es 0! el resultado
se almacena en W! si d es # se
almacena en 3'
Ejemplo: : D4C C>.7!#
Antes C>.7 0$0#! " 0
Des+u,s C>.7 0$00! " #
-
8/18/2019 Juego de Instrucciones PIC
4/6
I>/W W A.D
Sintaxis: [label] I>/W 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: (W) >/ (3)⇒ (dest)
Flags afectados: "
Código OP: 00 0#00 d333 3333
Descripción: /ealia la o+eraci1n
l1%ica >/ entre los re%istros W & 3'
Si d es 0! el resultado se almacena enW! si d es # se almacena en 3'
Ejemplo: : I>/W /4!0
Antes W 0$-#! /4 0$# Des+u,s W 0$-! /4 0$#
H>LW Car%ar literal en W
Sintaxis: [label] H>LW 3
Operandos: 0 ≤ 3 ≤ 255
Operación: (k)⇒
(W)Flags afectados: .in%uno
Código OP: ## 00$$ kkkk kkkk
Descripción: 4l literal k +asa al
re%istro W'
Ejemplo: H>LW 0$5A
Des+u,s /4 0$@! W 0$5A
I>/LW W >/ literal
Sintaxis: [label] I>/LW k
Operandos: 0 ≤ k ≤ 255
Operación: : (W) >/ (k)⇒ (W)
Flags afectados: "
Código OP: ## #000 kkkk kkkk
Descripción: Se realia la o+eraci1n
l1%ica >/ entre el contenido del
re%istro W & k! %uardando elresultado en W'
Ejemplo: : I>/LW 0$5
Antes W 0$-A Des+u,s W 0$6
/47I4 /etorno de interru+'
Sintaxis: [label] /47I4
Operandos: .in%uno
Operación: : #⇒ I4 7>S⇒PC
Flags afectados: .in%uno
Código OP: 00 0000 0000 #00#
Descripción: 4l PC se car%a con el
contenido de la cima de la +ila(7>S) direcci1n de retorno'
Consume 2 ciclos' Las interru+ciones
uelen a ser Mabilitadas'
Ejemplo: : /47I4
Des+u,s PC direcci1n de retorno
I4 #
/47LW /etorno! car%a W
Sintaxis: [label] /47LW k
Operandos: 0 ≤ k ≤ 255
Operación: : (k)⇒ (W) 7>S⇒PC
Flags afectados: .in%uno
Código OP: ## 0#$$ kkkk kkkk
Descripción: 4l re%istro W se car%a
con la constante k' 4l PC se car%a
con el contenido de la cima de la +ila
(7>S) direcci1n de retorno'Consume 2 ciclos'
Ejemplo: : /47LW 0$*
Des+u,s PC direcci1n de retorno
W 0$*
H>W Hoer a 3
Sintaxis: [label] H>W 3
Operandos: 0 ≤ 3 ≤ #2*
Operación: W⇒ (3)
Flags afectados: .in%uno
Código OP: 00 0000 #333 3333
Descripción: 4l contenido del
re%istro W +asa el re%istro 3'
Ejemplo: H>W /4!0
Antes /4 0$! W 0$@
Des+u,s /4 0$@! W 0$@
H> Hoer a 3
Sintaxis: [label] H> 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: (3)⇒ (dest)
Flags afectados: "
Código OP: 00 #000 d333 3333
Descripción: 4l contenido del
re%istro 3 se muee al destino d' Si d
es 0! el resultado se almacena en W!si d es # se almacena en 3' Permite
eri3icar el re%istro! +uesto Nue a3ecta
a "'
Ejemplo: H> /4!0
Des+u,s W /4
.>P .o o+erar
Sintaxis: [label] .>P
Operandos: .in%uno
Operación: .o o+erar
Flags afectados: .in%uno
Código OP: 00 0000 0$$0 0000
Descripción: .o realia o+eraci1n
al%una' 4n realidad consume un ciclo
de instrucci1n sin Macer nada'
Ejemplo: : CL/WD7
Des+u,s Contador WD7 0!
Preescales WD7 0!E7> #! EPD #
/47O/. /etorno de rutina
Sintaxis: [label] /47O/.
Operandos: .in%uno
Operación: : 7>S⇒ PC
Flags afectados: .in%uno
Código OP: 00 0000 0000 #000
Descripción: 4l PC se car%a con el
contenido de la cima de la +ila(7>S) direcci1n de retorno'
Consume 2 ciclos'
Ejemplo: : /47O/.
Des+u,s PC direcci1n de retorno
-
8/18/2019 Juego de Instrucciones PIC
5/6
SL44P Hodo ba;o consumo
Sintaxis: [label] SL44P
Operandos: .in%uno
Operación: 0$00⇒WD7! #⇒ E 7>
0⇒
WD7 Preescaler! 0⇒
E PDFlags afectados: E PD! E 7>
Código OP: 00 0000 0##0 00##
Descripción: 4l bit de ener%Ga se
+one a 0! & a # el de descanso' 4lWD7 & su +reescaler se borran' 4l
micro +ara el oscilador! llendo al
modo durmienteQ'
Ejemplo: : SL44P
Preescales WD7 0!
E7> #! EPD #
/L /ota 3 a la iNuierda
Sintaxis: [label] /L 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: /otaci1n a la iNuierda
Flags afectados: CCódigo OP: 00 ##0# d333 3333
Descripción: 4l contenido de 3 se
rota a la iNuierda' 4l bit de menos
+eso de 3 +asa al carr& (C)! & el carr&
se coloca en el de ma&or +eso' Si d es0! el resultado se almacena en W! si d
es # se almacena en 3'
Ejemplo: // /4!0
Antes /4 ###0 0##0! C 0
Des+u,s /4 ###0 0##0!
W ##00 ##00! C #
// /ota 3 a la derecMa
Sintaxis: [label] // 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: /otaci1n a la derecMa
Flags afectados: CCódigo OP: 00 ##00 d333 3333
Descripción: 4l contenido de 3 se
rota a la derecMa' 4l bit de menos
+eso de 3 +asa al carr& (C)! & el carr&
se coloca en el de ma&or +eso' Si d es0! el resultado se almacena en W! si d
es # se almacena en 3'
Ejemplo: // /4!0
Antes /4 ###0 0##0! C #
Des+u,s /4 ###0 0##0!
W 0###0 00##! C 0
SWAP Intercambio de 3
Sintaxis: [label] SWAP 3!d
Operandos: d ∈ [0!#]! 0 ≤ 3 ≤ #2*
Operación: : (3 8 09)⇔ (3 8*@9)
Flags afectados: .in%uno
Código OP: 00 ###0 d333 3333
Descripción: Los @ bits de m/LW 0$A
Antes W 0$65
Des+u,s W 0$#A
La gama media tiene un total
de 35 instrucciones, cada una
de las cuales ocupan 14 bits.
-
8/18/2019 Juego de Instrucciones PIC
6/6