Sunteți pe pagina 1din 10

Nicky Eduardo Crdova Plaza - Deber 2 Par 2

a) Estudio de las 35 instrucciones del PIC16F887


Instrucciones Orientadas a registros
Instruccin ADDWF:
Suma el valor del contenido del
registro w y el contenido del registro f, y el
resultado se guarda en el registro escogido
de acuerdo al valor del bit d.
Sintaxis: ADDWF f, d
Codificacin: 00 0111 dfff ffff
Palabras/Ciclos: 1, 1
Operacin: f + w --> f si d=1
f + w --> w si d=0
Bits del registro de estado que se afectan: C, DC, Z.
Instruccin ANDWF:
Operacin lgica AND entre el
registro w y un registro f, y el resultado se
guarda en el registro escogido de acuerdo al
valor del bit d
Sintaxis: ANDWF f, d
Codificacin: 1110 kkkk
kkkk
11
1001
kkkk
kkkk
Palabras/Ciclos: 1, 1
Operacin: w and f --> f si d=1
w and f --> w si d=0
Bits del registro de estado que se afectan: Z.
Instruccin CLRF:
Borra el contenido del registro f, lo
carga con 00 (CLEAR F WITH F).
Sintaxis: CLRF f
Codificacin: 0000 011f
ffff
00
0001
1fff
ffff
Palabras/Ciclos: 1, 1
Operacin: 00 --> f
Bits del registro de estado que se afectan: Z.
Instruccin CLRW:
Borra el contenido del registro w, lo
carga con 00 (CLEAR W REGISTER).
Sintaxis: CLRW
Codificacin: 0000 0100
0000
00
0001
0xxx
xxxx
Palabras/Ciclos: 1, 1
Operacin: 00 --> w
Bits del registro de estado que se afectan: Z.

Instruccin COMF:
Complementa el contenido del registro
f (cambia unos por ceros y viceversa), el
resultado se guarda en el registro escogido
segn el valor del bit d (COMPLEMENT F).

Nicky Eduardo Crdova Plaza - Deber 2 Par 2

Sintaxis: COMF f,d


Codificacin: 0010 01df
ffff
00
1001
dfff
ffff
Palabras/Ciclos: 1, 1
Operacin: ~f --> f si d=1
~f --> w si d=0
Bits del registro de estado que se afectan: Z.
Instruccin DECF:

Se 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' (DECREMENT F TO F).

Sintaxis: DECF f,d


Codificacin: 0000 11df
ffff
00
0011
dfff
ffff
Palabras/Ciclos: 1, 1
Operacin: f - 1 --> f si d=1
f - 1 --> w si d=0
Bits del registro de estado que se afectan: Z.
Instruccin DECFSZ:
Decrementa en uno el contenido del
registro f, si el contenido queda en 00 el
micro salta una lnea del programa, el
resultado obtenido se guarda en el registro
escogido segn el valor del bit d
(DECREMENT F, SKIP IF ZERO).
Sintaxis: DECFSZ f,d
Codificacin: 0010 11df
ffff
00
1011
dfff
ffff
Palabras/Ciclos: 1, 1 (2)
Operacin: f - 1 --> f si d=1
f - 1 --> w si d=0
Bits del registro de estado que se afectan: Ninguno.
Instruccin INCF:
Incrementa en uno el contenido del
registro f, el resultado se guarda en el
registro escogido segn el valor del bit d.
Sintaxis: INCF f,d
Codificacin: 101k kkkk
kkkk
10
1kkk
kkkk
Palabras/Ciclos: 1, 1
Operacin: f + 1 --> f si d=1
f + 1 --> w si d=0

kkkk

Bits del registro de estado que se afectan: Z.

Instruccin INCFSZ:
Incrementa en uno el contenido del
registro f, si el contenido de f queda en
00 el micro salta una lnea del programa, el

Nicky Eduardo Crdova Plaza - Deber 2 Par 2


resultado se guarda en el registro escogido
segn el valor del bit d (INCREMENT F, SKIP
IF ZERO).
Sintaxis: INCFSZ f,d
Codificacin: 0011 11df
ffff
00
1111
dfff
ffff
Palabras/Ciclos: 1, 1(2)
Operacin: f + 1 --> f si d=1
f + 1 --> w si d=0
En ambos casos: Salto si f + 1= 0
Bits del registro de estado que se afectan: Ninguno.
Instruccin IORWF:

Se 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
almacena en el registro 'f' (INCLUSIVE OR W WITH F).

Sintaxis: IORWF f,d


Codificacin: 0001 00df
ffff
11
0100
dfff
ffff
Palabras/Ciclos: 1, 1
Operacin: w OR f --> f si d=1
W OR f --> w si d=0
Bits del registro de estado que se afectan: Z.
Instruccin MOVF:
Mueve el contenido del registro f
hacia el registro W.
Sintaxis: MOVF f,d
Codificacin: 0010 00df
ffff
00
1000
dfff
ffff
Palabras/Ciclos: 1, 1
Operacin: f --> f si d=1
f --> w si d=0
Bits del registro de estado que se afectan: Z.
Instruccin MOVWF:
Mueve el contenido del registro W al
registro f.
Sintaxis: MOVWF f
Codificacin: 0000 001f
ffff
00
0000
1fff
ffff
Palabras/Ciclos: 1, 1
Operacin: w --> f
Bits del registro de estado que se afectan: Ninguno.
Instruccin NOP:

No realiza ninguna operacin, solo consume un


ciclo de reloj

Sintaxis: NOP
Codificacin: 0000 0000
0000
00
0xx0
0000
Palabras/Ciclos: 1, 1
Operacin: Ninguno.
Bits del registro de estado que se afectan: Ninguno.
Instruccin RLF:

Rotar el contenido del registro f un bit a


la izquierda, usando el carry como bit

Nicky Eduardo Crdova Plaza - Deber 2 Par 2


intermedio, el resultado se guarda en el
registro escogido segn el valor del bit d.
Sintaxis: RLF f, d
Codificacin: 0011 01df
ffff
00
1101 dfff ffff
Palabras/Ciclos: 1, 1
Operacin:
Rotacin de un bit a la izquierda del
contenido de f, pasando por el bit de
acarreo C. Si d=1 el resultado se almacena
en f si d=0 el resultado se almacena en W
Bits del registro de estado que se afectan: C.
Instruccin RRF:

Rotacin de un bit a la derecha del


contenido de f, pasando por el bit de
acarreo C. Si d=1 el resultado se introduce
en f, si d=0 el resultado se amacena en W

Sintaxis: RRF f, d
Codificacin: 0011 00df
ffff
00
1100 dfff ffff
Palabras/Ciclos: 1, 1
Operacin:
Rotacin de un bit a la izquierda del
contenido de f, pasando por el bit de
acarreo C. Si d=1 el resultado se almacena
en f si d=0 el resultado se almacena en W
Bits del registro de estado que se afectan: C.
Instruccin SUBWF:
Resta el contenido del registro W del
registro
f
usando
el
mtodo
de
complemento a dos, el bit de carry indica el
signo de la respuesta, el resultado se guarda
en el registro escogido segn el valor del bit
d.
Sintaxis: SUBWF f, d
Codificacin: 0000 10df
ffff
00
0010
dfff
ffff
Palabras/Ciclos: 1, 1
Operacin: f w --> f si d=1
f w --> w si d=0
Bits del registro de estado que se afectan: C, DC, Z.
Instruccin SWAPF:
Intercambia los cuatro bits altos y los
cuatro bits bajos del registro f, el nuevo
dato obtenido se guarda en el registro
seleccionado segn el valor del bit d.
Sintaxis: SWAPF f, d
Codificacin: 0011 11df
ffff
00
1110
dfff
ffff
Palabras/Ciclos: 1, 1
Operacin: f(0 - 3) --> f(4 - 7) y f(4 7) --> f(0 3)
resultado --> f si d=1
resulatdo --> w si d=0
Bits del registro de estado que se afectan: Ninguno.

Nicky Eduardo Crdova Plaza - Deber 2 Par 2

Instruccin XORWF:
Operacin lgica XOR entre el registro
W y el registro f, el resultado obtenido se
guarda en el registro seleccionado segn el
bit d.
Sintaxis: XORWF f, d
Codificacin: 0001 10df
ffff
00
0110
dfff
ffff
Palabras/Ciclos: 1, 1
Operacin: w OR (Exclusivo) f --> f si d=1
w OR (Exclusivo) f --> w si d=0
Bits del registro de estado que se afectan: Z.

Instrucciones Orientadas a Bits


Instruccin BCF: Pone en cero el bit b del registro f (BIT
CLEAR F)
Sintaxis: BCF f, b
Codificacin: 0100 bbbf
ffff
01
00bb bfff
ffff
Palabras/Ciclos: 1, 1
Operacin: 0 --> b(f)
Bits del registro de estado que se afectan: Ninguno
Instruccin BSF: Pone en uno el bit b del registro f (BIT SET
F)
Sintaxis: BSF f, b
Codificacin: 0101 bbbf
ffff
01
01bb bfff
ffff
Palabras/Ciclos: 1, 1
Operacin: 1 --> b(f)
Bits del registro de estado que se afectan: Ninguno
Instruccin BTFSC:
Pregunta por el bit b del registro f, si
dicho bit est en cero el programa se salta
una lnea y ejecuta la instruccin que all se
encuentre, si el bit estaba en uno no salta
una lnea, sino que ejecuta la instruccin
inmediatamente siguiente (BIT TEST, SKIP IF
CLEAR).
Sintaxis: BTFSC f, b
Codificacin: 0110 bbbf
ffff
01
10bb bfff
ffff
Palabras/Ciclos: 1, 1 o 2
Operacin: Salta si b(f) = 0
Bits del registro de estado que se afectan: Ninguno

Nicky Eduardo Crdova Plaza - Deber 2 Par 2


Instruccin BTFSS:
Pregunta por el bit b del registro f, si
dicho bit est en uno el programa se salta
una lnea y ejecuta la instruccin que all se
encuentre, si el bit estaba en cero no salta
una lnea, sino que ejecuta la instruccin
inmediatamente siguiente. (BIT TEST, SKIP
IF SET).
Sintaxis: BTFSS f, b
Codificacin: 0111 bbbf
ffff
01
11bb bfff
ffff
Palabras/Ciclos: 1, 1 o 2
Operacin: Salta si b(f) = 1
Bits del registro de estado que se afectan: Ninguno
Instrucciones Orientadas a constantes y de control
Instruccin CALL:
Llama una subrutina que est
ubicada en la posicin de memoria o
etiqueta k.
Sintaxis: CALL k
Codificacin: 1001 kkkk
kkkk
10
0kkk kkkk kkkk
Palabras/Ciclos: 1, 2
Operacin: Carga el apuntador de programa con la direccin
K
Bits del registro de estado que se afectan: Ninguno
Instruccin ADDLW:
Suma el valor del contenido del
registro w y un valor constante k, y el
resultado se guarda en w.
Sintaxis: ADDLW K
Codificacin: 11 111x kkkk kkk
Palabras/Ciclos: 1, 1
Operacin: k + w --> w
Bits del registro de estado que se afectan: C, DC, Z.
Instruccin ANDLW:
Operacin lgica AND entre el
registro w y una constante k, la operacin se
hace bit a bit, el resultado se guarda en el
registro w.
Sintaxis: ANDLW k
Codificacin: 1110 kkkk
kkkk
11
1001
kkkk
kkkk
Palabras/Ciclos: 1, 1
Operacin: w and k --> w
Bits del registro de estado que se afectan: Z.
Instruccin CLRWDT:
Reinicia en cero el conteo del
temporizador interno Watchdog Timer, para
que no sea reseteado el microcontrolador.

Nicky Eduardo Crdova Plaza - Deber 2 Par 2


Sintaxis: CLRWDT
Codificacin: 0000 0000
0100
00
0000
0110
0100
Palabras/Ciclos: 1, 1
Operacin: 00 --> WDT (Watchdog timer)
0 --> Predivisor del temporizador
Bits del registro de estado que se afectan: TO, PD.
Instruccin GOTO:

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.

Sintaxis: GOTO K
Codificacin: 101k kkkk
kkkk
10
1kkk
kkkk
kkkk
Palabras/Ciclos: 1, 2
Operacin: El contador de programa salta a la direccin k
Bits del registro de estado que se afectan: Ninguno.
Instruccin IORLW:

Se realiza la funcin lgica OR entre el registro


W y la contante "k". El resultado se almacena en el
registro W (INCLUSIVE OR LITERAL WITH W).

Sintaxis: IORLW k
Codificacin: 1101 kkkk
kkkk
11
1000
kkkk
kkkk
Palabras/Ciclos: 1, 1
Operacin: w OR k --> w
Bits del registro de estado que se afectan: Z.
Instruccin MOVLW:
Carga el registro W con el valor
constante k.
Sintaxis: MOVLW k
Codificacin: 1100 kkkk
kkkk
11
00xx
kkkk
kkkk
Palabras/Ciclos: 1, 1
Operacin: k --> w
Bits del registro de estado que se afectan: Ninguno.
Instruccin RETURN:
Retorno desde una subrutina.
Sintaxis: RETURN
Codificacin: 00 0000 0000 0000
Palabras/Ciclos: 1, 2
Operacin: PILA--> PC
Bits del registro de estado que se afectan: Ninguno.
Instruccin RETLW:

El programa regresa de la subrutina y carga el


valor de 8 bits del registro k en el registro W

Sintaxis: RETLW k
Codificacin: 1000 kkkk
kkkk
11
01xx
kkkk
Palabras/Ciclos: 1, 2
Operacin: PILA--> PC
K --> w

kkkk

Nicky Eduardo Crdova Plaza - Deber 2 Par 2


Bits del registro de estado que se afectan: Ninguno.
Instruccin RETFIE:
Retorna al programa luego de ejecutar
una interrupcin.
Sintaxis: RETFIE
Codificacin: 00 0000 0000 1001
Palabras/Ciclos: 1, 2
Operacin: PILA--> PC
1 --> GIE
Bits del registro de estado que se afectan: Ninguno.
Instruccin SLEEP:
El micro entra en un estado de standby
(dormido), de ese modo solamente sale si
ocurre una interrupcin.
Sintaxis: SLEEP
Codificacin: 0000 0000 0011
00
0000 0110 0011
Palabras/Ciclos: 1, 1
Operacin: 0--> PD
1 --> TO
00 --> WDT
0 --> Predivisor del WDT
Bits del registro de estado que se afectan: PD, TO.
Instruccin SUBLW:
Resta el contenido del registro W de la
constante k usando el mtodo de
complemento a dos, el resultado se guarda
en el registro W, el bit de carry indica el
signo de la respuesta.
Sintaxis: SUBLW k
Codificacin: 11 110x kkkk kkkk
Palabras/Ciclos: 1, 1
Operacin: k w --> w
Bits del registro de estado que se afectan: C, DC, Z.
Instruccin XORLW:
Operacin lgica XOR entre el registro
W y la constante k, el resultado se guarda
en el registro W.
Sintaxis: XORLW k
Codificacin: 1111
kkkk kkkk
11
1010 kkkk
kkkk
Palabras/Ciclos: 1, 1
Operacin: w or (exclusivo) k --> w
Bits del registro de estado que se afectan: Z.
b) Presentacin de 10 ejemplos propios utilizando estas instrucciones
Ejemplo 1
Bucle btfsc PORTA, botonera; Se verifica si esta en 0 lgico

Nicky Eduardo Crdova Plaza - Deber 2 Par 2


goto Apagar
se apaga el led

; Se encuentra en 1 lgico, por lo tanto

bsf PORTB, led


se enciende el led

; Se encuentra en 0 lgico, por lo tanto

goto Bucle
de la botonera

; Se revisa nuevamente la condicin

Ejemplo 2
PruebaEjemplo2
Decfsz Contador

; Decrementa el contador, si es cero sale

Goto PruebaEjemplo2; No es cero, se repite


Ejemplo 3
PruebaEjemplo3
Movlw 0xC3

Movlw Contador2

; Iniciamos contador2

PruebaEjemplo31
Decfsz Contador2,1

; Decrementa el contador, si es cero

sale
Goto PruebaEjemplo31 ; No es cero, se repite el ciclo
Decfsz Contador1,1

; Decrementa el contador

Goto PruebaEjemplo3

; Si no es cero se repite el ciclo

Ejemplo 4
PruebaEjemplo4
Btfss PORTA, botonera

; Se verifica si esta en 1 lgico

Goto PruebaEjemplo4

; Si es cero seguimos verificando

Ejemplo 5
PruebaEjemplo5
Btfss PORTA, botonera

; Se verifica si esta en 1 lgico

Goto PruebaEjemplo5

; Si es cero seguimos verificando

Incf contador,1
contador
Movfw contador
Ejemplo 6
BucleEjemplo6

; Se ha pulsado se incrementa
; Pasamos contador a w

Nicky Eduardo Crdova Plaza - Deber 2 Par 2


Nop
cualquier tarea

; Aqu el micro puede ejecutar

Goto BucleEjemplo6

Ejemplo 7
PruebaEjemplo7
Movlw 0x07

; Carga en el primer sumando

Addlw 0x06
Movwf suma

; Suma con el segundo sumando


; Resultado de la suma

Ejemplo 8
PruebaEjemplo8
Btfss PORTB, botonera

; Se verifica si esta en 1 lgico

Goto PruebaEjemplo5

; Si es cero seguimos verificando

Call antirebote

; Se elimina el efecto rebote

Btfss PORTB, botonera

; se verifica nuevamente

Goto PruebaEjemplo8

; falsa alarma se sigue revisando

Incf contador,1
contador
Movfw contador

; Se ha pulsado se incrementa
; Pasamos contador a w

Ejemplo 9
PruebaEjemplo9
Bcf PORTA, salida

; coloca la salida en cero

Ejemplo 10
PruebaEjemplo10
Bsf STATUS, RP0

; Pasamos del banco 0 al banco 1

Movlw

; RB0 como salida

b'11111110'

S-ar putea să vă placă și