Está en la página 1de 46

INSTITUTO TECNOLGICO

SUPERIOR DE MARTNEZ
DE LA TORRE

Unidad 2.
Instrucciones de microcontrolador
Ing. Luis Alberto Madrid Hernndez
Enero 2015 Agosto 2015
1

INTEGRANTES
lvarez Castro Fred Said
Justo Cabrera Luis Enrique
Mora Perez Carlos Elias
Valencia Mrida Jorge Luis
Vega Barrales Rubn

REPERTORIO DE
INSTRUCCIONES

Instrucciones de carga
Instrucciones aritmticas
Instrucciones lgicas
Instrucciones de bit
Instrucciones de salto
Instrucciones para manejo de subrutinas
Instrucciones especiales

Instrucciones de carga
Las instrucciones de trasferencia de datos son
tpicas de todos los procesadores y su misin
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 b00000000) y el flag z se activa
a 1. esta instruccin tambin se podra
considerar como aritmtica.

Clrf f
(Clear f). El contenido del registro f se borra
(se carga con b00000000) y el flag z se
activa a 1. esta instruccin tambin se podra
considerar como aritmtica.

Movlw k
(move literal to W). El registro W se carga con
el valor de 8 bits de la constante k. ningn 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 operacin es cero.

Movwf f
(Move W to f). Carga el contenido del registro
W al registro f. Ningn flag del registro de
estado es afectado.

Instrucciones de bit
Estas instrucciones pone a nivel lgico 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 funcin del
estado de un bit. Son btfss y btfsc
Aquellas que pueden producir un salto en funcin del
contenido de un registro distinto de cero. Son decfsz
e incfsz.

btfsc f,b
(Bit test f, skip if clear). Esta instruccin se puede actuar de
dos formas:

Si el bit numero b del registro f es 1 la instruccin


que sigue a esta se ejecuta normalmente.
Si el bit numero b del registro f es 0 la instruccin
que sigue a esta se ignora y se salta.

btfss f,b
(Bit test f, skip if set). Esta instruccin actua de forma
contraria ala anterior.
Si el bit numero b del registro f es 0 la instruccin
que sigue a esta se ejecuta normalmente.
Si el bit numero b del registro f es 1 la instruccin
que sigue a esta se ignora y se salta.

decfsz f,d
(Descremen f, skip if 0). Esta instruccin 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. despus de decrementar,
pueden ocurrir dos casos:
Si el resultado en distinto de cero la instruccin que sigue a esta se
ejecuta normalmente
Si el resultado es cero la instruccin que sigue a esta se ignora y se
salta.

Incfsz f,d
(increment f, skip if 0). Esta instruccin 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. Despus de incrementar,
pueden ocurrir dos casos:
Si el resultado es distinto de cero la instruccin que sigue a esta se
ejecuta normalmente.
Si el resultado es cero(por que al incrementarse se ha desbordado
y ha pasado del numero b11111111al b00000000) la instruccin
que sigue a esta se ignora y se salta.

goto k
En casi todos los programas se una la instruccin de salto
incondicional goto k (unconditional branch) que produce un salto a la
direccin del programa indicada por k. La constante k es la direccin
de desino del salto, es decir, la nueva direccin de memoria de
programa a partir de la cual comenzara a leerse las instrucciones
despus de ejecutar la instruccin goto. As pues, esta instruccin
simplemente carga la constante k en el contador del programa (PC).

Instrucciones aritmtica

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 operacin
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
operacin en cero, es decir, si hay desbordamiento al
pasar de b11111111a b00000000.

Instrucciones lgicas
Las operaciones lgicas se pueden
realizar son la and, or, or exclusiva,
inversin(o complemento), la rotacin o
intercambio de nibbles.

andlw k
(AND literal with W) efecta la operacin AND
lgica 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
operacin es cero

andwf f,d
(AND W with f). Efecta la operacin AND lgica 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 operacin
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 operacin
en cero.

iorlw k
(inclusive OR literal with W). Efecta la
operacin OR lgica 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 operacin en cero.

iorwf f,d
(inclusive OR w with f). Efecta la operacin
OR lgica 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
operacin es cero.

rlf f,d
(Rtate Left through carry).Rotacin 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 posicin de bit de menor peso y el bit
de mayor peso para al carry.

rrf f,d
(rotate right f through carry). Rotacin 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 funcin
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 operacin es cero.

Xorwf f,d
(exclusive OR W with f). Realiza la funcin
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 operacin
es cero.

Instrucciones de subrutinas

Call y return

La localizacin de una subrutina se identifica por la direccin de su


primera instruccin. El efecto de la instruccin call es provocar que la
ejecucin se transfiera ala subrutina. De esta se desprende que la
mencionada instruccin contenga la direccin de la primera posicin de
memoria ocupada por la subrutina.
Por otro lado, la instruccin return que provoca el retorno al programa
principal, debe recordar la localizacin de la instruccin que sigue call.
Esto es posible solo si la direccin de esa instruccin ha sido
preservada en una zona de memoria, que no es otra que la pila.

retlw
La instruccin 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 caracterstica 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


resolucin de tablas de verdad.

retfie
La instruccin retfie utilizada al final de la subrutina de interrupcin es
idntica a un retorno de subrutina return. Adems coloca
automticamente a 1 el bit GIE, volviendo a habilitar las
interrupciones. Al terminar la subrutina de servicio ala interrupcin el
programa principal fue interrumpid. Es importante recalcar que la
subrutina de atencin ala interrupcin debe situarse a partir de la
direccin 0x004 y acabar con la instruccin retfie.

Instrucciones especiales

nop
La instruccin nop (no operacin) no realiza
operacin 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 instruccin tarda un ciclo maquina
en ejecutarse. As, para un sistema con un
cristal de cuarzo de 4MHz tendr una duracin
de 1us(4 ciclos de reloj)

sleep

Clrwdt