SET D E I N STRUCCI ON ES D EL PI C
manuelalvarado2808@gmail.com
Microcontroladores PIC I
19/06/2011
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
manuelalvarado2808@gmail.com
Microcontroladores PIC I
Re pe r t or io de I n st r u ccion e s
19/06/2011
manuelalvarado2808@gmail.com
Microcontroladores PIC I
19/06/2011
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
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
manuelalvarado2808@gmail.com
Microcontroladores PIC I
manuelalvarado2808@gmail.com
Microcontroladores PIC I
Ant es de la inst ruccin: REG=b 01101101 Despus de la inst ruccin: REG=b 01101100
19/06/2011
manuelalvarado2808@gmail.com
Microcontroladores PIC I
Ant es de la inst ruccin: REG=b 01001001 Despus de la inst ruccin: REG=b 01001011
10
19/06/2011
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
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
manuelalvarado2808@gmail.com
Microcontroladores PIC I
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:
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:
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:
manuelalvarado2808@gmail.com
Microcontroladores PIC I
17
19/06/2011
manuelalvarado2808@gmail.com
Microcontroladores PIC I
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:
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
20
19/06/2011
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
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
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
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
manuelalvarado2808@gmail.com
Microcontroladores PIC I
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
manuelalvarado2808@gmail.com
Microcontroladores PIC I
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
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
manuelalvarado2808@gmail.com
Microcontroladores PIC I
manuelalvarado2808@gmail.com
Microcontroladores PIC I
manuelalvarado2808@gmail.com
Microcontroladores PIC I
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:
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
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:
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
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
Microcontroladores PIC I
manuelalvarado2808@gmail.com
Microcontroladores PIC I
manuelalvarado2808@gmail.com
Microcontroladores PIC I
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
41
Antes de la instruccin: REG=b 11100110 , C=0 Despus de la instruccin: REG=b 01110011 , C=0
19/06/2011
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
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:
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
Microcontroladores PIC I
45
19/06/2011
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
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
m_alvarado_b@ieee.org