unidad 2 microcontroladores

Post on 24-Dec-2015

10 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

micro controladores

TRANSCRIPT

1

INSTITUTO TECNOLÓGICO SUPERIOR DE MARTÍNEZ

DE LA TORRE

Unidad 2. Instrucciones de microcontrolador

Ing. Luis Alberto Madrid Hernández Enero 2015 – Agosto 2015

INTEGRANTES

Álvarez Castro Fred Said

Justo Cabrera Luis Enrique

Mora Perez Carlos Elias

Valencia Mérida Jorge Luis

Vega Barrales Rubén

REPERTORIO DE INSTRUCCIONES

• Instrucciones de carga• Instrucciones aritméticas• Instrucciones lógicas• Instrucciones de bit• Instrucciones de salto• Instrucciones para manejo de subrutinas• Instrucciones especiales

Instrucciones de carga

Las instrucciones de trasferencia de datos son típicas de todos los procesadores y su misión es transferir el contenido un registro fuente(f) a un destino (d) o bien cargar el destino con una constante. En los micro controladores PIC todos los datos residen en posiciones de la memoria de datos y en el registro de trabajo W

clrw

(Clear W). El contenido del registro W se borra (se carga con b´00000000’) y el flag z se activa a 1. esta instrucción también se podría considerar como aritmética.

Clrf f

(Clear f). El contenido del registro f se borra (se carga con b´00000000’) y el flag z se activa a 1. esta instrucción también se podría considerar como aritmética.

Movlw k

(move literal to W). El registro W se carga con el valor de 8 bits de la constante k. ningún flag del registro de estado es afectado.

Movf f,d(Move f). El contenido del registro f se carga en el registro destino dependiendo del valor de ‘d’. Si d=0 el destino en el W, si d=1 se guarda en el mismo registro. El flag z del registro STATUS queda afectado: Z se activa a 1 si el resultado de la operación es cero.

Movwf f

(Move W to f). Carga el contenido del registro W al registro ´f´. Ningún flag del registro de estado es afectado.

Instrucciones de bit

Estas instrucciones pone a nivel lógico ´0´ ó ´1´

Un determinado bit de un registro de la memoria de datos

bcf f,b

(bit clear f). Pone a cero el bit ´b´ del registro f.

bsf f,b

(bit set f). Pone a uno el bit ´b´ del registro f.

Instrucciones de salto

Las instrucciones de salto de clasifcan en dos grupos:

• Aquellas que pueden producir el salto en función del estado de un bit. Son btfss y btfsc

• Aquellas que pueden producir un salto en función del contenido de un registro distinto de cero. Son decfsz e incfsz.

btfsc f,b(Bit test f, skip if clear). Esta instrucción se puede actuar de dos formas: Si el bit numero ´b´ del registro ´f´ es ´1´ la instrucción

que sigue a esta se ejecuta normalmente. Si el bit numero ´b´ del registro ´f´ es ´0´ la instrucción

que sigue a esta se ignora y se salta.

btfss f,b(Bit test f, skip if set). Esta instrucción actua de forma contraria ala anterior. Si el bit numero ´b´ del registro ´f´ es ´0´ la instrucción

que sigue a esta se ejecuta normalmente. Si el bit numero ´b´ del registro ´f´ es ´1´ la instrucción

que sigue a esta se ignora y se salta.

decfsz f,d(Descremen f, skip if 0). Esta instrucción decrementa en una unidad el contenido del registro ‘f’. Almacena el resultado en W si d=0 (en cuyo caso ‘f’ no varia) y en el registro f si d=1. después de decrementar, pueden ocurrir dos casos:

Si el resultado en distinto de cero la instrucción que sigue a esta se ejecuta normalmente

Si el resultado es cero la instrucción que sigue a esta se ignora y se salta.

Incfsz f,d(increment f, skip if 0). Esta instrucción incrementa en una unidad el contenido del registro f. almacena el resultado en W si d=0 (en cuyo caso f no varia) y en el registro f si d=1. Después de incrementar, pueden ocurrir dos casos: Si el resultado es distinto de cero la instrucción que sigue a esta se

ejecuta normalmente. Si el resultado es cero(por que al incrementarse se ha desbordado

y ha pasado del numero b´11111111´al b’00000000’) la instrucción que sigue a esta se ignora y se salta.

goto kEn casi todos los programas se una la instrucción de salto incondicional goto k (unconditional branch) que produce un salto a la dirección del programa indicada por ¨k¨. La constante ´k´ es la dirección de desino del salto, es decir, la nueva dirección de memoria de programa a partir de la cual comenzara a leerse las instrucciones después de ejecutar la instrucción goto. Así pues, esta instrucción simplemente carga la constante k en el contador del programa (PC).

Instrucciones aritmética

Instrucciones de suma

addlw k

(Add literal to W).Suma el contenido del registro W con el literal o constante ´k´. Almacena el resultado en W. si se produce un acarreo el flag C se pone a ´1´.

addwf f,d

(Add W and f). Suma el contenido del registro W al contenido del registro f. Almacena el resultado en W si d=0 y en el registro f si d=1. si se produce un acarreo el flag C se pone a ´1´.

Instrucciones de resta

sublw k

(subtract W from literal). Resta (en complemento2)el contenido de la constante ´k´ menos el contenido del registro W y almacena el resultado en w.

sublw f,d

(subtract W from f). Resta (en complemento 2) el contenido del registro f menos el contenido del registro W. almacena el resultado en w si d=0 y en f si d=1.

decf f,d

(decrement f). El contenido del registro f se decrementa en una unidad. Almacena el resultado en w si d=0 (en cuyo caso f no varia) y en el registro f si d=1. el flag Z se activa a 1 si el resultado de la operación en cero

incf f,d

(increment f). El contenido del registro f se incrementa en una unidad almacena el resultado en W si d=0 (en cuyo caso f no varia) y en el registro f si d=1. el flag Z se activa a 1 si el resultado de la operación en cero, es decir, si hay desbordamiento al pasar de b´11111111´a b´00000000´.

Instrucciones lógicas

Las operaciones lógicas se pueden realizar son la and, or, or exclusiva, inversión(o complemento), la rotación o intercambio de nibbles.

andlw k

(AND literal with W) efectúa la operación AND lógica entre el contenido del registro W y la constante ´k´. Almacena el resultado en W. El flag Z se activa a ´1´ si el resultado de la operación es cero

andwf f,d(AND W with f). Efectúa la operación AND lógica entre el contenido del registro W y el contenido del registro f. almacena el resultado en W si d=0 y en el registro f si d=1. el flag Z se activa a 1 si el resultado de la operación en cero.

Comf f,d

(Complemet f). Realiza un complemento del contenido del registro f bit a bit invirtiendo su valor, es decir, cambia los unos por ceros y viceversa. Almacena el resultado en W si d=0(en cuyo caso f no varia) y en el registro f si d=1.El flag Z se activa a 1 si el resultado de la operación en cero.

iorlw k

(inclusive OR literal with W). Efectúa la operación OR lógica entre el contenido del registro W y la constante k. Almacena el resultado en W. El flag Z se activa a 1 si el resultado de la operación en cero.

iorwf f,d

(inclusive OR w with f). Efectúa la operación OR lógica entre el contenido del registro W y el contenido del registro f. Almacena el resultado en W si d=0 y en el registro f si d=1. El flag Z se activa a 1 si el resultado de la operación es cero.

rlf f,d(Rótate Left through carry).Rotación de un bit ala izquierda del registro f pasando por el bit de acarreo C. El desplazamiento en cerrado, formando un anillo con el bit c del registro STATUS. Si d=1 el resultado se almacena en f i d=0 el resultado se almacena en W. el contenido del carry pasa a la posición de bit de menor peso y el bit de mayor peso para al carry.

rrf f,d

(rotate right f through carry). Rotación de un bit ala derecha del registro f, pasando por el bit e acarreo C. similar que el anterior pero el desplazamiento es ala derecha tal como se ilustra en la figura anterior.

swapf f,d

(swap nibbles in f). Los cuatro bis de mas peso del registro f se intercambian con los 4 bits de menor peso del mismo registro f. si d=0 el resultado se almacena en W, si d=1 el resultado se almacena en f.

xorlw k

(exclusive OR literal wih W). Realiza la función OR-Exclusiva entre el contenido del registro W y la constante k de 8 bits. El resultado se almacena en W. el flag Z se activa a 1 si el resultado de la operación es cero.

Xorwf f,d

(exclusive OR W with f). Realiza la función OR-Exclusiva entre el contenido del registro W y el contenido del registro f. almacena el resultado en f si d=1 y en w si d=0 el flag Z se activa a 1 si el resultado de la operación es cero.

Instrucciones de subrutinas

Call y return La localización de una subrutina se identifica por la dirección de su primera instrucción. El efecto de la instrucción call es provocar que la ejecución se transfiera ala subrutina. De esta se desprende que la mencionada instrucción contenga la dirección de la primera posición de memoria ocupada por la subrutina.

Por otro lado, la instrucción return que provoca el retorno al programa principal, debe recordar la localización de la instrucción que sigue call. Esto es posible solo si la dirección de esa instrucción ha sido preservada en una zona de memoria, que no es otra que la pila.

retlwLa instrucción retlw (return with literal in W). Funciona de forma similar que return, produce el retorno de una subrutina pero con un valor en el registro W. dicha característica es de suma importancia cuando se desea acceder a tablas de datos en la memoria del programa

Una de las mayores aplicaciones de manejo de la tabla de daos, es la resolución de tablas de verdad.

retfieLa instrucción retfie utilizada al final de la subrutina de interrupción es idéntica a un retorno de subrutina return. Además coloca automáticamente a 1 el bit GIE, volviendo a habilitar las interrupciones. Al terminar la subrutina de servicio ala interrupción el programa principal fue interrumpid. Es importante recalcar que la subrutina de atención ala interrupción debe situarse a partir de la dirección 0x004 y acabar con la instrucción retfie.

Instrucciones especiales

nop

La instrucción nop (no operación) no realiza operación alguna. En realidad consume un ciclo maquina sin hacer nada. Se utiliza para hacer gastar tiempo al microcontrolador sin alterar el estado de los registros ni de los Flags. Esta instrucción tarda un ciclo maquina en ejecutarse. Así, para un sistema con un cristal de cuarzo de 4MHz tendrá una duración de 1us(4 ciclos de reloj)

sleep

Clrwdt

top related