Istrucciones PIC 16F84
-
Upload
marco-antonio-gomez-vilca -
Category
Documents
-
view
214 -
download
0
Transcript of Istrucciones PIC 16F84
-
8/17/2019 Istrucciones PIC 16F84
1/19
Microcontrolador PIC16F84
Set de instrucciones
Para entender mejor cada instrucción se explica a continuación el significadode algunos parámetros:
f: Registro al que afecta la instrucciónW: Acumulador (Working register)b: !mero de bit ("a# instrucciones que afectan a un solo bit)k: constante (un n!mero)d: selección de destino del resultado de la instrucción$ puede ser %&% o %'%$ si es%&% el resultado se guarda en el acumulador (W) # si es %'% se gu#arda en elregistro f al que afecta la instrucción
Instrucciones orientadas a registros:
AW* f$d +uma W # el registro f$ el resultado lo guarda seg!n d (si d,& seguarda en W # si d,' se guarda en f)
AW* f$d Reali-a la operación A lógica entre W # f$ el resultado lo guardaseg!n d
./R* f 0orra el registro f (pone todos sus bits a cero)
./RW 1 0orra el acumulador
.23* f$d .alcula el complementario del registro f (los bits que estan a %&% lospone a %'% # 4ice4ersa Resultado seg!n d
5.* f$d ecrementa f en uno (le resta uno) Resultado seg!n d
5.*+6 f$d ecrementa f # se salta la siguiente instrucción si el resultado escero Resultado seg!n d
7.* f$d 7ncrementa f en uno (le suma uno) Resultado seg!n d
7.*+6 f$d 7ncrementa f # se salta la siguiente instrucción si el resultado escero (cuando se desborda un registro 4uel4e al 4alor &&") Resultado seg!n d
72RW* f$d Reali-a la operación lógica 2R entre W # f Resultado seg!n d
328* f$d 3ue4e el contenido del registro f a W si d,& (si d,' lo 4uel4e a poner en el mismo registro)
-
8/17/2019 Istrucciones PIC 16F84
2/19
328W* f mue4e el 4alor de W a f Por ejemplo$ si queremos copiar el 4alor delregistro %R59'% al registro %R59% (#a 4eremos como ponerles nombres a losregistros) escribiremos:
328* R59'$& ;mue4e el 4alor de R59' a W328W* R59 ;mue4e el 4alor de W a R59
/o que 4a despu
-
8/17/2019 Istrucciones PIC 16F84
3/19
72R/W k 2peración lógica 2R entre W # el 4alor k (resultado en W)
328/W k carga el acumulador con el 4alor k Por ejemplo$ si queremos cargarel 4alor A" en el registro %R59'% escribiremos:
328/W AC ;carga el acumulador con el 4alor A"328W* R59' ;mue4e el 4alor de W a %R59'%
R5B*75 1 7nstrucción para 4ol4er de la interrupción
R5B/W k carga el 4alor k en W # 4uel4e de la interrupción
R5B?R 1 4uel4e de una subrutina
+/55P 1 5l pic pasa a modo de +tandb#
Instrucciones para el ensamblador
Podemos usar para escribir los programas el bloc de notas deWindoDs$ una 4e- escrito se guarda con extensión asm paraensamblarlo con el 3PA+3
5xisten una serie de instrucciones que son para el ensamblador # nos"acen la tarea de programación mas sencilla # mas legible
EQ: ?n ejemplo de esto son las etiquetas$ podemos poner unnombre a un registro de memoria$ esto se "ace mediante lainstrucción 5E? Por ejemplo:
8AR7A0/5' 5E? &.C
A partir de a"ora en lugar de escribir &.C podemos escribir8AR7A0/5' .on 5E? tambi
-
8/17/2019 Istrucciones PIC 16F84
4/19
F5*75 0A.2' 0+* +BAB?+$HF5*75 0A.2& 0.* +BAB?+$H
A partir de a"ora$ cuando escribamos 0A.2' se pondrá a %'% el bit
de selección de banco # pasaremos al banco '$ al escribir 0A.2&pasaremos al banco &
$%&: 7ndica al ensamblador la dirección (de memoria de programa)donde se guardará la instrucción que 4a#a a continuación Porejemplo:
2R9 &&C./R* 8AR7A0/5'
/a instrucción ./R* está en la dirección de memoria de programa&&C (será la primera instrucción en ser ejecutada por el pic)
E#": +e escribe al final del programa para indicar que #a "a acabado(es obligatorio$ si no da error)
Eti'uetas a direcciones de Programa: mu# !tiles para usar coninstrucciones .A// (/lamada a subrutina) o 92B2 (+alto) Por
ejemplo:
ICa# programa anteriorJ0B*+. 8AR7A0/5'$& ;+i el bit & de 8AR7A0/5' es %&% se salta lasiguiente instrucción92B2 5+?2 ;+alta a 5+?2 solo si el bit & de 8AR7A0/5' es %'%
0+* 8AR7A0/5'$& +i el bit & de 8AR7A0/5' es & se ejecuta estainstrucción # el programa sigue por aquGI.ontin!a el programaJ5+?2 ;5tiqueta a una dirección de programa0.* 8AR7A0/5'$& ;+i el bit & de 8AR7A0/5' es %'% se ejecuta estaotra instrucción # el programa sigue por aquG
-
8/17/2019 Istrucciones PIC 16F84
5/19
I.untin!a el programaJ
n poco de orden:
5s importante lle4ar un poco de orden a la "ora de escribir elprograma$ nos a#udará muc"o:
Al principio 4an los 5E? # los F5*75$ despu
-
8/17/2019 Istrucciones PIC 16F84
6/19
+i buscamos en la carpeta donde instalamos el 3P/A0 (pe .:KArc"i4os deprogramaK3P/A0) la a#uda llamada 587.5C/P$ podemos encontrar unlistado completo de las instrucciones especiales que usa el 3P/A0 # que nospermitirán mejorar nuestros listados$ esta es una muestra Además$ en las"ojas de datos de 3icroc"ip$ 4ienen todas las instrucciones de estos c"ips$qui-ás el lector piense$ porqu< me "e tomado tantas molestias en plasmar aquGtanta información que #a existe$ la ra-ón es que$ no está en castellano(espaLol) o la que "a# es mu# t
-
8/17/2019 Istrucciones PIC 16F84
7/19
instrucción$ por orden alfab
-
8/17/2019 Istrucciones PIC 16F84
8/19
en el registro +BAB?+ se 4en afectados los bits: C (Carr#)$ B (.ero) #el "C ("Ggito Carr#)
+i el resultado de una instrucción A rebasa **$ la bandera C (.arr#) espuesta a '$ si tiene cualquier otro 4alor es &
+i el resultado de una instrucción A es cero &&&& &&&&$ labandera B (.ero) se pone a ' # & si tiene cualquier otro 4alor
/a suma se reali-a en aritm
-
8/17/2019 Istrucciones PIC 16F84
9/19
Primer n!mero: '&&' &&'' I!mero en . anterior a lainstrucción A/WJ +egundo n!mero (F5): '''' &&&& I!mero + 3áscaraJ
Respuesta al )#": '&&' &&&& IAl aplicar la función )#" entreambosJ (Aed)
)#".F 5sto significa: 2peración A producto lógico de . con elarc"i4o 3 I Aed entre W # fJ 8er tambi
-
8/17/2019 Istrucciones PIC 16F84
10/19
puerto 5l resultado es la in4ersa a la instrucción anterior$ el & se sustitu#e por un '
(FSC 5sto significa: 0it Best$ +kip if .lear ( 0it de Best$ +alta si es %&%)
(FSC 55 a 1F/ bit Ca# casi && instrucciones para esta orden$ paracubrir los >N arc"i4os$ cada uno con Q bits (FSC significa$ comprobar elbit identificado en el registro llamado # si es & saltar una instrucción (noejecuta la instrucción que sigue) o afecta los bits de +BAB?+
+e 4e mejor con un ejemplo: (FSC 56/4 es la forma de comprobar si elbit @ en el arc"i4o O es %&%$ si es cero$ salta la próxima instrucción (pasar sinejecutar) # continuar con la posterior
Eti'ueta: (FSC 56/4 ; comprueba si el bit @ es &&$($ Eti'ueta, ; si no es &$ salta "asta 5tiqueta
C)++ "lay ; si es &$ llama a subrutina la#
(FSS 5sto significa: 0it Best$ +kip if +et (0it de Best$ +alta si es %'%)(FSS 55 a 1F/ bit Bambi
-
8/17/2019 Istrucciones PIC 16F84
11/19
orden C)++ se llamará a las subrutinas # al final de cada subrutina debetener una instrucción %E(%# ?na llamada remota puede "acer desubrutina pero esta segunda subrutina no puede llamar otra subrutina
.ada 4e- que se ejecuta una instrucción C)++$ un 4alor de dirección es
colocado (empujado) en la Pila (Stac)$ entonces el micro sabe donde 4ol4erdespu
-
8/17/2019 Istrucciones PIC 16F84
12/19
Afeca !a"s: TO, PD
C$MF 5sto significa: .omplemento del arc"i4o f
C$MF 55 a 1F/5 5l resultado estará en . por el 4alor & detrás de la
comaC$MF 55 a 1F/1 5l resultado estará en 3 5l contenido 3 es
complementado (los &s se cambian a 's # los 's a &s)
"ECF 5sto significa: ecremento del arc"i4o f
"ECF 55 a 1F/5 5l resultado estará en . 5l contenido del arc"i4o 3 esdecrementado # puesto %.%
"ECF 55 a 1F/1 AquG$ el resultado estará en 3 5l contenido del arc"i4o %3 %es decrementado$ significa que es deducido (tomado) ' del arc"i4o +i elarc"i4o es &&&& &&&& esto da la 4uelta a '''' '''' (HH) afectando a labandera B .uando el arc"i4o es &&&& &&&' # se ejecuta una instrucción5.*$ el arc"i4o pasa a &&&& &&&& # la bandera B(cero) del S()(S se ponea '$ en otro caso es &
"ECFSB 5sto significa: 5.rement f$ +kip if 6ero (ecrementa elarc"i4o 3 # salta si es &)
"ECFSB 55 a 1F/5 5l resultado estará en .
"ECFSB 55 a 1F/ 1 5l resultado estará en 3 /a instrucción "ECFSB tiene
muc"os empleos ?n empleo importante está en una subrutina de retardo 5n esta rutina lainstrucción "ECFSB crea un la-o en el que el micro es en4iado a unainstrucción por encima1del1programa # se ejecutará un juego de instruccionesuna # otra 4e-$ esta es una táctica de perdida de tiempo para crear unretardo o afecta al registro +BAB?+
.ada 4e- que el micro llega a "ECFSB$ el contenido del arc"i4o esdecrementado # si el arc"i4o no es cero$ se ejecutará la siguiente instrucciónen el programa /a siguiente instrucción es normalmente 92B2 #
-
8/17/2019 Istrucciones PIC 16F84
13/19
nue4a dirección de memoria de programa a partir de la cual comen-arán aleerse las instrucciones despu
-
8/17/2019 Istrucciones PIC 16F84
14/19
I$%.F 5sto significa: 7nclusi4e $% con el arc"i4o f
I$%.F 55 a 1F/5 5l resultado estará en .
I$%.F 55 a 1F/1 5l resultado estará en 3 5l contenido del registro . es2Red con el arc"i4o 3 $ esto simplemente es una operación %2R% # el objeto de
su reali-ación es cambiar dos o más bits a %'% +i un bit es 2Red con &$ larespuesta no se altera$ si el bit es 2Red con un ' el resultado es ' Afecta albit B del registro +BAB?+
5jemplo: +i el registro W es cargado con '''' &&&& (*&" es una máscara de @ bits altos)# un arc"i4o con un n!mero como &'&& '''& (@R") es 2Red con W$ el resultado es '''' '''& (*5")
M$JF 5sto significa: 3ue4e el contenido del arc"i4o && a '* dentro #fuera del arc"i4o o al W
M$JF 55 a 1F/5 5l contenido del arc"i4o es mo4ido al W 5l resultadoestará en .
M$JF 55 a 1F/1 5l resultado estará en 3 Para esta instrucción 328*&& a '*$' el contenido es mo4ido fuera del arc"i4o # de4uelto a
-
8/17/2019 Istrucciones PIC 16F84
15/19
$P(I$# 5sto significa: .arga registro $P(I$# 5l contenido delregistro . es cargado en el registro $P(I$#
%E(FIE 5sto significa: .uando "a# una interrupción$ R5B?R con 4alor
de lo alto de la Pila # lo deja en el P.%E(FIE .arga el PC con el 4alor que se encuentra en la parte superior
de la pila$ asegurando asG la 4uelta de la interrupción Pone a ' el bit &IE$con el fin de autori-ar o "abilitar de nue4o que se tengan en cuenta lasinterrupciones ($S → PC$ ' → &IE o afecta al registro +BAB?+
%E(+. 5sto significa: %E(%# con /iteral en .
%E(+. 55 a FF 5l registro . es cargado con el 4alor del literal$normalmente de4uel4e un dato procedente de una tabla 5l .ontador de
Programa (P.) es cargado de la cima de la pila (+tack)$ que correspondea la dirección de R5B?R de programa o afecta al registro +BAB?+
%E(%# 5sto significa: Retorno de +ubrutina 5sta instrucción está alfinal de una rutina o subrutina o afecta al registro +BAB?+
%+F 5sto significa: %otar el arc"i4o 3 a 7-quierda con aCarreo (.arr#)
%+F 55 a 1F/5 5l resultado se almacena en .
%+F 55 a 1F/1 Resultado se almacena en 3 5l contenido de un arc"i4o$ esrotado un bit a la i-quierda por la bandera .arr# (acarreo)$ esto requiere de Ndespla-amientos para recuperar el 4alor original del arc"i4o Afecta albit C del S()(S
5l uso de: RLF.....Reg, Destino........; rota los bits de un registro un lugar laizquierda.
+i Reg , b&&&'&''&
espu)
Y,, 0O 0H 0@ 0 0 0' 0& (. Y,, +BAB?+$.)
5sto significa que$ todos los bits de Reg son rotados (despla-ados) unaposición "acia la i-quierda 5l espacio generado a la derec"a de Reg es decir$el bit& (0&) del registro$ es ocupado por el 4alor que tenGa en ese momento elbit . del registro +BAB?+ A su 4e-$ el 0it> (0>) de Reg sale del Registro # serellena con el bit . del registro +BAB?+
Repasemos otra 4e- Reg , b&&&&''&& (." , ') # +BAB?+$. , &
-
8/17/2019 Istrucciones PIC 16F84
16/19
Aplicamos; RLF Reg,F 5ntonces: Reg , b&&&''&&& ('Q" , @) #+BAB?+$. , &
Podemos comprobar que antes de aplicar la R/*$ Reg 4alGa ' en sistemadecimal espu
-
8/17/2019 Istrucciones PIC 16F84
17/19
onde . es el 4alor que tenGa el bit . de +BAB?+ en el momento deejecutar la instrucción RR* 8eamos en detalle cómo trabaja la función RR*:
+abemos que un grupo de Q bits es registro$ o sea: Registro , 0> 0O 0H0@ 0 0 0' 0&
Al aplicar la instrucción: RRF.....Reg,F ocurre que: (+BAB?+$. ,,T .)0> 0O 0H 0@ 0 0 0' ,,T (0& ,,T +BAB?+$.)
5sto significa que todos los bits de Reg son despla-ados una posición "aciala derec"a 5l espacio generado a la i-quierda de Reg$ es decir$ el bit> (0>)de registro$ seráocupado por el 4alor que tenGa en ese momento el bit . delregistro +BAB?+ A su 4e-$ el 0it& (0&) de Reg sale de Reg # rellena el bit .del registro +BAB?+
+upongamos que: Reg , b&&&''&&& ('Q" , @) # +BAB?+$. , &
Al aplicar: RRF Reg,F Reg , b&&&&''&& (." , ') # +BAB?+$. , & AquG$ podemos comprobar que antes de aplicar la RR*$ Reg 4alGa @ en
sistema decimal espu
-
8/17/2019 Istrucciones PIC 16F84
18/19
procesador es puesto en el modo +leep (bajo consumo) con el osciladorparado
Para salir de este estado$ es necesaria una de estas causas:Pro4ocar un %eset acti4ando el 3./R
Por desbordamiento del ."( (Watc"dog) si quedo operati4o en el modoreposo9enerando una interrupción distinta a (M%5 #a que
-
8/17/2019 Istrucciones PIC 16F84
19/19
BR7+ &O ;.argar BR7+ con el 4alor de W
#ota: 5l H&QA sólo tiene O lGneas en el puerto # usa sólo los O bits inferiores +iW es &&&& '&&& todas las lGneas son salida excepto 9P$ #a que 9P sólopuede ser 5BRAA
+i se requiere usar la instrucción BR7+ en un H&QA$ son necesarias lassiguientes @ instrucciones:
0+* &$H ;+eleccionar pagina ' 328/W &Q ;Caga 9P entrada
328W* &O ;.argar el arc"i4o BR7+ (como estamos en page'$ esto no es salidaport O)
0.* &$H ;+eleccionar Page&
>$%+. 5sto significa: 5xclusi4o 2R /iteral con W
>$%+. 55 a FF 5l contenido del registro de . es 2Red con un 4alorliteral (el contenido de W se "ace un 2R lógico con el 4alor literal)$ elresultado es colocado en el registro .
>$%.F 5sto significa: 5xclusi4o 2R W con el arc"i4o f
>$%.F 55 a 1F/5 5l resultado estará en .
>$%.F 55 a 1F/1 5l resultado estará en 3 5xclusi4o 2R del contenidodel registro . con un arc"i4o (&& a '*)
.on esto$ damos por terminada la descripción de las instrucciones para lafamilia PIC 5n próximos artGculos pondremos en acción los conocimientosadquiridos en este artGculo$ sin embargo personalmente recomiendo que se "agauna copia en papel para tener a mano en sus pro#ectos$ esto le facilitará elproceso de programación a#udándole a recordar la función de las instrucciones #ganará tiempo en sus pro#ectos