Sie sind auf Seite 1von 8

Estas 35 instrucciones son las mismas para toda la gama media de los microcontroladores pic as que si ms adelante se quiere

realizar un programa para un pic diferente se usaran las mismas instrucciones. Antes de continuar es necesario definir algunos trminos que se usaran para explicar las instrucciones: f: cualquier registro del microcontrolador W: registro de traba o b: posicion de un bit en el registro !f! d: destino" puede ser !f! #d$%& o !W! #d$'& etiqueta: grupo de caracteres que marcan el inicio de una parte del programa (): opcional : posicion de un bit dentro de un registro Instrucciones orientadas a registros A**W+: ,uma W - f ,uma el contenido del registro !W! - el registro !f!. ,i .d. es '" el resultado se almacena en el registro W. ,i !d! es % el resultado se almacena en el registro !f!. ,intaxis: (etiqueta) A**W+ f"d /peraci0n: #W& 1 #f& 223 #destino& +lags afectados: 4" *4" 5 E emplo: A**W+ 6E7"% Antes de la instrucci0n: W$'x'3" 6E7$'x'8 *espus de la instrucci0n: W$'x'3" 6E7$'x'9 A:*W+: #W A:* f& 6ealiza la operaci0n l0gica A:* entre el registro W - el registro .f.. ,i .d. es ' el resultado se almacena en el registro W. ,i .d. es %" el resultado se almacena en el registro .f.. ,intaxis: (etiqueta) A:*W+ f"d /peraci0n: #W& A:* #f& 223 #destino& +lags afectados: 5 E emplo: A:*W+ 6E7"% Antes de la instrucci0n: W$'x%9" 6E7$ 'x4; *espus de la instrucci0n: W$'x%9" 6E7$ 'x'; 4<6+: #=orra un registro& =orra el contenido del registro !f! - se acti>a el flag 5. ,intaxis: (etiqueta) 4<6+ f +lags afectados: 5 E emplo: 4<6+ 6E7 Antes de la instrucci0n: 6E7$'x58 *espus de la instrucci0n: 6E7$'x''" 5$%

4<6W: #=orra el registro de traba o W& =orra el contenido del registro !W! - se acti>a el flag 5. Esta instruccion no tiene operandos. ,intaxis: (etiqueta) 4<6W +lags afectados: 5 E emplo: 4<6W Antes de la instrucci0n: W$'x58 *espus de la instrucci0n: W$'x''" 5$%

4/?+ #4omplementa el registro f& El contenido del registro !f! se complementa. ,i d$' el resultado se almacena en el registro W. ,i d$% el resultado se almacena en el registro !f!. ,intaxis: (etiqueta) 4/?+ f"d +lags afectados: 5 E emplo: 4/?+ 6E7"' Antes de la instrucci0n: 6E7$'x%3 *espus de la instrucci0n: 6E7$'x%3" W$'xE4

*E4+: #*ecrementa f en %& *e decrementa en uno el contenido del registro !f!. ,i d$'" el resultado se almacena en W. ,i d$%" el resultado se almacena en !f!. ,intaxis: (etiqueta) *E4+ f"d +lags afectados: 5 E emplo: *E4 4/:@" % Antes de la instrucci0n: 4/:@$'x'%" 5$' *espus de la instrucci0n: 4/:@$'x''" 5$%

*E4+,5: #*ecrementa en % - salta si el resultado es '& El contenido del registro !f! se decrementa. ,i !d$'" el resultado se coloca en el registro W. ,i d$%" el resultado se coloca en el registro !f!. ,i el resultado es '" se salta la siguiente instrucci0n - se continAa con la e ecuci0n. ,intaxis: (etiqueta) *E4+,5 f"d +lags afectados: :inguno

B:4+: #Bncrementa el registro f& Bncrementa en uno el contenido del registro !f!. ,i d$'" el resultado se almacena en W. ,i d$%" el resultado se almacena en !f!. ,intaxis: (label) B:4+ f"d +lags afectados: 5 E emplo: B:4+ 4/:@"% Antes de la instrucci0n: 4/:@$'x++" 5$' *espus de la instrucci0n: 4/:@$'x''" 5$%

B:4+,5: # Bncrementa en % - salta si el resultado es '& El contenido del registro !f! se incrementa. ,i d$'" el resultado se coloca en el registro W. ,i d$%" el resultado se coloca en el registro !f!. ,i el resultado es '" se salta la siguiente instrucci0n - se continAa con la e ecuci0n. ,intaxis: (etiqueta) *E4+,5 f"d +lags afectados: :inguno

B/6W+: #W /6 f& 6ealiza la operaci0n l0gica /6 entre el registro W - el registro !f!. ,i d$' el resultado se almacena en el registro W. ,i d$%" el resultado se almacn en el registro !f!. ,intaxis: (etiqueta) B/6W+ f"d +lags afectados: 5 E emplo: B/6W+ 6E7"' Antes de la instrucci0n: 6E7$'x%3" W$'xC% *espus de la instrucci0n: 6E7$'x%3" W$'xC3

?/D+: # ?o>er el registro f& El contenido del registro !f! se mue>e al destino !d!. ,i d$'" el destino es el registro W. ,i d$%" el destino es el propio registro !f!. ,intaxis: (etiqueta) ?/D+ f"d +lags afectados: 5 E emplo: ?/D+ 6E7"' *espus de la instrucci0n: W$6E7

6<+: #6ota el registro f a la izquierda& El contenido del registro !f! se rota una posici0n a la izquierda. El bit de ms peso pasa al carr- el carr- se introduce por el bit de menos peso de !f!. ,i d$'" el resultado se coloca en el registro W. ,i d$%" el resultado queda en el registro !f!. ,intaxis: (etiqueta) 6<+ f"d +lags afectados: 4 E emplo: 6<+ 6E7"% Antes de la instrucci0n: 6E7$b!%%%''%%'!" 4$' *espus de la instrucci0n: 6E7$b!%%''%%''!" 4$%

66+: # 6ota el registro f a la derecEa& El contenido del registro !f! se rota una posici0n a la derecEa. El bit de menos peso pasa al carr- el carr- se introduce por el bit de ms peso de !f!. ,i d$'" el resultado se coloca en el registro W. ,i d$%" el resultado queda en el registro !f!. ,intaxis: (etiqueta) 6<+ f"d +lags afectados: 4 E emplo: 6<+ 6E7"% Antes de la instrucci0n: 6E7$b!%%%''%%'!" 4$' *espus de la instrucci0n: 6E7$b!'%%%''%%!" 4$'

,F=W+: #6esta f G W& 6esta el contenido del registro !f! menos el contenido del registro W. ,i d$'" el resultado se almacena en el registro W. ,i d$%" el resultado se almacena en el registro !f!. ,intaxis: (etiqueta) ,F=W+ f"d +lags afectados: 4" *4" 5 E emplo: ,F=W+ 6E7"% Antes de la instrucci0n: 6E7$'x'%" W$'x'; *espus de la instrucci0n: 6E7$'x++" W$'x';

,WAH+: # Bntercambio de f& El nibble ba o del registro !f! se intercambia con el nibble alto del mismo. ,i d$'" el resultado se coloca en el registro W. ,i d$%" el resultado queda en el registro !f!. ,intaxis: (etiqueta) ,WAH+ f"d +lags afectados: :inguno E emplo: ,WAH+ 6E7"% Antes de la instrucci0n: 6E7$'x58 *espus de la instrucci0n: 6E7$'x85

I/6W+: #W I/6 f& 6ealiza la funci0n l0gica /6 exclusi>a entre el contenido del registro W - el registro !f!. ,i d$'" el resultado se almacena en el registro W. ,i d$% el resultado se almacena en el registro !f!. ,intaxis: (etiqueta) I/6W+ f"d +lags afectados: 5 E emplo: I/6W+ 6E7"% Antes de la instrucci0n: 6E7$'xA+" W$'x=5 *espus de la instrucci0n: 6E7$'x%A" W$'x=5

:/H: #:o operaci0n& :o realiza ninguna operaci0n" solo consume un ciclo de relo ,intaxis: (etiqueta) :/H

INSTRUCCIONES ORIENTADAS A BITS: =4+: #=orra un bit& =orra el bit !b!del registro !f! ,intaxis: (etiqueta) =4+ f"b E emplo: =4+ 6E7"' Antes de la instrucci0n: 6E7$b!'%%'%%'%! *espus de la instrucci0n: 6E7$b!'%%'%%''! =,+: # Acti>a un bit& Acti>a el bit !b! del registro !f! ,intaxis: (etiqueta) =,+ f"b E emplo: =,+ 6E7"; Antes de la instrucci0n: 6E7$b!'%''%''%! *espus de la instrucci0n: 6E7$b!'%''%'%%! =@+,4: #4Eeca un bit - salta si es '& ,i el bit .b. del registro .f. es '" se salta una instrucci0n - se continAa con la e ecuci0n. ,intaxis: (etiqueta) =@+,4 f"b =@+,,: #4Eeca un bit - salta si es %& ,i el bit .b. del registro .f. es %" se salta una instrucci0n - se continAa con la e ecuci0n. ,intaxis: (etiqueta) =@+,, f"b

INSTRUCCIONES ORIENTADAS A CONSTANTES Y DE CONTROL A:*<W: #W A:* literal& 6ealiza la operaci0n l0gica A:* entre el registro W - la constante .J.. El resultado se almacena en el registro W. ,intaxis: (label) A:*W< J +lags afectados: 5 E emplo: A:*<W 'x5+ Antes de la instrucci0n: W$'xA3 *espus de la instrucci0n: W$'x'3

4A<<: #<lamada a subrutina& <lamada - salto a subrutina. <a direcci0n de retorno se guarda en el stacJ. <a constante .J. de K bits forma la direcci0n de salto - se carga en los bits del H4. <os bits del H4 se cargan con los bits del registro .,@A@F,.. H4 se pone a '. ,intaxis: (etiqueta) 4A<< J E emplo: B:B4B/ 4A<< *E,@B:/ Antes de la instrucci0n: H4$B:B4B/ *espus de la instrucci0n: H4$*E,@B:/

4<6W*@: #=orra el LatcEdog timer& Esta instrucci0n borra tanto el .LatcEdog. como el prescaler. <os bits @/ - H* del registro de estado se ponen a .%.. ,intaxis: (label) 4<6W*@ +lags afectados: @/" H*

7/@/: #,alto incondicional& ,e trata de un salto incondicional. <os C bits de la constante .J. que forman la instrucci0n" se cargan en los bits del H4 - forman la direcci0n de salto. <os bits del H4 se cargan con los bits del registro de estado. ,intaxis: (etiqueta) 7/@/ J E emplo: B:B4B/ 7/@/ *E,@B:/ Antes de la instrucci0n: H4$' *espus de la instrucci0n: H4$*E,@B:/

B/6<W: #W /6 literal& ,e realiza la funci0n l0gica /6 entre el registro W - la contante .J.. El resultado se almacena en el registro W. ,intaxis: (etiqueta) B/6<W J +lags afectados: 5 E emplo: B/6<W /x35 Antes de la instrucci0n: W$'xCA *espus de la instrucci0n: W$'x=+

?/D<W: #4arga un literal en W& El registro W se carga con el >alor de K bits expresado mediante la literal .J.. ,intaxis: (etiqueta) ?/D<W J E emplo: ?/D<W 'x5A *espus de la instrucci0n: W$'x5A

6E@F6:: #6egresa de una subrutina& El programa regresa de la subrutina - e ecuta la instrucci0n que sigue a 4A<< ,intaxis: (etiqueta) 6E@F6:

6E@<W: 6egresa de una subrutina - carga el >alor M en W El programa regresa de la subrutina - carga el >alor de K bits del registro J en el registro W ,intaxis: (etiqueta) 6E@<W" J E emplo: 6E@<W" 'x85 Antes de la instruccion: W$xx *espus de la instrucci0n: W$'x85

6E@+BE: #6egresa de la rutina de ser>icio& ,intaxis: (etiqueta) 6E@+BE

,<EEH: #Entra en estado de reposo& Al salir" acti>a el bit de estado @/ - borra el H*. El W*@ - el prescaler se borran. Al entrar en el modo ,<EEH" se detiene el oscilador. ,intaxis: (etiqueta) ,<EEH +lags afectados: @/" H*" 7HWF+

I/6<W: # W I/6 literal& 6ealiza la funci0n l0gica /6 exclusi>a entre el contenido del registro W - la constante .J. de K bits. El resultado se almacena en el registro W. ,intaxis: (etiqueta) I/6<W J +lags afectados: 5 E emplo: I/6<W 'xA+ Antes de la instrucci0n: W $ 'x=5 *espus de la instrucci0n: W $ 'x%A

,F=<W: #6esta < G W& A una constante .J. de K bits se le resta el registro W. El resultado es guardado en el mismo registro W. ,intaxis: (etiqueta) ,F=<W J +lags afectados: 4"*4"5

?/DW+: #?o>er el >alor del registro W al registro f& El contenido del registro NWO se mue>e al registro NfO. ,intaxis: (etiqueta) ?/DW+ f +lags afectados: :inguno E emplo: ?/DW+ 6E7 Antes de la instrucci0n: 6E7$'x'3" W$'xA8 *espus de la instrucci0n: 6E7$'xA8" W$'xA8

P estas son las 35 instrucciones que podemos utilizar para programar los microcontroladores HB4. <a raz0n para que solo se utilicen 35 instrucciones en la programaci0n es que los HB4 son microcontroladores 6B,4" - estas instrucciones estn bien optimizadas para tener una ma-or >elocidad de traba o" una arquitectura ms simple - un c0digo mas compacto.

Das könnte Ihnen auch gefallen