Sei sulla pagina 1di 40

ELT3822 MICROCONTROLADORES

ELT3822 MICROCONTROLADORES

SET DE INSTRUCCIONES
PIC 16F84
(PIC GAMA MEDIA)

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

SET DE INSTRUCCIONES FAMILIA PIC GAMA MEDIA

Instrucciones de no hacer nada Instrucciones de rotación


NOP RLF RRF

Instrucciones de borrado Instrucciones de seteo y borrado de bits


CLRW CLRF BCF BSF

Instrucciones de movimiento Instrucciones de salto incondicional


MOVF GOTO
MOVLW MOVWF
Instrucciones de salto condicional
Instrucciones aritméticas DECFSZ INCFSZ
ADDLW ADDWF BTFSC BTFSS
SUBLW SUBWF
INCF DECF Instrucciones de subrutinas
SWAPF CALL RETURN
RETFIE RETLW
Instrucciones lógicas
ANDLW ANDWF Instrucciones para el WD
IORLW IORWF CLRWDT
XORLW XORWF
CONF Instrucciones para bajo consumo
SLEEP

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

NOP No Operación

Sintaxis: [etiqueta] NOP


Descripción: Ninguna operación es ejecutada, ni tampoco es
afectado ningún flag.
Operación: -
Operando: -
Flag: -
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo: NOP

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

CLRW Escribir 0 en W

Sintaxis: [etiqueta] CLRW


Descripción: El contenido del registro W pasa hacia 0 y el flag Z del
registro STATUS toma el valor 1.
Operación: 0⇒(W)
Operando: -
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo: CLRW
Antes de la instrucción: W = 0x55
Después de la instrucción: W = 0x00
Z=1

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

CLRF Escribir 0 en f

Sintaxis: [etiqueta] CLRF f


Descripción: El contenido del registro ‘f’ pasa a 0 y el flag Z del
registro STATUS toma el valor 1.
Operación: 0⇒f
Operando: 0 ≤ f ≤ 127
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: CLRF STATUS
Antes de la instrucción: STATUS = 0xC2
Después de la instrucción: STATUS = 0x00
Z=1
Ejemplo 2: CLRF INDF
Antes de la instrucción: FSR = 0xC2
Contenido del dirección 0xC2 = 0x33
Después de la instrucción: FSR = 0xC2
Contenido del dirección 0xC2 = 0x00
Z=1

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES
MOVLW Escribir constante en el registro W (Move Local to Work)

Sintaxis: [etiqueta] MOVLW k


Descripción: La constante de 8-bits k va hacia el registro W.
Operación: k⇒(W)
Operando: 0 ≤ k ≤ 255
Flag: -
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: MOVLW 0x5A
Después de la instrucción: W= 0x5A
Ejemplo 2: MOVLW REGIUNO
Antes de la instrucción: W = 0x10 y REGIUNO = 0x40
Después de la instrucción: W = 0x40 y REGIUNO = 0x40

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES
MOVWF Copiar W en f (Move Work to Field)

Sintaxis: [etiqueta] MOVWF f


Descripción: El contenido del registro W es copiado en el registro f
Operación: W⇒(f)
Operando: 0 ≤ f ≤ 127
Flag: -
Número de
1
palabras:
Número de ciclos: 1
Ejemplo 1: MOVWF OPTION_REG
Antes de la instrucción: OPTION_REG = 0x20
W = 0x40
Después de la instrucción: OPTION_REG = 0x40
W = 0x40
Ejemplo 2: MOVWF INDF
Antes de la instrucción: W = 0x17
FSR = 0Xc2
Contenido de la dirección 0xC2 = 0x00
Después de la instrucción: W = 0x17
FSR = 0xC2
Contenido del dirección 0xC2 = 0x17

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES
MOVF Copiar f en d (Move Field in Destination)

Sintaxis: [etiqueta] MOVF f, d


Descripción: El contenido del registro f es guardado en el lugar determinado por el
operando d
Si d = 0, el destino es el registro W
Si d = 1, el destino es el propio registro f
La opción d = 1, es usada para testear el contenido del registro f,
porque la ejecución de esta instrucción afecta al flag Z del registro
STATUS.
Operación: f⇒(d)
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: MOVF FSR, 0
Antes de la instrucción: FSR = 0xC2 W = 0x00
Después de la instrucción: W = 0xC2
Z=0
MOVF INDF, 0
Ejemplo 2: Antes de la instrucción: W = 0x17 FSR = 0xC2
Contenido del dirección 0xC2 = 0x00
Después de la instrucción: W = 0x00 FSR = 0xC2
Contenido del dirección 0xC2 = 0x00 Z=1

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

SWAPF Copiar el contenido de f en d, trocando la posición de los 4 primeros bits


con los 4 últimos (Swap Field with Destination)

Sintaxis: [etiqueta] SWAPF f, d


Descripción: Los 4 bits + significativos y los 4 bits – significativos
de f, intercambian de posiciones.
Si d = 0, el resultado es guardado en el registro W
Si d = 1, el resultado es guardado en el registro f
Operación: f <0:3>⇒ d <4:7>, f <4:7>⇒ d <0:3>,
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: -
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: SWAPF REG, 0
Antes de la instrucción: REG = 0xF3
Después de la instrucción: REG = 0xF3
W = 0x3F
Ejemplo 2: SWAPF REG, 1
Antes de la instrucción: REG = 0xF3
Después de la instrucción: REG = 0x3F

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

ADDLW Adicionar W a una constante ( Add Local to Work )

Sintaxis: [etiqueta] ADDLW k


Descripción: El contenido del registro W, es adicionado a la
constante k de 8-bits y el resultado es guardado en el
registro W.
Operación: (W)+k⇒W
Operando: 0 ≤ k ≤ 255
Flag: C, DC, Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: ADDLW 0x15
Antes de la instrucción: W= 0x10
Después de la instrucción: W= 0x25
Ejemplo 2: ADDLW REG
Antes de la instrucción: W = 0x10
REG = 0x37
Después de la instrucción: W = 0x47

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES
ADDWF Adicionar W a f (Add Work to Field )

Sintaxis: [etiqueta] ADDWF f, d


Descripción: Adicionar los contenidos de los registros W e f
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: (W) + ( f ) ⇒ d, d ∈ [0, 1]
Operando: 0 ≤ f ≤ 127
Flag: C, DC, Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: ADDWF FSR, 0
Antes de la instrucción: W = 0x17
FSR = 0xC2
Después de la instrucción: W = 0xD9
FSR = 0xC2
Ejemplo 2: ADDWF INDF,0
Antes de la instrucción: W = 0x17
FSR = 0xC2
Contenido de la dirección 0Xc2 = 0x20
Después de la instrucción: W = 0x37
FSR = 0xC2
Contenido de la dirección 0xC2 = 0x20

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

SUBLW Substraer una constante a Work ( Substract Local to Work )

Sintaxis: [etiqueta] SUBLW k


Descripción: El contenido del registro W, es substraído de la constante k y el
resultado es guardado en el registro W.
Operación: k-(W)⇒W
Operando: 0 ≤ k ≤ 255
Flag: C, DC, Z
Número de
1
palabras:
Número de ciclos: 1
Ejemplo 1: SUBLW 0x03
Antes de la instrucción: W= 0x01, C = x, Z = x
Después de la instrucción: W= 0x02, C = 1, Z = 0
Resultado > 0
Antes de la instrucción: W= 0x03, C = x, Z = x
Después de la instrucción: W= 0x00, C = 1, Z = 1
Resultado = 0
Antes de la instrucción: W= 0x04, C = x, Z = x
Después de la instrucción: W= 0xFF, C = 0, Z = 0 Resultado < 0
Ejemplo 2: SUBLW REG
Antes de la instrucción: W = 0x10 REG = 0x37
Después de la instrucción: W = 0x27
C=1 Resultado > 0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

SUBWF Substraer W a f ( Substract Work to Field )

Sintaxis: [etiqueta] SUBWF f, d


Descripción: El contenido del registro W es substraído del contenido del registro f
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: ( f ) - (W) ⇒ d
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: C, DC, Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo: SUBWF REG, 1
Antes de la instrucción: REG= 3, W= 2, C = x, Z = x
Después de la instrucción: REG= 1, W= 2, C = 1, Z = 0 Resultado > 0
Antes de la instrucción: REG= 2, W= 2, C = x, Z = x
Después de la instrucción: REG=0, W= 2, C = 1, Z = 1

Resultado = 0
Antes de la instrucción: REG=1, W= 2, C = x, Z = x
Después de la instrucción: REG= 0xFF, W=2, C = 0, Z = 0 Resultado < 0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

ANDLW Realiza el AND de W con una constante

Sintaxis: [etiqueta] ANDLW k


Descripción: Es ejecutado el AND lógico del contenido del registro W, con la
constante k
El resultado es guardado en el registro W.
Operación: ( W ) .AND. k ⇒ W
Operando: 0 ≤ k ≤ 255
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: ANDLW 0x5F
Antes de la instrucción: W= 0xA3 ; 0101 1111 (0x5F)
; 1010 0011 (0xA3)
Después de la instrucción: W= 0x03; 0000 0011 (0x03)
Ejemplo 2: ANDLW REG
Antes de la instrucción: W = 0xA3 ; 1010 0011 (0xA3)
REG = 0x37 ; 0011 0111 (0x37)
Después de la instrucción: W = 0x23 ; 0010 0011 (0x23)

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

ANDWF Realizar el AND de W con f

Sintaxis: [etiqueta] ANDWF f, d


Descripción: Hace el AND de los contenidos de los registros W e f
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: (W) .AND. ( f ) ⇒ d
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: ANDWF FSR, 1
Antes de la instrucción: W= 0x17, FSR= 0xC2 ; 0001 1111 (0x17)
; 1100 0010 (0xC2)
Después de la instrucción: W= 0x17, FSR= 0x02; 0000 0010 (0x02)
Ejemplo 2: ANDWF FSR, 0
Antes de la instrucción: W= 0x17, FSR= 0xC2 ; 0001 1111 (0x17)
; 1100 0010 (0xC2)
Después de la instrucción: W= 0x02, FSR= 0xC2 ; 0000 0010 (0x02)

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

IORLW Realiza el OR de W con una constante

Sintaxis: [etiqueta] IORLW k


Descripción: Ejecuta el OR lógico del contenido del registro W, con
la constante de 8 bits k, el resultado es guardado en el
registro W.
Operación: ( W ) .OR. k ⇒ W
Operando: 0 ≤ k ≤ 255
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: IORLW 0x35
Antes de la instrucción: W= 0x9A
Después de la instrucción: W= 0xBF
Z= 0
Ejemplo 2: IORLW REG
Antes de la instrucción: W = 0x9A
Contenido de REG = 0x37
Después de la instrucción: W = 0x9F
Z=0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

IORWF Realizar el OR lógico de W con f

Sintaxis: [etiqueta] IORWF f, d


Descripción: Hace el OR lógico de los contenidos de los registros W
yf
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: (W) .OR. ( f ) ⇒ d
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: IORWF REG, 0
Antes de la instrucción: REG= 0x13, W= 0x91
Después de la instrucción: REG= 0x13, W= 0x93
Z= 0
Ejemplo 2: IORWF REG, 1
Antes de la instrucción: REG= 0x13, W= 0x91
Después de la instrucción: REG= 0x93, W= 0x91
Z= 0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

XORLW XOR de W con una constante

Sintaxis: [etiqueta] XORLW k


Descripción: Se ejecuta la operación XOR del contenido del registro W, con la
constante k.
El resultado es guardado en el registro W.
Operación: ( W ) .XOR. k ⇒ W
Operando: 0 ≤ k ≤ 255
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: XORLW 0xAF
Antes de la instrucción: W= 0xB5 ; 1010 1111 (0xAF)
; 1011 0101 (0xB5)
Después de la instrucción: W= 0x1A; 0001 1010 (0x1A)
Ejemplo 2: XORLW REG
Antes de la instrucción: W = 0xAF ; 1010 1111 (0xAF)
REG = 0x37 ; 0011 0111 (0x37)
Después de la instrucción: W = 0x98 ; 1001 1000 (0x98)
Z=0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

XORWF XOR de W con f

Sintaxis: [etiqueta] XORWF f, d


Descripción: Hace el XOR de los contenidos de los registros W y f
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: (W) .XOR. ( f ) ⇒ d
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: XORWF REG, 1
Antes de la instrucción: REG= 0xAF, W= 0xB5 ; 1010 1111 (0xAF)
; 1011 0101 (0xB5)
Después de la instrucción: REG= 0x1A, W= 0xB5 001 1010 (0x1A)
Ejemplo 2: XORWF REG, 0
Antes de la instrucción: REG= 0xAF, W= 0xB5 ; 1010 1111 (0xAF)
; 1011 0101 (0xB5)
Después de la instrucción: REG= 0xAF, W= 0x1A ; 0001 1010 (0x1A)

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

INCF Incrementar f

Sintaxis: [etiqueta] INCF f, d


Descripción: Incrementar en una unidad el contenido del registro f.
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: (f)+1⇒ d
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: INCF REG, 1
Antes de la instrucción: REG = 0xFF Z=0
Después de la instrucción: REG = 0x00 Z=1
Ejemplo 2: INCF REG, 0
Antes de la instrucción: REG = 0x10
W=x Z=0
Después de la instrucción: REG = 0x10
W = 0x11 Z = 0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

DECF Decrementar f

Sintaxis: [etiqueta] DECF f, d


Descripción: Decrementar en una unidad, el contenido del registro f.
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: (f)-1⇒ d
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: DECF REG, 1
Antes de la instrucción: REG = 0x01 Z=0
Después de la instrucción: REG = 0x00 Z=1
Ejemplo 2: DECF REG, 0
Antes de la instrucción: REG = 0x13
W=x Z=0
Después de la instrucción: REG = 0x13
W = 0x12 Z=0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

RLF Rotar f hacia la izquierda a través del Carry

Sintaxis: [etiqueta] RLF f, d


Descripción: El contenido del registro f es rotado un espacio hacia la
izquierda, a pasando por el flag de acarreo C.
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: ( f <n>) ⇒ d<n+1>, f<7> ⇒ C, C ⇒ d<0>;
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: C
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: RLF REG, 0
Antes de la instrucción: REG = 1110 0110 C = 0
Después de la instrucción: REG = 1110 0110 C = 1
W = 1100 1100
Ejemplo 2: RLF REG, 1
Antes de la instrucción: REG = 1110 0110 C = 0
Después de la instrucción: REG = 1100 1100 C = 1

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

RRF Rotar f hacia la derecha a través del Carry

Sintaxis: [etiqueta] RRF f, d


Descripción: El contenido del registro f es rotado un espacio hacia la derecha,
pasando a través del flag de acarreo C.
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: ( f <n>) ⇒ d<n-1>, f<0> ⇒ C, C ⇒ d<7>;
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: C
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: RRF REG, 0
Antes de la instrucción: REG = 1110 0110 C=0
W=x
Después de la instrucción: REG = 1110 0110 C=0
W = 0111 0011
Ejemplo 2: RRF REG, 1
Antes de la instrucción: REG = 1110 0110 C = 0
Después de la instrucción: REG = 0111 0011 C = 0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

CONF Conplementar f

Sintaxis: [etiqueta] CONF f, d


Descripción: El contenido del registro f es complementado.
Si d=0, el resultado es guardado en el registro W
Si d=1, el resultado es guardado en el registro f
Operación: ( f) ⇒ d
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: Z
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: CONF REG, 0
Antes de la instrucción: REG= 0x13 ; 0001 0011 (0x13)
Después de la instrucción: REG= 0x13 ; complementar
W = 0xEC ; 1110 1100 (0xEC)
Ejemplo 2: CONF INDF, 1
Antes de la instrucción: FSR= 0xC2
Contenido de FSR = (FSR) = 0xAA
Después de la instrucción: FSR= 0xC2
Contenido de FSR = (FSR) = 0x55

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

BCF Poner a “0” el bit b de f

Sintaxis: [etiqueta] BCF f, b


Descripción: Limpiar (poner a ‘0’), el bit b del registro f
Operación: 0 ⇒ f<b>
Operando: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7
Flag: -
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: BCF REG, 7
Antes de la instrucción: REG = 0xC7 ; 1100 0111 (0xC7)
Después de la instrucción: REG = 0x47 ; 0100 0111 (0x47)
Ejemplo 2: BCF INDF, 3
Antes de la instrucción: W = 0x17 FSR = 0xC2
Contenido del dirección en FSR (FSR) = 0x2F
Después de la instrucción: W = 0x17 FSR = 0xC2
Contenido del dirección en FSR (FSR) = 0x27

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

BSF Poner en “1” el bit b de f

Sintaxis: [etiqueta] BSF f, b


Descripción: Poner a ‘1’, el bit b del registro f
Operación: 1 ⇒ f<b>
Operando: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7
Flag: -
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: BSF REG, 7
Antes de la instrucción: REG = 0x07 ; 0000 0111 (0x07)
Después de la instrucción: REG = 0x17 ; 1000 0111 (0x87)
Ejemplo 2: BSF INDF, 3
Antes de la instrucción: W = 0x17 FSR = 0xC2
Contenido del dirección en FSR (FSR) = 0x2F
Después de la instrucción: W = 0x17 FSR = 0xC2
Contenido del dirección en FSR (FSR) = 0x28

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

BTFSC Testear el bit b de f, saltar por encima si = 0

Sintaxis: [etiqueta] BTFSC f, b


Descripción: Si el bit b del registro f fuera igual a cero, ignorar la instrucción
siguiente. Si este bit b fuera cero, entonces durante la ejecución de
la instrucción actual, la ejecución de la instrucción siguiente no se
concreta y en vez de esta es ejecutada una instrucción NOP,
haciendo con que la instrucción actual, demore dos ciclos de
instrucción al ser ejecutada.
Operación: Ignorar la instrucción siguiente si (f<b>) = 0
Operando: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7
Flag: -
Número de
1
palabras:
Número de
1 o 2 dependiendo del valor lógico del bit b
ciclos:
Ejemplo: INSTRU1 BTFSC REG, 1 ; Testear el bit 1 del registro REG
INSTRU2 ........... ; Ignorar esta línea si fuese 0
INSTRU3 ........... ; Ejecutar esta línea después de la
anterior, si fuese 1
Antes de la instrucción, el contador de programa contiene la
dirección INSTRU1.Después de esta instrucción, si el bit 1 del
registro REG fuera cero, el contador de programa contiene la
dirección INSTRU3. Si el bit 1 del registro REG fuera 1, el contador
de programa contiene la dirección INSTRU2.

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

BTFSS Testar el bit b de f, saltar por encima si = 1

Sintaxis: [etiqueta] BTFSS f, b


Descripción: Si el bit b del registro f fuese igual a uno, ignorar la instrucción
siguiente. Si durante la ejecución de esta instrucción este bit b
fuese uno, entonces, la ejecución de la instrucción siguiente no se
concretiza y en vez de esta es ejecutada una instrucción NOP, así,
la instrucción actual demora dos ciclos de instrucción al ser
ejecutada.
Operación: Ignorar la instrucción siguiente si (f<b>) = 1
Operando: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7
Flag: -
Número de
1
palabras:
Número de
1 o 2 dependiendo del valor lógico del bit b
ciclos:
Ejemplo: INSTRU1 BTFSS REG, 1; Testear el bit 1 del registro REG
INSTRU2 ........... ; Ignorar esta línea si fuese 1
INSTRU3 ........... ; Ejecutar esta línea después de la
anterior, si fuese 0
Antes de la instrucción, el contador de programa contiene la
dirección INSTRU1. Después de esta instrucción, si el bit 1 del
registro REG fuese ‘uno’, el contador de programa contiene la
dirección INSTRU3. Si el bit 1 del registro REG fuese cero, el
contador de programa contiene la dirección INSTRU2.

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

INCFSZ Incrementar f, saltar por encima si 0

Sintaxis: [etiqueta] INCFSZ f, d


Descripción: Descripción: El contenido del registro f es incrementado en una
unidad.
Si d = 0, el resultado es guardado en el registro W.
Si d = 1, el resultado es guardado en el registro f.
Si el resultado del incremento fuera = 0, la instrucción siguiente es
substituida por una instrucción NOP, haciendo que la instrucción actual,
demore dos ciclos de instrucción al ser ejecutada.
Operación: (f) + 1 ⇒ d
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: -
Número de
1
palabras:
Número de
1 o 2 dependiendo del resultado
ciclos:
Ejemplo: INSTRU1 INCFSZ REG, 1 ; Incrementar el Contenido de REG en
una unidad
INSTRU2 ........... ; Ignorar esta línea si el resultado = 0
INSTRU3 ........... ; Ejecutar esta línea Después de la
anterior, si es 0
Contenido del contador de programa antes de la instrucción, PC = dirección INSTRU1. Si el
contenido del registro REG después de la Operación REG = REG + 1 haya sido ejecutada, fuese REG
= 0, el contador de programa apunta hacia la etiqueta de dirección INSTRU3. Caso contrario, el
contador de programa contiene la dirección de la instrucción siguiente, o sea, INSTRU2.

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

DECFSZ Decrementar f, saltar por encima se resulta = 0

Sintaxis: [etiqueta] DECFSZ f, d


Descripción: El contenido del registro f es decrementado en una unidad.
Si d = 0, el resultado es guardado en el registro W.
Si d = 1, el resultado es guardado en el registro f.
Si el resultado del decremento fuese = 0, la instrucción siguiente es
substituida por una instrucción NOP, haciendo así que la instrucción actual,
demore dos ciclos de instrucción aL ser ejecutada.
Operación: (f) - 1 ⇒ d
Operando: 0 ≤ f ≤ 127, d ∈ [0, 1]
Flag: -
Número de
1
palabras:
Número de
1 o 2 dependiendo del resultado
ciclos:
Ejemplo: INSTRU1 DECFSZ REG, 1 ; Decrementar el
contenido de REG en una unidad
INSTRU2 ........... ; Ignorar esta línea si el resultado = 0
INSTRU3 ........... ; Ejecutar esta línea
después de la anterior, se es 0
Contenido del contador de programa antes de la instrucción, PC = dirección INSTRU1. Si
el contenido del registro REG después de que la operación REG = REG – 1 haya sido
ejecutada, resulta REG = 0, el contador de programa apunta a la dirección de la
etiqueta INSTRU3. Caso contrario, el contador de programa contiene el dirección de la
instrucción siguiente, o sea, INSTRU2.

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

GOTO Saltar para el dirección

Sintaxis: [etiqueta] GOTO k


Descripción: Salto incondicional para el dirección k.
Operación: k ⇒ PC<10:0>, (PCLATH<4:3>) ⇒ PC<12:11>
Operando: 0 ≤ k ≤ 2048
Flag: -
Número de
1
palabras:
Número de
2
ciclos:
Ejemplo: INSTRU1 GOTO INSTRU2; Saltar para INSTRU2
:
INSTRU2 ............
Antes de la instrucción: PC = dirección INSTRU1
Después de la instrucción: PC = dirección INSTRU2

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

CALL Llamar a un programa

Sintaxis: [etiqueta] CALL k


Descripción: Esta instrucción, llama a un subprograma. Primero, la
dirección de retorno (PC+1) es guardada en la pila, a
continuación, el operando k de 11 bits, correspondiente a la
dirección de inicio del subprograma, va al contador de
programa (PC).
Operación: PC+1 ⇒ Tope de la pila (TOS – Top Of Stack)
Operando: 0 ≤ k ≤ 2048
Flag: -
Número de
1
palabras:
Número de
2
ciclos:
Ejemplo: RUTINA1 CALL RUTINA2 ; Llamar a la subrutina RUTINA2
INSTRU1 :
RUTINA2 ............
Antes de la instrucción: PC = dirección LAB_00
TOS = x
Después de la instrucción: PC = dirección LAB_02
TOS = LAB_01

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

RETURN Retorno de un subprograma

Sintaxis: [etiqueta] RETURN


Descripción: El contenido del tope de la pila es guardado en el
contador de programa.
Operación: TOS ⇒ Contador de programa PC
Operando: -
Flag: -
Número de
1
palabras:
Número de
2
ciclos:
Ejemplo: RETURN
Antes de la instrucción: PC = x
TOS = x
Después de la instrucción: PC = TOS
TOS = TOS – 1

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

RETLW Retorno de un subprograma con una constante en W

Sintaxis: [etiqueta] RETLW k


Descripción: A constante k de 8 bits, es guardada en el registro W.
Operación: (k) ⇒ W; TOS ⇒ PC
Operando: 0 ≤ k ≤ 255
Flag: -
Número de
1
palabras:
Número de
2
ciclos:
Ejemplo: RETLW 0x43
Antes de la instrucción: W=x
PC = x
TOS = x
Después de la instrucción: W = 0x43
PC = TOS
TOS = TOS – 1

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

RETFIE Retorno de una rutina de interrupción

Sintaxis: [etiqueta] RETLW k


Descripción: Retorno de una subrutina de servicio de interrupción.
El contenido del tope de pila (TOS), es transferido
hacia el contador de programa (PC).
Al mismo tiempo, las interrupciones son habilitadas,
pues el bit GIE de habilitación global de las
interrupciones, es puesto a ‘1’.
Operación: TOS ⇒ PC ; 1⇒ GIE
Operando: -
Flag: -
Número de
1
palabras:
Número de
2
ciclos:
Ejemplo: RETFIE
Antes de la instrucción: PC = x
GIE = 0
Después de la instrucción: PC = TOS
GIE = 1

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

CLRWDT Iniciar el temporizador del watchdog

Sintaxis: [etiqueta] CLRWDT


Descripción: El temporizador del watchdog es repuesto a cero. el prescaler
del temporizador de Watchdog es también puesto a 0 y
también los bits del registro de estado son puestos a ‘uno’.
Operación: 0 ⇒ WDT
0 ⇒ prescaler de WDT
1⇒
1⇒
Operando: -
Flag:
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo: CLRWDT
Antes de la instrucción: Contador de WDT = x
Prescaler de WDT = 1:128
Después de la instrucción: Contador del WDT = 0x00
Prescale del WDT = 0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.


ELT3822 MICROCONTROLADORES

SLEEP Modo de reposo

Sintaxis: [etiqueta] SLEEP


Descripción: El procesador entra en el modo de bajo consumo.
El oscilador para.
El bit (Power Down) del registro Status es puesto a ‘0’.
El bit (Timer Out) es puesto a ‘1’.
El temporizador de WDT (Watchdog) y
el respectivo prescaler son repuestos a ‘0’.
Operación: 0 ⇒ WDT
0 ⇒ prescaler del WDT
1 ⇒ ΤΟ
0 ⇒ PD
Operando: -
Flag:
Número de
1
palabras:
Número de
1
ciclos:
Ejemplo 1: SLEEP
Antes de la instrucción: Contador del WDT = x
Prescaler del WDT = x
Después de la instrucción: Contador del WDT = 0x00
Prescaler del WDT = 0

SET DE INSTRUCCIONES PIC 16F84 J. J. Castelo O.

Potrebbero piacerti anche