Set Instrucciones

Microcontroladores PIC I SET D E I N STRUCCI ON ES D EL PI C Manuel Alvarado Baldeón [email protected] M

Views 112 Downloads 3 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Microcontroladores PIC I

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

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

2

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 excepción de las instrucciones de salto que toman dos ciclos

3

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

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

4

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

5

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción, excepto aquellas que nos generan saltos en la memoria del programa. 6

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

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: 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 Baldeón

[email protected]

Microcontroladores PIC I

Manuel Alvarado Baldeón

[email protected]

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 rucción: REG=b 01101101 Después de la inst rucción: REG=b 01101100

9

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 rucción: REG=b 01001001 Después de la inst rucción: REG=b 01001011

10

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción y se continúa con la ejecución. Sin t a x is: [etiqueta] BTFSC f,b Ej e m plo:

11

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción y se continúa con la ejecución. Sin t a x is: [etiqueta] BTFSS f,b Ej e m plo:

12

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

AN D LW : W AN D lit e r a l Realiza la operación lógica 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 rucción: W=0xA3 Después de la inst rucción: W=0×03 14

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 rucción: W=0x50 Después de la inst rucción: W=0×73 15

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

CALL: Lla m a da a su br u t in a Llamada y salto a subrutina. La dirección de retorno se guarda en el stack. La constante k de 8 bits forma la dirección 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 rucción: PC=INICIO Después de la inst rucción: PC=DESTINO 16

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

CLRW D T: Bor r a e l w a t ch dog t im e r Esta instrucción 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 Baldeón

[email protected]

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 instrucción, se cargan en los bits del PC y forman la dirección 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 rucción: PC=0 Después de la inst rucción: PC=DESTINO 18

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

I ORLW : W OR lit e r a l Se realiza la función lógica 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 rucción: W=0x9A Después de la inst rucción: W=0xBF 19

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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

Después de la inst rucción: W=0x14

20

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 Baldeón

[email protected]

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 Baldeón

[email protected]

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 Baldeón

[email protected]

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 Baldeón

[email protected]

Microcontroladores PIC I

XORLW : W XOR lit e r a l Realiza la función lógica 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 instrucción: W = 0xB5 Después de la instrucción: W = 0x1A 25

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

SUBLW : Re st a L

W

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 Baldeón

[email protected]

Microcontroladores PIC I

Manuel Alvarado Baldeón

[email protected]

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 Operación: (W) + (f) > (destino) Flags afectados: C, DC, Z Ej e m plo:

28

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

AN D W F: W AN D f Realiza la operación lógica 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 Operación: (W) AND (f) > (destino) Flags afectados: Z Ej e m plo:

29

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción: REG=0×54 Después de la instrucción: REG=0×00, Z=1 30

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción: W=0×A7 Después de la instrucción: W=0×00, Z=1 31

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción: PORTB=0×9D Después de la instrucción: REG=0×62,W=0x9D 32

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción: CONT=0×03, Z=0 Después de la instrucción: CONT=0×02, Z=1 33

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción y se continúa con la ejecución. Sin t a x is: [etiqueta] DECFSZ f,d Flags afectados: Ninguno

34

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción: CONT=0xFF, Z=0 Después de la instrucción: CONT=0×00, Z=1 35

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 instrucción y se continúa con la ejecución. Sin t a x is: [etiqueta] DECFSZ f,d Flags afectados: Ninguno

36

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

I ORW F: W OR f

Realiza la operación lógica 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 instrucción: REG=0×13, W=0×91 Después de la instrucción: REG=0×13, W=0×93 Manuel Alvarado Baldeón

[email protected]

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 instrucción: PORTB=??, W=0x15 Después de la instrucción: PORTB=0x15, W=0x15 38

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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:

Después de la instrucción: W=PORTB 39

19/06/2011

Manuel Alvarado Baldeón

[email protected]

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 posición a la izquierda. El bit de más 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 instrucción: REG=b 11100110 , C=0 Después de la instrucción: REG=b 11001100 , C=1 Manuel Alvarado Baldeón

[email protected]

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 posición a la derecha. El bit de menos peso pasa al carry y el carry se introduce por el bit de más 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 instrucción: REG=b 11100110 , C=0 Después de la instrucción: REG=b 01110011 , C=0 19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

SUBW F: Re st a f

W

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 instrucción: REG=0×01, W=0×02 Después de la instrucción: REG=0xFF, W=0×02 Manuel Alvarado Baldeón

[email protected]

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 instrucción: REG=0×54 Después de la instrucción: REG=0×45 43

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

XORW F: W XOR f

Realiza la función lógica 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 instrucción: REG=0xAF, W=0xB5 Después de la instrucción: REG=0x1A, W=0xB5 Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

N OP: N o ope r a ción No realiza ninguna operación, solo consume un ciclo de reloj Sin t a x is: [etiqueta] NOP

45

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

Y estas son las 35 instrucciones que podemos utilizar para programar los microcontroladores PIC. La razón para que solo se utilicen 35 instrucciones en la programación es que los PIC son microcontroladores RISC. Estas instrucciones están bien optimizadas para tener una mayor velocidad de trabajo, una arquitectura mas simple y un código mas compacto. 46

19/06/2011

Manuel Alvarado Baldeón

[email protected]

Microcontroladores PIC I

M u ch a s Gr a cia s Manuel Alvarado Baldeón [email protected]

47

19/06/2011

Manuel Alvarado Baldeón

[email protected]