46
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

Unidad 2 Microcontroladores

Embed Size (px)

DESCRIPTION

micro controladores

Citation preview

Page 1: Unidad 2 Microcontroladores

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

Page 2: Unidad 2 Microcontroladores

INTEGRANTES

Álvarez Castro Fred Said

Justo Cabrera Luis Enrique

Mora Perez Carlos Elias

Valencia Mérida Jorge Luis

Vega Barrales Rubén

Page 3: Unidad 2 Microcontroladores

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

Page 4: Unidad 2 Microcontroladores

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

Page 5: Unidad 2 Microcontroladores

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.

Page 6: Unidad 2 Microcontroladores

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.

Page 7: Unidad 2 Microcontroladores

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.

Page 8: Unidad 2 Microcontroladores

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.

Page 9: Unidad 2 Microcontroladores

Movwf f

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

Page 10: Unidad 2 Microcontroladores

Instrucciones de bit

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

Un determinado bit de un registro de la memoria de datos

Page 11: Unidad 2 Microcontroladores

bcf f,b

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

Page 12: Unidad 2 Microcontroladores

bsf f,b

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

Page 13: Unidad 2 Microcontroladores

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.

Page 14: Unidad 2 Microcontroladores

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.

Page 15: Unidad 2 Microcontroladores

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.

Page 16: Unidad 2 Microcontroladores

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.

Page 17: Unidad 2 Microcontroladores

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.

Page 18: Unidad 2 Microcontroladores

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).

Page 19: Unidad 2 Microcontroladores

Instrucciones aritmética

Page 20: Unidad 2 Microcontroladores

Instrucciones de suma

Page 21: Unidad 2 Microcontroladores

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´.

Page 22: Unidad 2 Microcontroladores

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´.

Page 23: Unidad 2 Microcontroladores

Instrucciones de resta

Page 24: Unidad 2 Microcontroladores

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.

Page 25: Unidad 2 Microcontroladores

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.

Page 26: Unidad 2 Microcontroladores

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

Page 27: Unidad 2 Microcontroladores

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´.

Page 28: Unidad 2 Microcontroladores

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.

Page 29: Unidad 2 Microcontroladores

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

Page 30: Unidad 2 Microcontroladores

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.

Page 31: Unidad 2 Microcontroladores

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.

Page 32: Unidad 2 Microcontroladores

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.

Page 33: Unidad 2 Microcontroladores

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.

Page 34: Unidad 2 Microcontroladores

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.

Page 35: Unidad 2 Microcontroladores

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.

Page 36: Unidad 2 Microcontroladores

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.

Page 37: Unidad 2 Microcontroladores

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.

Page 38: Unidad 2 Microcontroladores

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.

Page 39: Unidad 2 Microcontroladores

Instrucciones de subrutinas

Page 40: Unidad 2 Microcontroladores

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.

Page 41: Unidad 2 Microcontroladores

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.

Page 42: Unidad 2 Microcontroladores

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.

Page 43: Unidad 2 Microcontroladores

Instrucciones especiales

Page 44: Unidad 2 Microcontroladores

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)

Page 45: Unidad 2 Microcontroladores

sleep

Page 46: Unidad 2 Microcontroladores

Clrwdt