Sunteți pe pagina 1din 28

.

UNIVERSIDAD NACIONAL
PEDRO RUIZ GALLO

FACULTAD DE CIENCIAS FSICAS


Y MATEMTICAS

CURSO :

Sistemas Digitales II

INTEGRANTES:

Monja Iman Juan Alexis

Efio Sosa Vctor

DOCENTE:

Dr. Sandra Lissette Aznarn Guevara

septiembre de 2017
RESUMEN

Los microcontroladores PIC(PIC16Cxxx) de gama media, es la gama ms


variada y completa de los PIC, con encapsulados desde 18 a 68 pines. Tiene
un conjunto de 35 instrucciones de 14 bits de ancho. Permite adems
caractersticas importantes que no soportan los anteriores como son:
- Interrupciones
- Pila de 8 niveles que permite anidamiento de subrutinas.
Esta familia a su vez se puede dividir en subfamilias en funcin de los
recursos de que se dispongan.
ASTRACT

The mid-range PIC (PIC16Cxxx) microcontrollers, is the most varied and


complete range of PICs, with encapsulates from 18 to 68 pins. It has a set
of 35 14-bit width instructions. It also allows important features that do
not support the previous ones as they are:
- Interruptions
- Stack of 8 levels that allows nesting of subroutines.
This family in turn can be divided into subfamilies depending on the
resources available.
INTRODUCCIN

Desde el punto de vista de la arquitectura, la caracterstica ms importante


de los PIC es que utilizan la Harvard, frente a la de Von Neumann que es la
habitual.
La arquitectura Harvard tiene la memoria de programa y la memoria de
datos separadas y se accede a ellas mediante buses distintos. Esto mejora
el ancho de banda sobre la tradicional arquitectura secuencial, en la cual
los programas y datos son buscados en la misma memoria, utilizando el
mismo bus. En la arquitectura Harvard mientras se accede a la memoria de
programa, sobre la memoria de datos se puede estar leyendo o escribiendo,
lo que permite ejecutar una instruccin a la vez que se busca la siguiente.
Adems de las caractersticas antes mencionadas, otras caractersticas que
poseen los PIC de Gama Media son:
a) Memoria no voltil de programa de hasta 8K x 14 de tamao,
direccionada por el contador de programa(PC) de 13 bits.
b) Memoria RAM de datos de hasta 368 x 8 de tamao, direccionada
por el cdigo de operacin o por el registro FSR y parte del registro
STATUS.
c) Unidad aritmtico lgica(ALU), de 8 bits con un registro acumulador
de trabajo asociado tambin de 8 bits. Realiza operaciones
aritmticas y lgicas utilizando siempre como operando el registro
acumulador y otro dato perteneciente a cualquier registro. Realiza
operaciones de suma, resta y desplazamiento. Opera en
complemento a dos(C2). Dependiendo del resultado, afecta a
algunos bits del registro de estado.
MARCO TEORICO

la gama media, que tiene 35 instrucciones. La mayora son idnticas


a las de la gama baja, si bien las diferencias sern convenientemente
explicadas.
Las caractersticas del juego de instrucciones vienen determinadas
por el tipo de arquitectura que tienen los PIC:
La arquitectura Harvard.
Conjunto de instrucciones reducido (RISC).

La arquitectura Harvard
tiene la memoria de programa y la memoria de datos separadas y se
accede a ellas mediante buses distintos. Esto mejora el ancho de
banda sobre la tradicional arquitectura secuencial, en la cual los
programas y datos son buscados en la misma memoria, utilizando el
mismo bus. En la arquitectura Harvard mientras se accede a la
memoria de programa, sobre la memoria de datos se puede estar
leyendo o escribiendo, lo que permite ejecutar una instruccin a la
vez que se busca la siguiente.

CONJUNTO DE INSTRUCCIONES
Las instrucciones de los PIC se pueden dividir en cuatro categoras:
Instrucciones sobre registros orientadas a bytes.
Instrucciones sobre registros orientadas a bits.
Instrucciones para operaciones con literales.
Instrucciones de control.
Mnemonic, Description 14-bitsopcode Status notes
operands Ciclos Msb Lsb affected

BYTE-ORIENTED FILE REGISTER OPERATIONS


ADDWF f,d Add w and f 1 00 0111 dfff ffff C,DC,Z 1,2
ANDWF f,d AND w with f 1 00 0101 dfff ffff Z 1,2
CLRF f Clear f 1 00 0001 lfff ffff Z 2
CLRW - Clear W 1 00 0001 0xxx xxxx Z
COMF f,d Complement f 1 00 1001 dfff ffff Z 1,2
DECF f,d Decrement f 1 00 0011 dfff ffff Z 1,2
DECFSZ f,d Decrement f,Skip if 0 1(2) 00 1011 dfff ffff 1,2,3
INCF f,d Increment f 1 00 1010 dfff ffff Z 1,2
INCFSZ f,d Increment f,Skip if 0 1(2) 00 1111 dfff ffff 1,2,3
IORWF f,d Inclusive OR W whith f 1 00 0100 dfff ffff Z 1,2
MOVF f,d Move f 1 00 1000 dfff ffff Z 1,2
MOVWF f Move W to f 1 00 0000 lfff ffff
NOP - No operation 1 00 0000 0xx0 0000
RLF f,d Rotate left trough Carry 1 00 1101 dfff ffff C 1,2
RRF f,d Rotate Right Trough 1 00 1100 dfff ffff C 1,2
Carry
SUBWF f,d Subtract W from f 1 00 0010 dfff ffff C,DC,Z 1,2
SWAPF f,d Swap nibles in f 1 00 1110 dfff ffff 1,2
XORWF f,d Exclusive OR W with f 1 00 0110 dfff ffff Z 1,2

Mnemonic, Description 14-bitsopcode Status notes


operands Ciclos Msb Lsb affected

BIT-ORIENTED FILE REGISTER OPERATIONS


BCF f,b Bit Clear f 1 01 00bb bfff ffff 1,2
BSF f,b Bit Set f 1 01 01bb bfff ffff 1,2
BTFSC f,b Bit Test f, Skip if Clear 1(2) 01 10bb bfff ffff 3
BTFSS f,b Bit Test f, Skip if Set 1(2) 01 11bb bfff ffff 3
Mnemonic, Description 14-bitsopcode Status notes
operands Ciclos Msb Lsb affected

LITERAL AND CONTROL OPERATIONS


ADDLW Add literal an W 1 11 111x kkkk kkkk C,DC,Z
ANDLW AND literal with W 1 11 1001 kkkk kkkk Z
CALL Call subroutine 2 10 0kkk kkkk kkkk
CLRWDT Clear Watchdog Timer 1 00 0000 0110 0100 TO,PD
GOTO Go to address 2 10 1kkk kkkk kkkk
IORLW Inclusive OR literal with 1 11 1000 kkkk kkkk Z
W
MOVLW Move literal to W 1 11 00xx kkkk kkkk
RETFIE Return from interrup 2 00 0000 0000 1001
RETLW Return with literal in W 2 11 01xx kkkk kkkk
RETURN Return from Subroutine 2 00 0000 0000 1000
SLEEP Go into stanby mode 1 00 0000 0110 0011 TO,PD
SUBLW Sustract W from literal 1 11 110x kkkk kkkk C,DC,Z
XORLW Exclusive OR literal witth 1 11 1010 kkkk kkkk Z
W

INSTRUCCIONES CON LITERALES Y DE CONTROL

1. ADDLW Suma un literal

Sintaxis: [label] ADDLW k

Operandos: 0k255

Operacin: (W)+(k) =>(W)

Flags afectados: C, DC, Z

Cdigo OP: 11 111x kkkk kkkk

Descripcin: Suma el contenido del registro W y k, guardando el resultado en W.

Ejemplo: ADDLW 0xC2

Antes: W = 0x17

Despus: W = 0xD9
2. ANDLW W AND literal

Sintaxis: [label] ANDLW k

Operandos: 0k255

Operacin: (W) AND (k) =>(W)

Flags afectados: Z

Cdigo OP: 11 1001 kkkk kkkk

Descripcin: Realiza la operacin lgica AND entre el contenido del registro W y k, guardando el
resultado en W.

Ejemplo: ADDLW 0xC2

Antes: W = 0x17,

Despus: W = 0xD9

3. CALL: Salto a subrutina


Sintaxis: [etiqueta] CALL k
Operandos: 0 k 2047
Operacin: (PC) + 1 TOS,
k PC<10:0>,
(PCLATCH<4:3>) PC<12:11>
Flags afectados: Ninguno
Cdigo OP: 10 0kkk kkkk kkkk
Descripcin: Salto a subrutina. Primero se guardan en la pila los 13 bits de la direccin de retorno
(PC + 1). Despus se carga en el PC los 11 bits del inmediato k, los dos bits ms significativos los
proporciona el PCLATCH<4:3>. CALL tarda dos ciclos de instruccin en ejecutarse.

Ejemplo: PROGRAMA CALL SUBRUTINA


Antes de la instruccin PC=direccin de PROGRAMA
Despus de la instruccin
TOS = direccin de PROGRAMA +1
PC = direccin de SUBRUTINA

4. CLRWDT: Borra el Watchdog


Sintaxis: [etiqueta] CLRWDT
Operandos: Ninguno
Operacin: 00h WDT
0 predivisor del WDT
1 TO
1 PD
Flags afectados: TO, PD
Cdigo OP: 00 0000 0110 01000
Descripcin: Se borra el contenido tanto del Watchdog como de su predivisor. Los bits TO y PD
del Registro de Estado se ponen a 1.
Ejemplo: CLRWDT
Antes de la instruccin Temporizador WDT = x
Predivisor WDT = 1:128
Despus de la instruccin Temporizador WDT = 0x00
Registro pre divisor WDT = 0 TO = 1
PD = 1 Pre divisor WDT = 1:128

5. GOTO: Salto Incondicional

Sintaxis: [etiqueta] GOTO k

Operandos: 0 k 2047

Operacin: k PC<10:0>

PCLATCH<4:3> PC<12:11>

Flags afectados: Ninguno

Cdigo OP: 10 1kkk kkkk kkkk

Descripcin: Salto incondicional. Se carga en el PC<10:0> los 11 bits del inmediato k. Los dos bits
restantes los proporciona el PCLATCH<4:3>. GOTO tarda dos ciclos de instruccin en ejecutarse.

Ejemplo: GOTO SALTO

Despus de la instruccin PC = direccin SALTO

6. IORLW: O lgica entre Literal y W

Sintaxis: [etiqueta] IORLW k

Operandos: 0 k 255

Operacin: (W) OR (k) W

Flags afectados: Z

Cdigo OP: 11 1000 kkkk kkkk

Descripcin: Realiza la operacin lgica OR entre el registro W y los ocho bits del literal k. El
resultado se almacena en el registro W.

Ejemplo: ANDLW 0x35

Antes de la instruccin W = 0x9A

Despus de la instruccin W = 0xBF


Z=0

7. MOVLW: Mueve un Literal a W

Sintaxis: [etiqueta] MOVLW k

Operandos: 0 k 255

Operacin: kW

Flags afectados: Ninguno

Cdigo OP: 11 00xx kkkk kkkk

Descripcin: El registro W se carga con el valor de los ocho bits del literal k.

Ejemplo: MOVLW 0x5A

Despus de la instruccin W = 0x5A


8. RETFIE: Retorno de rutina de interrupcin

Sintaxis: [etiqueta] RETFIE

Operandos: Ninguno

Operacin: TOS PC

1 GIE

Flags afectados: Ninguno

Cdigo OP: 00 0000 0000 1001

Descripcin: Retorno de una rutina de interrupcin. Los 13 bits de la direccin de retorno los carga
en el PC desde la pila. El bit GIE (INTCON<7>) se pone automticamente a 1, habilitando nuevas
interrupciones. Requiere dos ciclos de instruccin para su ejecucin.

Ejemplo: RETFIE

Despus de la instruccin PC = TOS

GIE = 1

9. RETLW: Retorno de subrutina con Literal en el W

Sintaxis: [etiqueta] RETLW k

Operandos: 0 k 255

Operacin: kW

TOS PC

Flags afectados: Ninguno

Cdigo OP: 11 01xx kkkk kkkk


Descripcin: El registro W se carga con los ocho bits del literal k. El PC toma los 13 bits de la
direccin de retorno del nivel superior de la pila. Requiere dos ciclos de instruccin para su ejecucin.

Ejemplo: PROGRAMA CALL TABLA

...............

...............

TABLA ADDWF PC

RETLW k0

RETLW k1

.........................

RETLW kn

Antes de la instruccin W = 0x07

Despus de la instruccin W = valor de k7

PC= TOS = direccin de PROGRAMA +1

10. RETURN: Retorno de subrutina

Sintaxis: [etiqueta] RETURN

Operandos: Ninguno

Operacin: TOS PC

Flags afectados: Ninguno

Cdigo OP: 00 0000 0000 1000

Descripcin: Retorno de una subrutina de interrupcin. Los 13 bits de la direccin de retorno los
carga en el PC desde la pila. Requiere dos ciclos de instruccin para su ejecucin.

Ejemplo: FIN RETURN

Despus de la instruccin PC = TOS

11. SLEEP: Modo de reposo

Sintaxis: [etiqueta] SLEEP

Operandos: Ninguno

Operacin: 00h WDT

0 predivisor del WDT

1 TO

0 PD

Flags afectados: TO , PD
Cdigo OP: 00 0000 0110 0011

Descripcin: El bit TO se pone a 1, y el bit PD del registro de Estado se pone a 0. Adems tambin se
pone a cero el predivisor del predivisor del WDT. El procesador entra en el modo SLEEP o de reposo,
dejando el oscilador principal de funcionar.

Ejemplo: SLEEP

12. SUBLW: Resta W de un Literal

Sintaxis: [etiqueta] SUBLW k

Operandos: 0 k 255

Operacin: k (W) W

Flags afectados: C, DC, Z

Cdigo OP: 11 110x kkkk kkkk

Descripcin: El registro W se resta (mediante complemento a 2) de los ocho bits del


literal k. El resultado es almacenado en el registro W.

Ejemplo: SUBLW 0x02

Antes de la instruccin W = 0x01

C =x

Z=x

Despus de la instruccin W = 0x01

C = 1 ;el resultado es positivo

Z=0

13. XORLW: O exclusiva entre un Literal y W

Sintaxis: [etiqueta] XORLW k

Operandos: 0 k 255

Operacin: (W) XOR (k) W

Flags afectados: Z

Cdigo OP: 11 1010 kkkk kkkk

Descripcin: Realiza la operacin lgica O exclusiva entre el registro W y los ocho bits
del literal k. El resultado es almacenado en el registro W.

Ejemplo: XORLW 0xAF ;1010 1111 (0xAF)

Antes de la instruccin W = 0xB5 ;1011 1010 (0xB5)


Despus de la instruccin W = 0x1A ; ----------- ---------

Z=0 ;0001 1010 (0x1A)

INSTRUCCIONES SOBRE REGISTROS ORIENTADOS A BITS

14. BCF: Borra un bit

Sintaxis: [etiqueta] BCF f, b

Operandos: 0 f 127

0b7

Operacin: 0 f<b>

Flags afectados: Ninguno

Cdigo OP: 01 00bb bfff ffff

Descripcin: Borra el bit b del registro f.

Ejemplo: BCF FLAG_REG, 7

Antes de la instruccin FLAG_REG = 0xC7 ;1100 0111

Despus de la instruccin FLAG_REG = 0x47 ;0100 0111

15. BSF: Pone a 1 un bit


Sintaxis: [etiqueta] BSF f, b
Operandos: 0 f 127
0b7
Operacin: 1 f<b>
Flags afectados: Ninguno
Cdigo OP: 01 01bb bfff ffff
Descripcin: Pone a 1 el bit b del registro f.
Ejemplo: BSF FLAG_REG, 7
Antes de la instruccin FLAG_REG = 0x0A ;0000 1010
Despus de la instruccin FLAG_REG = 0x8A ;1000 1010
16. BTFSC: Testeo de bit y salto si es 0

Sintaxis: [etiqueta] BTFSC f, b

Operandos: 0 f 127

0b7

Operacin: Salta si (f<b>) = 0


Flags afectados: Ninguno

Cdigo OP: 01 10bb bfff ffff

Descripcin: Si el bit b del registro f es 0, se salta una instruccin y se continua con


la ejecucin.

Ejemplo: AQU BTFSC FLAG, 4

FALSO GOTO REPETIR

VERDAD ..........

................................

Antes de la instruccin PC = direccin de AQU

Despus de la instruccin Si FLAG, 4 =0

PC = direccin de VERDAD

Si FLAG, 4 = 1

PC = direccin de FALSO

17. BTFSS: Testeo de bit y salto si es 1

Sintaxis: [etiqueta] BTFSS f, b

Operandos: 0 f 127

0b7

Operacin: Salta si (f<b>) = 1

Flags afectados: Ninguno

Cdigo OP: 01 11bb bfff ffff

Descripcin: Si el bit b del registro f es 1, se salta una instruccin y se continua con


la ejecucin.

Ejemplo: AQU BTFSS FLAG, 4

FALSO GOTO REPETIR

VERDAD ..........

.............................

Antes de la instruccin PC = direccin de AQU

Despus de la instruccin Si FLAG, 4 =1

PC = direccin de VERDAD
Si FLAG, 4 = 0

PC = direccin de FALSO

INSTRUCCIONES SOBRE REGISTROS ORIENTADOS A BYTES

18. ADDWF: Suma W y el registro f

Sintaxis: [etiqueta] ADDWF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: (W) + (f) dest

Flags afectados: C, DC, Z

Cdigo OP: 00 0111 dfff ffff

Descripcin: Suma el contenido del registro W y el registro f. Si d es 0, el resultado


se almacena en el registro W, mientras que si es 1 se almacena en el registro f.

Ejemplo: ADDWF FSR, 0

Antes de la instruccin W = 0x17

FSR = 0xC2

Despus de la instruccin W = 0xD9

FSR = 0xC2

19. ANDWF: Y lgica entre W y f

Sintaxis: [etiqueta] ANDWF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: (W) AND (f) dest

Flags afectados: Z

Cdigo OP: 00 0101 dfff ffff

Descripcin: Realiza la operacin lgica AND entre W y el registro f. Si d es 0, el


resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro
f.

Ejemplo: ANDWF FSR, 1


Antes de la instruccin W = 0x17 ;0001 0111 (0x17)

FSR = 0xC2 ;1100 0010 (0xC2)

Despus de la instruccin W = 0x17 ;0000 0010 (0x02)

FSR = 0x02

20. CLRF: Borra un registro f

Sintaxis: [etiqueta] CLRF f

Operandos: 0 f 127

Operacin: 00h f

1Z

Flags afectados: Z

Cdigo OP: 00 0001 1fff ffff

Descripcin: Se borra el contenido del registro f y el flag Z de estado se activa.

Ejemplo: CLRF FLAG_REG

Antes de la instruccin FLAG_REG = 0x5A

Despus de la instruccin FLAG_REG = 0x00

Z=1

21. CLRW: Borra el registro W

Sintaxis: [etiqueta] CLRW

Operandos: Ninguno

Operacin: 00h W

1Z

Flags afectados: Z

Cdigo OP: 00 0001 1xxx xxxx

Descripcin: Se borra el contenido del registro W y el flag Z de estado se activa.

Ejemplo: CLRW

Antes de la instruccin W = 0x5A


Despus de la instruccin W = 0x00

Z=1

22. COMF: Complementa el registro f

Sintaxis: [etiqueta] COMF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: ( f ) dest

Flags afectados: Z

Cdigo OP: 00 1001 dfff ffff

Descripcin: Complementa el contenido del registro f. Si d es 0, el resultado se


almacena en el registro W, mientras que si es 1 se almacena en el registro f.

Ejemplo: COMF REG1, 0

Antes de la instruccin REG1 = 0x13

Despus de la instruccin REG1 = 0x13

W = 0xEC

23. DECF: Decrementa el registro f

Sintaxis: [etiqueta] DECF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: (f) - 1 dest

Flags afectados: Z

Cdigo OP: 00 0011 dfff ffff

Descripcin: Decrementa el contenido del registro f. Si d es 0, el resultado se


almacena en el registro W, mientras que si es 1 se almacena en el registro f.

Ejemplo: DECF CONT, 1

Antes de la instruccin CONT = 0x01


Z=0

Despus de la instruccin CONT = 0x00

Z=1

24. DECFSZ: Decrementa el registro f y salta si es 0

Sintaxis: [etiqueta] DECFSC f, d

Operandos: 0 f 127

d [0, 1]

Operacin: (f) 1 dest; salta si el resultado es 0

Flags afectados: Ninguno

Cdigo OP: 00 1011 dfff ffff

Descripcin: Decrementa el contenido del registro f. Si d es 0, el resultado se


almacena en el registro W, mientras que si es 1 se almacena en el registro f. Si el
resultado es 0, se salta la siguiente instruccin y se continua con la ejecucin.

Ejemplo: RESTA DECFSZ CONT, 1

GOTO LAZO

CONTINUAR ...........

..............................................

Antes de la instruccin PC = direccin de RESTA

CONT = 0x01

Despus de la instruccin CONT = 0x00

PC = direccin de CONTINUAR

25. INCF: Incrementa el registro f

Sintaxis: [etiqueta] INCF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: (f) + 1 dest

Flags afectados: Z

Cdigo OP: 00 1010 dfff ffff


Descripcin: Incrementa el contenido del registro f. Si d es 0, el resultado se
almacena en el registro W, mientras que si es 1 se almacena en el registro f.

Ejemplo: INCF CONT, 1

Antes de la instruccin CONT = 0xFF

Z=0

Despus de la instruccin CONT = 0x00

Z=1

26. INCFSZ: Incrementa el registro f y salta si es 0

Sintaxis: [etiqueta] INCFSC f, d

Operandos: 0 f 127

d [0, 1]

Operacin: (f) + 1 dest; salta si el resultado es 0

Flags afectados: Ninguno

Cdigo OP: 00 1111 dfff ffff

Descripcin: Incrementa el contenido del registro f. Si d es 0, el resultado se


almacena en el registro W, mientras que si es 1 se almacena en el registro f. Si el
resultado es 0, se salta la siguiente instruccin y se continua con la ejecucin.

Ejemplo: SUMA INCFSZ CONT, 1

GOTO LAZO

CONTINUAR ...........

..............................................

Antes de la instruccin PC = direccin de RESTA

CONT = 0xFF

Despus de la instruccin CONT = 0x00

PC = direccin de CONTINUAR

27. IORWF: O lgica entre W y f

Sintaxis: [etiqueta] IORWF f, d

Operandos: 0 f 127

d [0, 1]
Operacin: (W) OR (f) dest

Flags afectados: Z

Cdigo OP: 00 0100 dfff ffff

Descripcin: Realiza la operacin lgica OR entre W y el registro f. Si d es 0, el


resultado se almacena en el registro W, mientras que si es 1 se almacena en el registro
f.

Ejemplo: IORWF REG, 0

Antes de la instruccin REG = 0x13

W = 0x91

Despus de la instruccin REG = 0x13

W = 0x93

Z=0

28. MOVF: Mover a f

Sintaxis: [etiqueta] MOVF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: (f) dest

Flags afectados: Z

Cdigo OP: 00 1000 dfff ffff

Descripcin: El contenido del registro f se mueve al destino. Si d es 0, el resultado


se almacena en el registro W, mientras que si es 1 se almacena en el registro f.

Ejemplo: MOVF FSR, 0

Antes de la instruccin W = 0x00

FSR = 0xC2

Despus de la instruccin W = 0xC2

Z=0

29. MOVWF: Mueve W al registro f

Sintaxis: [etiqueta] MOVWF f

Operandos: 0 f 127
Operacin: (W) f

Flags afectados: Ninguno

Cdigo OP: 00 0000 1fff ffff

Descripcin: Mueve el contenido del registro W al registro f.

Ejemplo: MOVWF OPTION_REG

Antes de la instruccin OPTION_REG = 0xFF

W = 0x4F

Despus de la instruccin OPTION_REG = 0x4F

W = 0x4F

30. NOP: No operar

Sintaxis: [etiqueta] NOP

Operandos: Ninguno

Operacin: No realiza ninguna operacin

Flags afectados: Ninguno

Cdigo OP: 00 000 0xx0 0000

Descripcin: No realiza ninguna operacin.

Ejemplo: ETIQUETA NOP

Antes de la instruccin PC = direccin de ETIQUETA

Despus de la instruccin PC = direccin de ETIQUETA + 1

31. RLF: Rota f a la izquierda a travs del Carry

Sintaxis: [etiqueta] RLF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: Rotacin a la izquierda de f.

Flags afectados: C

Cdigo OP: 00 1101 dfff ffff


Descripcin: El contenido del registro f se rota una posicin a la izquierda a travs del
flag de carry. Si d es 0, el resultado se almacena en el registro W, mientras que si es 1
se almacena en el registro f.

Ejemplo: RLF REG1, 0

Antes de la instruccin REG1 = 1110 0110


C=0
Despus de la instruccin REG1 = 1110 0110
W = 1100 1100
C=1
32. RRF: Rota f a la derecha a travs del Carry

Sintaxis: [etiqueta] RRF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: Rotacin a la derecha de f.

Flags afectados: C

Cdigo OP: 00 1100 dfff ffff

Descripcin: El contenido del registro f se rota una posicin a la derecha a travs del
flag de carry. Si d es 0, el resultado se almacena en el registro W, mientras que si es 1
se almacena en el registro f.

Ejemplo: RLF REG1, 0

Antes de la instruccin REG1 = 1110 0110

C=0

Despus de la instruccin REG1 = 1110 0110

W = 0111 0011

C=0

33. SUBWF: Resta W del registro f

Sintaxis: [etiqueta] SUBWF f, d


Operandos: 0 f 127

d [0, 1]

Operacin: (f) - (W) dest

Flags afectados: C, DC, Z

Cdigo OP: 00 0010 dfff ffff

Descripcin: El registro W se resta (mediante complemento a 2) del registro f. Si d


es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena en el
registro f.

Ejemplo: SUBWF REG1, 1

Antes de la instruccin REG1 =3

W=2

C=x

Z=x

Despus de la instruccin REG1 = 1

W=2

C = 1; el resultado es positivo

Z=0

34. SWAPF: Intercambia los bytes del registro f

Sintaxis: [etiqueta] SWAPF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: (f<3:0>) dest<7:4>

(f<7:4>) dest<3:0>

Flags afectados: Ninguno

Cdigo OP: 00 1110 dfff ffff

Descripcin: Los cuatro bits ms significativos y menos significativos del registro f, son
intercambiados entre si. Si d es 0, el resultado se almacena en el registro W, mientras
que si es 1 se almacena en el registro f.

Ejemplo: SWAPF REG1, 0


Antes de la instruccin REG1 = 0xA5

Despus de la instruccin REG1 = 0xA5

W = 0x5A

35. XORWF: O exclusiva entre W y el registro f

Sintaxis: [etiqueta] XORWF f, d

Operandos: 0 f 127

d [0, 1]

Operacin: (W) XOR (f) dest

Flags afectados: Z

Cdigo OP: 00 0110 dfff ffff

Descripcin: Realiza la operacin lgica O exclusiva entre el registro W y el registro f.


Si d es 0, el resultado se almacena en el registro W, mientras que si es 1 se almacena
en el registro f.

Ejemplo: XORWF REG, 1

Antes de la instruccin REG = 0xAF ;1010 1111 (0xAF)

W = 0xB5 ;1011 1010 (0xB5)

Despus de la instruccin REG = 0x1A ; --------------- ---------

W = 0xB5 ;0001 1010 (0x1A)


USO DE LOS MICROCONTROLADORES EN LA MEDICINA
Los dos usos principales que tienen los microprocesadores en aplicaciones mdicas son:

Procesado de control

Procesado de imgenes

En la Figura se muestra una grfica en la que se encuentran algunos de los aparatos mdicos ms
utilizados en la actualidad, clasificados atendiendo al uso que hacen del procesador , si es para
control o para imgenes, y atendiendo tambin a la complejidad de los clculos que se realizan.
RECOMENDACIONES

Como ya hemos visto, para que el microcontrolador lleve a cabo una tarea,
debemos indicarle exactamente qu debe hacer, o, en otras palabras,
debemos escribir el programa que el micro ejecutara. Ya hemos visto varios
ejemplos y muchas de las instrucciones del pic, estas 35 instrucciones son
las mismas para toda la gama media de los microcontroladores pic as que
si ms adelante se quiere realizar un programa para un pic 16F877 se usaran
las mismas instrucciones.

CONCLUSIONES
El mercado de los microcontroladores est creciendo cada ao y parece no
tener barreras. Los microcontroladores a menudo se encuentran en
aplicaciones domsticas (microondas, refrigeradores, televisin, equipos
de msica), ordenadores con sus componentes (impresoras, mdems,
lectores de discos), coches (ingeniera de control, diagnostico, control de
climatizacin), control medioambiental (invernaderos, fabricas, casas),
instrumentacin, aeronutica, y miles de usos ms. En muchos podemos
encontrar ms de un microcontrolador.

BIBLIOGRAFA
Los PIC de Gama Media: Arquitectura y Tecnicas de Programacion.
LINKGOGRAFIA
http://www.monografias.com/trabajos34/microcontroladores-
genericos/microcontroladores-genericos.shtml

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