P. 1
Set de Instrucciones

Set de Instrucciones

|Views: 1.128|Likes:
Publicado porManuel AB

More info:

Published by: Manuel AB on May 16, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

06/20/2013

pdf

text

original

Set de Instrucciones

Microcontroladores PIC I

Conjunto De Instrucciones Del PIC 16F628 (16F628A)
Como ya hemos visto, para que el microcontrolador lleve acabo una tarea, debemos indicarle exactamente que debe hacer, o en otras palabras, debemos escribir el programa que el micro ejecutara. Ya hemos visto varios ejemplos y muchas de las instrucciones del PIC, pero ahora veremos las 35 instrucciones del ensamblador mpasm. Estas 35 instrucciones son las mismas para toda la gama media de los microcontroladores PIC así que si mas adelante se quiere realizar un programa para un PIC 16F877 se usaran las mismas instrucciones. Las instrucciones se clasifican en: Orientadas a registros (18) Orientadas al bit (4) Operaciones de literales y control (13)

INSTRUCCIONES ORIENTADAS A BITS BCF: Borra un bit Borra el bit ‘b’del registro ‘f’ Sintaxis: [etiqueta] BCF f,b

Antes de la instrucción: REG=b’01101101′ Después de la instrucción: REG=b’01101100′ BSF: Activa un bit Activa el bit ‘b’ del registro ‘f’ Sintaxis: [etiqueta] BSF f,b

Antes de la instrucción: REG=b’01001001′ Después de la instrucción: REG=b’01001011′ BTFSC: Checa un bit y salta si es 0 Si el bit “b” del registro “f” es 0, se salta una instrucción y se continúa con la ejecución. Sintaxis: [etiqueta] BTFSC f,b

Todas las instrucciones se demoran en ejecutar un ciclo de maquina con la excepción de las instrucciones de salto que toman dos ciclos Antes de continuar es necesario definir algunos términos que se usaran para explicar las instrucciones: f: cualquier registro del microcontrolador W: registro de trabajo b: posición de un bit en el registro ‘f’ d: destino, puede ser ‘f’ (d=1) o ‘W’ (d=0) etiqueta: grupo de caracteres que marcan el inicio de una parte del programa [ ]: opcional : posición de un bit dentro de un registro

BTFSS: Checa un bit y salta si es 1 Si el bit “b” del registro “f” es 1, se salta una instrucción y se continúa con la ejecución. Sintaxis: [etiqueta] BTFSS f,b

Manuel Alvarado Baldeón

-1-

Los bits del PC se cargan con los bits del registro “STATUS”.Set de Instrucciones Microcontroladores PIC I INSTRUCCIONES ORIENTADAS A CONSTANTES Y DE CONTROL ANDLW: W AND literal Realiza la operación lógica AND entre el registro W y la constante “k”. Los bits TO y PD del RETURN: Regresa de una subrutina El programa regresa de la subrutina y ejecuta la instrucción que sigue a CALL Sintaxis: [etiqueta] RETURN Manuel Alvarado Baldeón -2- . se cargan en los bits del PC y forman la dirección de salto. Los 9 bits de la constante “k” que forman la instrucción. PC se pone a 0. La dirección de retorno se guarda en el stack. Los bits del PC se cargan con los bits del registro de estado. Sintaxis: [etiqueta] GOTO k Antes de la instrucción: W=0xA3 Después de la instrucción: W=0×03 ADDLW: W ADD literal Realiza la suma entre el registro W y la constante “k”. PD GOTO: Salto incondicional Se trata de un salto incondicional. Sintaxis: [label] ANDWL k Flags afectados: Z registro de estado se ponen a “1″. Sintaxis: [label] ADDLW k Flags afectados: Z Antes de la instrucción: PC=0 Después de la instrucción: PC=DESTINO IORLW: W OR literal Se realiza la función lógica OR entre el registro W y la constante “k”. El resultado se almacena en el registro W. Sintaxis: [etiqueta] IORLW k Flags afectados: Z Antes de la instrucción: W=0x50 Después de la instrucción: W=0×73 CALL: Llamada a subrutina Llamada y salto a subrutina. Sintaxis: [etiqueta] CALL k Antes de la instrucción: W=0x9A Después de la instrucción: W=0xBF MOVLW: Carga un literal en W El registro W se carga con el valor de 8 bits expresado mediante la literal “k”. El resultado se almacena en el registro W. El resultado se almacena en el registro W. Sintaxis: [etiqueta] MOVLW k Después de la instrucción: W=0x14 Antes de la instrucción: PC=INICIO Después de la instrucción: PC=DESTINO CLRWDT: Borra el watchdog timer Esta instrucción borra tanto el “watchdog” como el prescaler. Sintaxis: [label] CLRWDT Flags afectados: TO. La constante “k” de 8 bits forma la dirección de salto y se carga en los bits del PC.

El resultado se almacena en el registro W. Sintaxis: [etiqueta] SLEEP Flags afectados: TO. Z SLEEP: Entra en estado de reposo Al salir.d Operación: (W) AND (f) –> (destino) Flags afectados: Z Manuel Alvarado Baldeón -3- . PD.Z RETFIE: Regresa de la rutina de servicio Sintaxis: [etiqueta] RETFIE INSTRUCCIONES ORIENTADAS A REGISTROS ADDWF: Suma W y f Suma el contenido del registro ‘W’ y el registro ‘f’. activa el bit de estado TO y borra el PD. se detiene el oscilador. el resultado se almacena en el registro W. Sintaxis: [etiqueta] SUBLW k Flags afectados: C. DC. Sintaxis: [etiqueta] ANDWF f.k SUBLW: Resta L – W A una constante “k” de 8 bits se le resta el registro W. Si “d” es 1. El resultado es guardado en el mismo registro W.Set de Instrucciones Microcontroladores PIC I Antes de la instrucción: W = 0xB5 Después de la instrucción: W = 0x1A RETLW: Regresa de una subrutina y carga el valor K en W El programa regresa de la subrutina y carga el valor de 8 bits del registro k en el registro W Sintaxis: [etiqueta] RETLW. El WDT y el prescaler se borran . Si “d” es 0. Si ‘d’ es 1 el resultado se almacena en el registro ‘f’.d Operación: (W) + (f) –> (destino) Flags afectados: C. el resultado se almacena en el registro “f”. Si “d” es 0 el resultado se almacena en el registro W. Sintaxis: [etiqueta] ADDWF f.Al entrar en el modo SLEEP. Sintaxis: [etiqueta] XORLW k Flags afectados: Z ANDWF: W AND f Realiza la operación lógica AND entre el registro W y el registro “f”.DC. GPWUF XORLW: W XOR literal Realiza la función lógica OR exclusiva entre el contenido del registro W y la constante “k” de 8 bits.

Si d=0 el resultado se almacena en el registro W.Set de Instrucciones Microcontroladores PIC I ‘f’. Sintaxis: [label] INCF f.d Flags afectados: Z CLRF: Borra un registro Borra el contenido del registro ‘f’ y se activa el flag Z. Z=0 Después de la instrucción: CONT=0×00. Si d=1. Z=1 CLRW: Borra el registro de trabajo W Borra el contenido del registro ‘W’ y se activa el flag Z. Si d=1. Si d=0.d Flags afectados: Z Antes de la instrucción: PORTB=0×9D Después de la instrucción: REG=0×62. Z=1 DECFSZ: Decrementa en 1 y salta si el resultado es 0 El contenido del registro ‘f’ se decrementa. Esta instrucción no tiene operandos. Si d=0. Z=0 Después de la instrucción: CONT=0×02. Z=1 COMF: Complementa el registro f El contenido del registro ‘f’ se complementa. el resultado se almacena en ‘f’.d Flags afectados: Z INCF: Incrementa el registro f Incrementa en uno el contenido del registro ‘f’. Si ‘d=0. Z=1 Manuel Alvarado Baldeón -4- . Si d=1. Sintaxis: [etiqueta] DECF f. el resultado se almacena en W. Sintaxis: [etiqueta] CLRW Flags afectados: Z Antes de la instrucción: W=0×A7 Después de la instrucción: W=0×00.d Flags afectados: Ninguno Antes de la instrucción: REG=0×54 Después de la instrucción: REG=0×00. el resultado se coloca en el registro ‘f’. Sintaxis: [etiqueta] CLRF f Flags afectados: Z Antes de la instrucción: CONT=0×03.W=0x9D DECF: Decrementa f en 1 De decrementa en uno el contenido del registro ‘f’. Sintaxis: [etiqueta] COMF f. Si el resultado es 0. Si d=1 el resultado se almacena en el registro ‘f’. Sintaxis: [etiqueta] DECFSZ f. se salta la siguiente instrucción y se continúa con la ejecución. el resultado se almacena en Antes de la instrucción: CONT=0xFF. el resultado se coloca en el registro W. el resultado se almacena en W.

Sintaxis: [etiqueta] MOVF f. Sintaxis: [etiqueta] IORWF f. el resultado se coloca en el registro W. el resultado se coloca en el registro ‘f’. Si d=1. Si d=0. Si d=1. se salta la siguiente instrucción y se continúa con la ejecución. Sintaxis: [etiqueta] RLF f. el resultado se almacena en el registro ‘f’. El bit de menos peso pasa al carry y el carry se introduce por el bit de más peso de ‘f’. W=0×93 MOVWF: Mover el valor del registro W al registro f El contenido del registro ‘W’ se mueve al registro ‘f’. el resultado queda en el registro ‘f’. C=0 Después de la instrucción: REG=b’11001100′.d Flags afectados: Z Después de la instrucción: W=PORTB RLF: Rota el registro f a la izquierda El contenido del registro ‘f’ se rota una posición a la izquierda. Si d=1. el destino es el registro W. Sintaxis: [etiqueta] MOVWF f Flags afectados: Ninguno Antes de la instrucción: REG=b’11100110′. Si el resultado es 0. Si d=0. Si d=0 el resultado se almacena en el registro W. el destino es el propio registro ‘f’. Si d=0. Sintaxis: [etiqueta] DECFSZ f. Manuel Alvarado Baldeón -5- . el resultado se coloca en el registro W. W=0x15 MOVF: Mover el registro f El contenido del registro ‘f’ se mueve al destino ‘d’. Sintaxis: [etiqueta] RLF f. el resultado se coloca en el registro W.Set de Instrucciones Microcontroladores PIC I INCFSZ: Incrementa en 1 y salta si el resultado es 0 El contenido del registro ‘f’ se incrementa.d Flags afectados: Ninguno W=0x15 Después de la instrucción: PORTB=0x15. Si d=0. El bit de más peso pasa al carry y el carry se introduce por el bit de menos peso de ‘f’. Si d=1.d Flags afectados: Z Antes de la instrucción: REG=0×13.d Flags afectados: C IORWF: W OR f Realiza la operación lógica OR entre el registro W y el registro ‘f’. Si d=1. W=0×91 Después de la instrucción: REG=0×13.d Flags afectados: C Antes de la instrucción: PORTB=??. C=1 RRF: Rota el registro f a la derecha El contenido del registro ‘f’ se rota una posición a la derecha. el resultado queda en el registro ‘f’.

d Flags afectados: C. solo consume un ciclo de reloj Sintaxis: [etiqueta] NOP Antes de la instrucción: REG=0×01. el resultado queda en el registro ‘f’. Antes de la instrucción: REG=0×54 Después de la instrucción: REG=0×45 XORWF: W XOR f Realiza la función lógica OR exclusiva entre el contenido del registro W y el registro ‘f’. el resultado se coloca en el registro W. Si d=1. Si d=0. W=0xB5 NOP: No operación No realiza ninguna operación.d Flags afectados: Z Antes de la instrucción: REG=b’11100110′. W=0xB5 Después de la instrucción: REG=0x1A.Set de Instrucciones Microcontroladores PIC I en el registro ‘f’. Sintaxis: [etiqueta] SWAPF f. Sintaxis: [etiqueta] XORWF f. DC. Si d=1 el resultado se almacena Manuel Alvarado Baldeón -6- . el resultado se almacena en el registro W. Sintaxis: [etiqueta] SUBWF f. C=0 Después de la instrucción: REG=b’01110011′. y estas instrucciones están bien optimizadas para tener una mayor velocidad de trabajo. Si d=0. Si d=1. W=0×02 SWAPF: Intercambio de f El nibble bajo del registro ‘f’ se intercambia con el nibble alto del mismo. C=0 SUBWF: Resta f – W Resta el contenido del registro ‘f’ menos el contenido del registro W. Z Antes de la instrucción: REG=0xAF.d Flags afectados: Ninguno Y estas son las 35 instrucciones que podemos utilizar para programar los microcontroladores PIC. Si d=0. una arquitectura más simple y un código mas compacto. el resultado se almacena en el registro W. W=0×02 Después de la instrucción: REG=0xFF. el resultado se almacena en el registro ‘f’. La razón para que solo se utilicen 35 instrucciones en la programación es que los PIC son microcontroladores RISC.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->