Anda di halaman 1dari 47

Microcontroladores PIC I

SET D E I N STRUCCI ON ES D EL PI C

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

Re pe r t or io de I n st r u ccion e s
Las instrucciones se clasifican en: orientadas a registros (18) orientadas al bit (4) operaciones de literales y control (13)

Todas las instrucciones se demoran en ejecutar un ciclo de maquina con la excepcin de las instrucciones de salto que toman dos ciclos

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

Re pe r t or io de I n st r u ccion e s

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

Se t de I n st r u ccion e s
Ahora veremos las 35 instrucciones del ensamblador mpasm Estas 35 instrucciones son las mismas para toda la gama media de los microcontroladores PIC Cada una se ejecuta en un ciclo de instruccin, excepto aquellas que nos generan saltos en la memoria del programa.
6
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

Antes de continuar es necesario definir algunos trminos que se usaran para explicar las instrucciones: f: cualquier registro del microcontrolador W : registro de trabajo b: posicion de un bit en el registro f d: destino, puede ser f (d=1) o W (d=0) e t iqu e t a : grupo de caracteres que marcan el inicio de una parte del programa
7
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

BCF: Bor r a u n bit


Borra el bit b del registro f Sin t a x is: [etiqueta] BCF f,b Ej e m plo:

Ant es de la inst ruccin: REG=b 01101101 Despus de la inst ruccin: REG=b 01101100

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

BSF: Act iva u n bit


Activa el bit b del registro f Sin t a x is: [etiqueta] BSF f,b Ej e m plo:

Ant es de la inst ruccin: REG=b 01001001 Despus de la inst ruccin: REG=b 01001011

10

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

BTFSC: Ch e ca u n bit y sa lt a si e s 0
Si el bit b del registro f es 0, se salta una instruccin y se contina con la ejecucin. Sin t a x is: [etiqueta] BTFSC f,b Ej e m plo:

11

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

BTFSS: Ch e ca u n bit y sa lt a si e s 1
Si el bit b del registro f es 1, se salta una instruccin y se contina con la ejecucin. Sin t a x is: [etiqueta] BTFSS f,b Ej e m plo:

12

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

AN D LW : W AN D lit e r a l
Realiza la operacin lgica AND entre el registro W y la constante k . El resultado se almacena en el registro W. Sin t a x is: [label] ANDLW k Flags afectados: Z Ej e m plo:

Ant es de la inst ruccin: W=0xA3 Despus de la inst ruccin: W=003


14
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

AD D LW : W AN D lit e r a l
Realiza la suma entre el registro W y la constante k . El resultado se almacena en el registro W. Sin t a x is: [label] ADDLW k Flags afectados: Z Ej e m plo:

Ant es de la inst ruccin: W=0x50 Despus de la inst ruccin: W=073


15
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

CALL: Lla m a da a su br u t in a
Llamada y salto a subrutina. La direccin de retorno se guarda en el stack. La constante k de 8 bits forma la direccin de salto y se carga en los bits del PC. Los bits del PC se cargan con los bits del registro STATUS . PC se pone a 0. Sin t a x is: [etiqueta] CALL k Ej e m plo:

Ant es de la inst ruccin: PC=INICIO Despus de la inst ruccin: PC=DESTINO


16
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

CLRW D T: Bor r a e l w a t ch dog t im e r


Esta instruccin borra tanto el watchdog como el prescaler. Los bits TO y PD del registro de estado se ponen a 1 . Sin t a x is: [label] CLRWDT Flags afectados: TO, PD

17

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

GOTO: Sa lt o in con dicion a l


Se trata de un salto incondicional. Los 9 bits de la constante k que forman la instruccin, se cargan en los bits del PC y forman la direccin de salto. Los bits del PC se cargan con los bits del registro de estado. Sin t a x is: [etiqueta] GOTO k Ej e m plo:

Ant es de la inst ruccin: PC=0 Despus de la inst ruccin: PC=DESTINO


18
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

I ORLW : W OR lit e r a l
Se realiza la funcin lgica OR entre el registro W y la contante k . El resultado se almacena en el registro W. Sin t a x is: [etiqueta] IORLW k Flags afectados: Z Ej e m plo:

Ant es de la inst ruccin: W=0x9A Despus de la inst ruccin: W=0xBF


19
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

M OVLW : Ca r ga u n lit e r a l e n W
El registro W se carga con el valor de 8 bits expresado mediante la literal k . Sin t a x is: [etiqueta] MOVLW k Ej e m plo: MOVLW .20

Despus de la inst ruccin: W=0x14

20

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

RETURN : Re gr e sa de u n a su br u t in a
El programa regresa de la subrutina y ejecuta la instruccion que sigue a CALL Sin t a x is: [etiqueta] RETURN

21

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

RETLW : Re gr e sa de u n a su br u t in a y
ca r ga e l va lor K e n W
El programa regresa de la subrutina y carga el valor de 8 bits del registro k en el registro W Sin t a x is: [etiqueta] RETLW,k Ej e m plo:

22

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

RETFI E: Re gr e sa de la r u t in a de
se r vicio
Sin t a x is: [etiqueta] RETFIE

23

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

SLEEP: En t r a e n e st a do de r e poso
Al salir, activa el bit de estado TO y borra el PD. El WDT y el prescaler se borran.Al entrar en el modo SLEEP, se detiene el oscilador. Sin t a x is: [etiqueta] SLEEP Flags afectados: TO, PD, GPWUF

24

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

XORLW : W XOR lit e r a l


Realiza la funcin lgica OR exclusiva entre el contenido del registro W y la constante k de 8 bits. El resultado se almacena en el registro W. Sin t a x is: [etiqueta] XORLW k Flags afectados: Z Ej e m plo:

Antes de la instruccin: W = 0xB5 Despus de la instruccin: W = 0x1A


25
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

SUBLW : Re st a L

A una constante k de 8 bits se le resta el registro W. El resultado es guardado en el mismo registro W. Sin t a x is: [etiqueta] SUBLW k Flags afectados: C,DC,Z

26

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

AD D W F: Su m a W y f
Suma el contenido del registro W y el registro f . Si d es 0, el resultado se almacena en el registro W. Si d es 1 el resultado se almacena en el registro f . Sin t a x is: [etiqueta] ADDWF f,d Operacin: (W) + (f) > (destino) Flags afectados: C, DC, Z Ej e m plo:

28

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

AN D W F: W AN D f
Realiza la operacin lgica AND entre el registro W y el registro f . Si d es 0 el resultado se almacena en el registro W. Si d es 1, el resultado se almacena en el registro f . Sin t a x is: [etiqueta] ANDWF f,d Operacin: (W) AND (f) > (destino) Flags afectados: Z Ej e m plo:

29

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

CLRF: Bor r a u n r e gist r o


Borra el contenido del registro f y se activa el flag Z. Sin t a x is: [etiqueta] CLRF f Flags afectados: Z Ej e m plo:

Antes de la instruccin: REG=054 Despus de la instruccin: REG=000, Z=1


30
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

CLRW : Bor r a e l r e gist r o de t r a ba j o W


Borra el contenido del registro W y se activa el flag Z. Esta instruccion no tiene operandos. Sin t a x is: [etiqueta] CLRW Flags afectados: Z Ej e m plo: CLRW

Antes de la instruccin: W=0A7 Despus de la instruccin: W=000, Z=1


31
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

COM F: Com ple m e n t a e l r e gist r o f


El contenido del registro f se complementa. Si d=0 el resultado se almacena en el registro W. Si d=1 el resultado se almacena en el registro f . Sin t a x is: [etiqueta] COMF f,d Flags afectados: Z Ej e m plo:

Antes de la instruccin: PORTB=09D Despus de la instruccin: REG=062,W=0x9D


32
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

D ECF: D e cr e m e n t a f e n 1
De decrementa en uno el contenido del registro f . Si d=0, el resultado se almacena en W. Si d=1, el resultado se almacena en f . Sin t a x is: [etiqueta] DECF f,d Flags afectados: Z Ej e m plo:

Antes de la instruccin: CONT=003, Z=0 Despus de la instruccin: CONT=002, Z=1


33
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

D ECFSZ: D e cr e m e n t a e n 1 y sa lt a si
e l r e su lt a do e s 0
El contenido del registro f se decrementa. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado se coloca en el registro f . Si el resultado es 0, se salta la siguiente instruccin y se contina con la ejecucin. Sin t a x is: [etiqueta] DECFSZ f,d Flags afectados: Ninguno

34

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

I N CF: I n cr e m e n t a e l r e gist r o f
Incrementa en uno el contenido del registro f . Si d=0, el resultado se almacena en W. Si d=1, el resultado se almacena en f . Sin t a x is: [label] INCF f,d Flags afectados: Z Ej e m plo:

Antes de la instruccin: CONT=0xFF, Z=0 Despus de la instruccin: CONT=000, Z=1


35
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

I N CFSZ: I n cr e m e n t a e n 1 y sa lt a si
e l r e su lt a do e s 0
El contenido del registro f se incrementa. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado se coloca en el registro f . Si el resultado es 0, se salta la siguiente instruccin y se contina con la ejecucin. Sin t a x is: [etiqueta] DECFSZ f,d Flags afectados: Ninguno

36

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

I ORW F: W OR f

Realiza la operacin lgica OR entre el registro W y el registro f . Si d=0 el resultado se almacena en el registro W. Si d=1, el resultado se almacen en el registro f . Sin t a x is: [etiqueta] IORWF f,d Flags afectados: Z Ej e m plo:

37

Antes de la instruccin: REG=013, W=091 Despus de la instruccin: REG=013, W=093


Manuel Alvarado Balden manuelalvarado2808@gmail.com

Microcontroladores PIC I

M OVW F: M ove r e l va lor de l r e gist r o


W a l r e gist r o f
El contenido del registro W se mueve al registro f . Sin t a x is: [etiqueta] MOVWF f Flags afectados: Ninguno Ej e m plo:

Antes de la instruccin: PORTB=??, W=0x15 Despus de la instruccin: PORTB=0x15, W=0x15


38
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

M OVF: M ove r e l r e gist r o f


El contenido del registro f se mueve al destino d . Si d=0, el destino es el registro W. Si d=1, el destino es el propio registro f . Sin t a x is: [etiqueta] MOVF f,d Flags afectados: Z Ej e m plo:

Despus de la instruccin: W=PORTB


39
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

RLF: Rot a e l r e gist r o f a la izqu ie r da


El contenido del registro f se rota una posicin a la izquierda. El bit de ms peso pasa al carry y el carry se introduce por el bit de menos peso de f . Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado queda en el registro f . Sin t a x is: [etiqueta] RLF f,d flags afectados: C Ej e m plo:

40

Antes de la instruccin: REG=b 11100110 , C=0 Despus de la instruccin: REG=b 11001100 , C=1
Manuel Alvarado Balden manuelalvarado2808@gmail.com

Microcontroladores PIC I

RRF: Rot a e l r e gist r o f a la de r e ch a


El contenido del registro f se rota una posicin a la derecha. El bit de menos peso pasa al carry y el carry se introduce por el bit de ms peso de f . Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado queda en el registro f . Sin t a x is: [etiqueta] RLF f,d Flags afectados: C Ej e m plo:

41

Antes de la instruccin: REG=b 11100110 , C=0 Despus de la instruccin: REG=b 01110011 , C=0
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

SUBW F: Re st a f

Resta el contenido del registro f menos el contenido del registro W. Si d=0, el resultado se almacena en el registro W. Si d=1, el resultado se almacena en el registro f . Sin t a x is: [etiqueta] SUBWF f,d Flags afectados: C, DC, Z Ej e m plo:

42

Antes de la instruccin: REG=001, W=002 Despus de la instruccin: REG=0xFF, W=002


Manuel Alvarado Balden manuelalvarado2808@gmail.com

Microcontroladores PIC I

SW APF: I n t e r ca m bio de f
El nibble bajo del registro f se intercambia con el nibble alto del mismo. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado queda en el registro f . Sin t a x is: [etiqueta] SWAPF f,d Flags afectados: Ninguno Ej e m plo:

Antes de la instruccin: REG=054 Despus de la instruccin: REG=045


43
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

XORW F: W XOR f

Realiza la funcin lgica OR exclusiva entre el contenido del registro W y el registro f . Si d=0, el resultado se almacena en el registro W. Si d=1 el resultado se almacena en el registro f . Sin t a x is: [etiqueta] XORWF f,d Flags afectados: Z Ej e m plo:

44

Antes de la instruccin: REG=0xAF, W=0xB5 Despus de la instruccin: REG=0x1A, W=0xB5


Manuel Alvarado Balden manuelalvarado2808@gmail.com

Microcontroladores PIC I

N OP: N o ope r a cin


No realiza ninguna operacin, solo consume un ciclo de reloj Sin t a x is: [etiqueta] NOP

45

19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

Y estas son las 35 instrucciones que podemos utilizar para programar los microcontroladores PIC. La razn para que solo se utilicen 35 instrucciones en la programacin es que los PIC son microcontroladores RISC. Estas instrucciones estn bien optimizadas para tener una mayor velocidad de trabajo, una arquitectura mas simple y un cdigo mas compacto.
46
19/06/2011

Manuel Alvarado Balden

manuelalvarado2808@gmail.com

Microcontroladores PIC I

M u ch a s Gr a cia s
Manuel Alvarado Balden m_alvarado_b@ieee.org

47

19/06/2011

Manuel Alvarado Balden

m_alvarado_b@ieee.org

Anda mungkin juga menyukai