Вы находитесь на странице: 1из 0

1

CARACTERISTICAS
MICROPROCESADOR
PIC 16C84
Caractersticas del Procesador del
PIC16C84
Procesador segmentado pipeline
Procesador tipo RISC
Disponer de arquitectura HARVARD
Formato de instrucciones ortogonal
Una misma longitud de instrucciones (14 bits)
Arquitectura en banco de registros
2
Procesador Pipeline
Procesador Pipeline
Ejemplo: Busqueda 1 Ejecuta 1
1. MOVLW 55h Busqueda 2 Ejecuta2
2 .MOVWF PORTB Busqueda 3 Ejecuta 3
3. CALL SUB_1 Busqueda 4 Salir
4. BSF PORTA,BIT3 Busqueda SUB_1 Ejecuta SUB_1
3
Tipos de Procesadores
CISC: (Complex Instruction Set Computer) Computadores de
juego de instrucciones complejo, que disponen de un
repertorio de instrucciones elevado (unas 80), algunas de ellas
muy sofisticadas y potentes, pero que como contrapartida
requieren muchos ciclos de mquina para ejecutar las
instrucciones complejas.
RISC: (Reduced Instruction Set Computer) Computadores de
juego de instrucciones reducido, en los que el repertorio de
instrucciones es muy reducido (en nuestro caso 35), las
instrucciones son muy simples y suelen ejecutarse en un ciclo
mquina. Adems los RISC debe de tener una estructura
pipeliney ejecutar todas las instrucciones a la misma velocidad
SISC:(Specific Instriction Set Computer) Computadores de
juego de instrucciones especfico.
MICROPROCESADOR
MODELO DE VON NEUMANN
MEMORIA
RAM
MEMORIA
ROM
CPU
RELOJ
BUS DE DIRECCIONES
BUS DE DATOS
4
MICROPROCESADOR
MODELO HARVARD
CPU
MEMORIA
DE DATOS
MEMORIA DE
INSTRUCCIONES
RELOJ
BUS DE DATOS BUS DE DIRECCIONES
Arquitectura Ortogonal
Arquitectura Ortogonal: Cualquier instruccin
puede utilizar cualquier elemento de la
arquitectura como fuente o destino.
5
Arquitectura basada en banco de
registros
MICROPROCESADOR
PIC 16C84
6
OSC1/CLKIN: Entrada externa de los
impulsos de reloj o conexin con el cristal de
cuarzo.
OSC2/CLKOUT: Salida de Fosc/4 en modo
oscilador R-C o conexin con el cristal de
cuarzo
VPP/MCCLR#: En modo grabacin por esta
patilla se introduce la tensin VPP (12-14V).
En funcionamiento normal esta patilla soporta
la peticin de Reset.
RA-RA3: Lneas de E/S del Puerto A
RA4/TOCK1: Lneas E/S del Puerto A o
entrada de impulsos de reloj para TMR0
RB0/INT : Lnea de E/S de la Puerto B o
peticin de Interrupcin.
RB1- RB7: Lneas de E/S del Puerto B
Patillaje PIC 16C84
Diagrama de Bloques PIC 16C84
7
Arquitectura del PIC16C84
Memoria de Programa EEPROM de 1Kx14bits.
Memoria de datos dividida en dos reas:
rea RAM formada por 22 registros de propsito especfico
(SFR) y 26 de propsito general .
rea EEPROM formada por 64 bytes
ALU de 8 bits y registro de trabajo W, del que normalmente
recibe un operando y enva el resultado, mientras que el otro
operando puede ser cualquier registro, memoria puerto o el propio
cdigo de instruccin.
Recursos conectados al bus de datos: Puerto A, Puerto B,
Temporizador TMR0, etc.
EL Contador de Programa
Cdigo de
Operacin
8
EL Contador de Programa para las
instrucciones CALL y GOTO
Cdigo de
Operacin
Organizacin de la memoria de Programa
9
Mapa de direcciones de registros
Relacin de registros SFR
10
Las posiciones ID de
Identificacin sirven para que
el usuario grabe en sus 4 bits
de menos peso los cdigos que
desee. Lo que le permite
referenciar el modelo, la
aplicacin , la versin del
dispositivo, etc..
Memoria de Instrucciones PIC 16C84
Consta de 2 bancos de128 bytes
cada uno.
El PIC 16C84 solo tiene
implementadas las primeras 48
direcciones de cada banco
En las 12 primeras posiciones se
ubican los registros de propsito
especfico(SFR).
En las 36 posiciones siguientes los
registros de propsito general
(GPR)
Los 36 registros de propsito
general del Banco 1 se mapean
sobre el banco 0, dejando
reducidos a 26 los registros
operativos
En el PIC 16F84 la organizacin
es similar pero con 68 registros
Memoria de datos RAM PIC 16C84
11
Los 7 bits de menor peso del
cdigo de operacin de la
instruccin proporcionan la
posicin del registro de un banco.
Los bits RP1 y RP0 del Registro
de Status <6:5>, seleccionan el
banco a acceder.
En el caso de del PIC16C84 solo
se usa el bit RP0 por tener
implementado solo 2 bancos
Direccionamiento Directo
El operando de la instruccin
hace referencia al registro
INDF, que ocupa la posicin
0 del rea de datos. Se accede
a la posicin que apunta el
registro FSR, que se
encuentra en la posicin 4 del
banco 0.
Los 7 bits de menos peso del
FSR seleccionan la posicin
y su bit de ms peso junto al
bit IRP de registro de Status
<7>, seleccionan el banco.
Direccionamiento Indirecto
12
Este programa borra las posiciones del rea de memoria de datos comprendidas
entre las direcciones 20h y 2F, usando el direccionamiento indirecto.
.
.
Movlw 0x20 ;Inicializa el puntero
movf FSR ;de memoria RAM
SIGUE clrf INDF ;Borra el registro INDF
inc FSR ; Incrementa el registro FSR
btfss FSR,4 ;Comprueba si el bit 4 del FSR y si es 1 salta a la
;siguiente instruccin
goto SIGUE ;Si el bit 4 del FSR es 0 se borra la direccin que
;apunta
.
.
Ejemplo: direccionamiento Indirecto
Registros Especiales
13
Registro de Control (Status) (1)
direccin: 03h,83h
C : Sealizador de acarreo en el octavo bit
1: Acarreo en la suma y no en la resta
0: Acarreo en la resta y no en la suma
Este bit tambin se utiliza en las instrucciones de rotacin
DC: Sealizador de acarreo en el 4 bit de menos peso.
1: Acarreo en la suma
0 : No acarreo en la suma
En la resta lo contrario
Z: Sealizador de cero
1: el resultado de la ltima operacin aritmtica o lgica es cero
0: El resultado de la ltima operacin es distinto de cero
IRP RP1 RP0 T0# PD# Z DC C
R/W R/W R/W R R R/W R/W R/W

Registro de Control (Status) (2)
direccin: 03h,83h
PD : Power Down
1: Tras conectar VDD o al ejecutar la instruccin CLRWDT
0: Al ejecutar la instruccin SLEEP
TO: Timer Out
1:Tras conectar VDD o ejecutar CLRWDT o SLEEP
0 :Al desbordar el temporizador de WDT
RP<1:0>:Seleccin del banco para el direccionamiento directo
00 Banco 0 (00-7Fh)
01 Banco 1 (80-FFh)
10 Banco 2 (100-17Fh)
11 Banco 3 (180-1FFh)
IRP RP1 RP0 T0# PD# Z DC C
R/W R/W R/W R R R/W R/W R/W

14
Registro de Control (Status) (3)
direccin: 03h,83h
IRP: Seleccin de bancos para el direccionamiento indirecto
1: Bancos 2 y 3 (100-1FFh)
0: Bancos 0 y 1 (00-FFh)
IRP RP1 RP0 T0# PD# Z DC C
R/W R/W R/W R R R/W R/W R/W

Registro OPTION (1)
direccin 81h
RBPU# INTEDG TOCS TOSE PSA PS2 PS1 PS0
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
PS2:PSO: Rango con el que acta el Divisor de frecuencia
PS2 PS1 PS0 Divisor del TMRO Divisor del WDT
0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8 1:4
0 1 1 1:16 1:8
1 0 0 1:32 1:16
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128
15
Registro OPTION (2)
direccin 81h
PSA: Asignacin del divisor de frecuencia
1: El divisor de frecuencia se asigna al WDT
0: El divisor de frecuencia se asigna al TMR0
TOSE: Tipo de flanco en TOCK1
1: Incremento de TMR0 cada flanco descendente
0: Incremento de TMR0 cada flanco ascendente
TOCS: Tipo de Reloj para TMR0
1: Pulsos introducidos a travs de T0CK1 (Contador)
0: Pulsos de reloj interno Fosc/4 (Temporizador)
RBPU# INTEDG TOCS TOSE PSA PS2 PS1 PS0
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Registro OPTION (3)
direccin 81h
INTEDG: Flanco activo control de interrupciones
1: Flanco Ascendente
0: Flanco Descendente
RBPU# : Resistencia Pull-up Puerto B
1: Desactivadas
0: Activadas
RBPU# INTEDG TOCS TOSE PSA PS2 PS1 PS0
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
16
Registro de Control EECON1 (1)
direccin 88h
Bit 4:EEIF: Sealizacin de interrupcin de la operacin escritura
1: La escritura ha terminado
0: La escritura no ha terminado o no ha empezado
Bit 3:WRER: Sealizador de error
1: La escritura ha terminado prematuramente
0 :La escritura se ha completado
-- -- -- EEIFWRER WREN WR RD
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Registro de Control EECON1 (2)
direccin 88h
Bit 2:WREN: Activacin de Escritura
1:Permite escribir
0:Prohibe escribir en la memoria de datos EEPROM
Bit 1: WR: Control de escritura
1: Inicia un ciclo
0: Prohibicin de comienzo de ciclo de escritura en la Memoria de la
EEPROM
Bit 0: RD: Control de lectura
1: Comienzo de lectura
0: Prohibicin de comienzo de lectura
-- -- -- EEIFWRER WREN WR RD
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

17
Registro de Control INTCON (1)
direccin 0Bh
RBIF: Sealizador de estado del Port B
1:Cuando cambia de estado cualquier lnea de PB (RB<7:4> ). Se borra
por software
0:Ninguna entrada de PB ha cambiado
INTF: Sealizador de estado de la interrupcin externa
1:La entrada de la interrupcin se ha activado. Se borra por software
0:No hay interrupcin externa
T0IF: Sealizador de rebosamiento del TMR0
1: El TMR0 se ha desbordado. Se borra por software
0: El TMR0 no se ha desbordado
GIE EEIE TOIEINTERBIET0IFINTFRBIF
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Registro de Control INTCON (2)
direccin 0Bh
RBIE: Activacin de la interrupcin del Port B
1: Interrupcin activada
0: Interrupcin desactivada
INTE: Activacin de la interrupcin externa
1: Interrupcin activada
0: Interrupcin desactivada
T0IE: Activacin de la interrupcin del TMR0
1: Interrupcin activada
0: Interrupcin desactivada
GIE EEIE TOIEINTERBIET0IFINTFRBIF
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

18
Registro de Control INTCON (3)
direccin 0Bh
EEIE: Activacin de la interrupcin de la memoria EEPROM
1: Interrupcin activada
0: Interrupcin desactivada
GIE:Activacin Global de Interrupciones
1: Concedido el permiso de interrupciones
0: No hay posibilidad de interrupciones
GIE EEIE TOIEINTERBIET0IFINTFRBIF
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Registro de Configuracin
direccin 2007h
Bit 4: CP, bit de configuracin proteccin de cdigo
1: Proteccin de cdigo desactivado
0: Proteccin de cdigo activado
Bit 3: PWRTE
Bit 2: bit de configuracin habilitacin del Watchdog(WDT)
1: WDT activado
0: WDT desactivado
Bit1 y 2: FOSC<1:0>
11: Oscilador RC
10 Oscilador HS ( 8 - 20 MHz)
01 Oscilador XT ( 100 KHz- 4MHz)
00 Oscilador LP (Bajo consumo 32- 200 Hz)
CP PWRTE WDTE FOSC1 FOSC2
13 12 11 10 9 8 7 6 5 4 3 2 1 0
19
Registro EECON1 (1)
Bit 4:EEIF, Sealizador de final de operacin de escritura
1= La operacin de escritura se ha completado con xito
0 = La operacin de escritura no se ha completado
Bit 3:WRERR, Sealizador de error de escritura
1 = Se pone a 1 cuando una operacin de escritura ha terminado
prematuramente
0 = La operacin de escritura se ha completado correctamente
Bit 2: WREN, Permiso de escritura
1 = Permite la escritura de la EEPROM
0 = Prohibe la escritura de la EEPROM
EEIF WRERR WREN WR RD
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Registro EECON1 (2)
Bit 1: WR, Escritura
Se pone a 1 cuando comienza el ciclo de escritura de la EEPROM
Se pone a 0 cuando finaliza el ciclo de escritura de la EEPROM
Bit 0: RD, Lectura
Se pone a 1 cuando se va a realizar un ciclo de lectura de la EEPROM,
luego pasa a 0 automticamente.
EEIF WRERR WREN WR RD
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

20
SET DE INSTRUCCIONES
MICROPROCESADOR
PIC 16C84
Descripcin de los campos de los cdigos de
operacin
Campo Descripcin
f Nombre del registro comprendido ente las posiciones
(0x00 a la 0x7F)
W Registro de trabajo (Acumulador)
B Nmero de bit de los 8 de un registro
K Campo de un literal, dato constante o etiqueta
X Valor indeterminado puede ser 0 1
D
Label Nombre de etiqueta
TOS Parte alta del Stack
PC Contador de Programa
PCLATH Latch parte alta del Contador de Programa
GIE Bit de permiso global de interrupciones
WDT Perro guardin (Watchdog Timer/Counter)
TO Time-Out bit (Bit de tiempo fuera)
PD Power-down bit (Bit de alimentacin)
Dest Destino
[ ] Opciones
( ) Contenido
Asignacin
<> Campo de un bit de un registro
En el conjunto de
21
INSTRUCCIONES QUE MANEJAN
REGISTROS
MNEMNICO DESCRIPCIN CDIGO OP FLAGS AFECTADOS
ADDWF f,d W+f 00 0111 dfff ffff C, DC, Z
ANDWF f,d W AND f 00 0101 dfff ffff Z
CLRF f Borrael registro f 00 0001 1fff ffff Z
CLRW Borra el registro W 00 0001 0000 0011 Z
COMF f,d Complemento de f 00 1001 dfff ffff Z
DECF f,d Decrementa f una unidad 00 0011 dfff ffff Z
DECFSZ f,d Decrementa f, y si es 0 salta 00 1011 dfff ffff Ninguno
INCF f,d Incrementa f una unidad 00 1010 dfff ffff Z
INCFSZ f,d Incrementa f, y si es 0 salta 00 1111 dfff ffff Ninguno
IORWF f,d W OR f 00 0100 dfff ffff Z
MOVF f,d Mueve f 00 1000 dfff ffff Z
MOVWF f Mueve W a f 00 0000 1fff ffff Ninguno
NOP No operacin 00 0000 0xx0 0000 Ninguno
RLF f,d Rota f a la izq a travs del Carry 00 1101 dfff ffff C
RRF f,d Rota f a la dcha a travs del Carry 00 1100 dfff ffff C
SUBWF f,d f - W 00 0010 dfff ffff C.DC,Z
SWAPF f,d intercambia los nibbles de f 00 1110 dfff ffff Ninguno
XORWF f,d W XOR f 00 0110 dfff ffff Z
Instrucciones Orientadas a Registros
INSTRUCCIONES QUE MANEJAN BITS
MNEMNICO DESCRIPCIN CDIGO OP FLAGS AFECTADOS
BCF f,b Pone a 0 el bit b del registro f 01 00bb bfff ffff Ninguno
BSF f,b Pone a 1 el bit b del registro f 01 01bb bfff ffff Ninguno
Instrucciones que manejan bits
22
INSTRUCCIONES DE SALTO
MNEMNICO DESCRIPCIN CDIGO OP FLAGS AFECTADOS
BTFSC f,b Explora un bit de f y salta si vale 0 01 10bb bffff ffff Ninguno
BTFSS f,b Explora un bit de f y salta si vale 1 01 10bb bffff ffff Ninguno
DECFSZ f,d Decrementa f y si es 0, salta 00 1011 dfff ffff Ninguno
INCFSZ f,d Incrementa f y si es 1, salta 00 1111 dfff ffff Ninguno
Instrucciones de salto
INSTRUCCIONES QUE MANEJAN
DATOS INMEDIATOS
MNEMNICO DESCRIPCIN CDIGO OP FLAGS AFECTADOS
ADDLW K (W) + Literal --> (W) 11 111x kkkk kkkk C,DC,Z
ANDLW K (W) AND Literal --> (W) 11 1001 kkkk kkkk Z
IORLW K (W) OR Literal --> (W) 11 1000 kkkk kkkk Z
MOVLW K K --> (W) 11 00xx kkkk kkkk Ninguno
SUBLW K (W) - Literal --> (W) 11 110x kkkk kkkk C,DC,Z
XORLW K (W) XOR Literal --> (W) 11 1010 kkkk kkkk Z
Instrucciones que manejan operndos inmediatos
23
INSTRUCCIONES DE CONTROL Y
ESPECIALES
MNEMNICO DESCRIPCIN CDIGO OP FLAGS AFECTADOS
CALL K Llamada a subrutina 10 0kkk kkkk kkkk TO#, PD#
CLRWDT Clear del temporizador del WD 00 0000 0110 0100 Ninguno
GOTO K Go To direccin 10 1kkk kkkk kkkk Ninguno
RETFIE Retorno de una interrupcin 00 0000 0000 1001 Ninguno
RETLW K Retorno con un literal en W 11 01xx kkkk kkkk Ninguno
RETURN Retorno de una subrutina 00 0000 0000 1000 Ninguno
SLEEP Modo Standby 00 0000 0110 0011 TO#, PD#
Instrucciones de control y especiales
ADDLW ADDLW
ADD Literal to W
Operacin (W) + k (W)
Sintaxis [Etiqueta] ADDLW k
Operadores 0 k 255
Cod.Oper. 0001 11df ffff
Palabras 1
Ciclos 1
Descripcin Aade el contenido del registro W al literal k, y almacena el resultado en
W.
Nota.- Esta instruccin no existe en el PIC 16C5X
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X X X
Status
24
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X X X
ADDWF ADDWF
ADD W to F
Operacin (W) + (f) (destino)
Sintaxis [Etiqueta] ADDWF f,d
Operadores 0 f 127
d 0 [0,1]
Palabras 1
Ciclos 1
Descripcin Aade el contenido del registro W al contenido del registro f, y almacena
el resultado en W si d = 0, y en el registro f si d = 1.
Status
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
ANDLW ANDLW
AND Literal and W
Operacin (W).AND. (k) (W)
Sintaxis [Etiqueta] ANDLW k
Operadores 0 f 255
Palabras 1
Ciclos 1
Descripcin Efecta la operacin AND lgico entre el contenido del registro W y el
literal k, y almacena el resultado en W.
Status
25
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
ANDWF ANDWF
AND W wind F
Operacin (W) AND (f) ----> (destino)
Sintaxis [Etiqueta] ANDWF f,d
Operadores 0 f 127
d 0 [0,1]
Palabras 1
Ciclos 1
Descripcin Efecta la operacin AND lgico entre el contenido del registro W y el
contenido del registro f, y almacena el resultado en W si d = 0, y en f si
d = 1.
Status
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
BCF BCF
Bit Clear f
Operacin 0 (f<b>)
Sintaxis [Etiqueta] BCF f,b
Operadores 0 f 127
0 b 7
Palabras 1
Ciclos 1
Descripcin Pone a cero el bit nmero b del registro f
Status
26
BSF BSF
Bit Set f
Operacin 1 --> (f<b>)
Sintaxis [Etiqueta] BSF f,b
Operadores 0 f 127
0 b 7
Palabras 1
Ciclos 1
Descripcin Pone a 1 el bit b del registro f
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
BTFSC BTFSC
Bit Test, f Skip if Clear
Operacin skip if (f<b>) = 0
Sintaxis [Etiqueta] BTFSC f,b
Operadores 0 f 127
0 b 7
Palabras 1
Ciclos 1 (2)
Descripcin Si el bit nmero b del registro f es nulo, la instruccin que sigue a sta se
ignora y se trata como un NOP (skip). En este caso, y slo en este caso, la
instruccin BTFSC precisa dos ciclos para ejecutarse.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
27
BTFSS BTFSS
Bit Test, Skip if Set
Operacin skip if (f<b>) = 1
Sintaxis [Etiqueta] BTFSS f,b
Operadores 0 f 127
0 b 7
Palabras 1
Ciclos 1 (2)
Descripcin Si el bit nmero b del registro f est a 1, la instruccin que sigue a sta se
ignora y se trata como un NOP (skip). En este caso, y slo en este caso, la
instruccin BTFSS precisa dos ciclos para ejecutarse.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
CALL CALL
Call Subrotine
Operandos 0 = k = 2047
Sintaxis [Etiqueta] CALL k
Operacin (PC)+1 Top of Stack
k PC <10:0>;
PCLATCH (<4:3>) PC (<12,11>)
Palabras 1
Ciclos 2
Descripcin Salvaguarda la direccin de vuelta en la Pila y despus llama a la subrutina
situada en la direccin cargada en el PC.
El modo de clculo de la direccin efectiva difiere segn la familia PIC
utilizada. Tambin hay que posicionar PA2, PA1 y PA0 (PIC 16C5X) o el
registro PCLATCH (En los dems PIC) antes de ejecutarse la instruccin.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
28
CLRF CLRF
Clear f
Operacin 00h f
1 Z
Sintaxis [Etiqueta] CLRF f
Operadores 0 f 127
Palabras 1
Ciclos 1
Descripcin Se borra el contenido del registro f y el flag Z se activa
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - 1 - -
Status
CLRW CLRW
Clear W
Operacin 00h (W)
1 Z
Sintaxis [Etiqueta] CLRW
Operadores No tiene
Palabras 1
Ciclos 1
Descripcin El registro de trabajo W se carga con 00h. El flag Z se pone a 1
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - 1 - -
Status
29
CLRWDT CLRWDT
Clear Watchdog Timer
Operacin 00h WDT
0 WDT preescaler
__
1 T0
__
1 PD
Sintaxis [Etiqueta] CLRWDT
Operadores No tiene
Palabras 1
Ciclos 1
Descripcin Se borra tanto el registro WDT (Watchdog) como su preescaler. Los
bits T0 y PD del registro de estado se ponen a 1".
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - 1 1 - - -
Status
COMF COMF
Complement f
Operacin _
(f) (dest)
Sintaxis [Etiqueta] COMF f,d
Operadores 0 f 127
d 0 [0,1]
Palabras 1
Ciclos 1
Descripcin Hace el complemento del contenido del registro f bit a bit. El resultado se
almacena en el registro f si d = 1 y en el registro W si d = 0, en este caso f
no vara.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
Status
30
DECF DECF
Decrement f
Operacin (f)-1 --> (dest)
Sintaxis [Etiqueta] DECF f,d
Operadores 0 f 127
d 0 [0,1]
Palabras 1
Ciclos 1
Descripcin Se decrementa el contenido del registro f en una unidad. El resultado se
almacena en f si d=1 y en W si d=0, en este caso f no vara.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
Status
DECFSZ DECFSZ
Decrement f , Skip if 0
Operacin (f) -1 --> (dest) ; skip if result =0
Sintaxis [Etiqueta] DECFSZ f,d
Operadores 0 f 31
d [0.1]
Palabras 1
Ciclos 1 (2)
Descripcin Decrementa el contenido del registro f en una unidad, el resultado se
almacena en f si d=1 y en W si d=0, en este caso, f no vara. Si el
resultado es cero, se ignora la siguiente instruccin y, en ese caso la
instruccin tiene una duracin de dos ciclos.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
31
GOTO GOTO
Go to direccion
Operacin K PC <10:0>
(PCLATH <4:3>) (PC <12:11>)
Sintaxis [Etiqueta] GOTO k
Operadores 0 k 2047
Palabras 1
Ciclos 2
Descripcin Salto incondicional, normalmente se utiliza para llamar a la subrutina
situada en la direccin que se carga en PC.
El modo de clculo de la instruccin caga de bit 0 al 10 del valor de la
constante k en el PC y los bits 4 y 3 del registro PCLATH
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
INCF INCF
Increment f
Operacin (f) + 1 (dest)
Sintaxis [Etiqueta] INCF f,d
Operadores 0 f 127
d 0 [0,1]
(f) + 1 (dest)
Palabras 1
Ciclos 1
Descripcin Se incrementa en una unidad el contenido del registro f, si d=1 el
resultado se almacena en f, si d= 0 el resultado se almacena en W, en este
caso el resultado de f no vara.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
Status
32
INCFSZ INCFSZ
Increment f, SKIP if 0
Operacin (f) +1 (dest) , skip if result = 0
Sintaxis [Etiqueta] <INCFSZ f,d
Operadores 0 f 127
d 0 [0,1]
Palabras 1
Ciclos 1 (2)
Descripcin Incrementa el contenido del registro f en una unidad. El resultado se
almacena de nuevo en f si d=1, y en W si d=0, en este caso f no vara. Si
el resultado es cero, se ignora la siguiente instruccin y , en ese caso la,
instruccin tiene una duracin de dos ciclos.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
IORLW IORLW
Inclusive OR Literal wirh W
Operacin (W).OR.k (W)
Sintaxis [Etiqueta] IORLW k
Operadores 0 k 255
Palabras 1
Ciclos 1
Descripcin Se realiza la operacin lgica OR entre el registro W y el literal k. El
resultado se almacena en el registro W.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
Status
33
IORWF IORWF
Inclusive OR W with f
Operacin (W) .OR.(f) (dest)
Sintaxis [Etiqueta] IORWF f,d
Operadores 0 f 31
d [0,1]
Palabras 1
Ciclos 1
Descripcin Efecta la operacin lgica OR entre el contenido del registro W y el
contenido del registro f, y almacena el resultado en f si d=1 y en W si
d=0.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
Status
MOVLW MOVLW
Move liteal to W
Operacin k (W)
Sintaxis [Etiqueta] MOVLW k
Operadores 0 f 255
Palabras 1
Ciclos 1
Descripcin El registro W se carga con el valor de 8 bits del literal k
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
Status
34
MOVF MOVF
Move f
Operacin (f) (dest)
Sintaxis [Etiqueta] MOVF f,d
Operadores 0 f 31
d [0,1]
Palabras 1
Ciclos 1
Descripcin El contenido del registro f se carga en el registro destino dependiendo del
valor de d. Si d=0 el destino es el registro W, si d=1 el destino es el
propio registro f . Esta instruccin permite verificar dicho registro ya que
el flag Z queda afectado.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
Status
MOVWF MOVWF
Move W to f
Operacin (W) (f)
Sintaxis [Etiqueta] MOVWF f
Operadores 0 f 31
Palabras 1
Ciclos 1
Descripcin Mueve el contenido del registro W al registro f
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
35
NOP NOP
No operation
Operacin no operacin
Sintaxis [Etiqueta] NOP
Operadores No tiene
Palabras 1
Ciclos 1
Descripcin No realiza operacin alguna. En realidad, se consume un ciclo de
instruccin sin hacer nada.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
RETFIE RETFIE
Return from Interrupt
Operacin TOS PC
1 GIE
Sintaxis [Etiqueta] RETFIE
Operadores No tiene
Palabras 1
Ciclos 2
Descripcin Carga el PC con el valor que se encuentra en la parte alta de la Pila,
asegurando as la vuelta de la interrupcin. Pone a 1 el bit GIE, con el fin
de autorizar de nuevo que se tengan en cuenta las interrupciones.
Esta instruccin no existe en los PIC 16C5X
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
36
RETLW RETLW
Retur with Literal in W
Operacin k (W);
TOS PC
Sintaxis [Etiqueta] RETLW k
Operadores 0 f 255
Palabras 1
Ciclos 2
Descripcin Carga el registro W con el literal k, y despus carga el PC con el valor
que se encuentra en la parte superior de la PILA, efectuando as un
retorno de subrutina.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
RETURN RETURN
Return from Subroutine
Operacin
TOS PC
Sintaxis [Etiqueta] RETURN
Operadores
No tiene
Palabras 1
Ciclos 2
Descripcin Retorno de subrutina
PC = TOS
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
37
RLF RLF
Rotate Left f through Carry
Operacin
C Registro

Sintaxis [Etiqueta] RLF f,d


Operadores 0 f 31
d [0,1]
Palabras 1
Ciclos 1
Descripcin Rotacin de un bit a la izquierda del contenido del registro 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.
C Registro

PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - X
Status
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - X
RRF RRF
Rotate Right f through Carry
Operacin
C Registro

Sintaxis [Etiqueta] RRF f,d
Operadores 0 f 31
d [0,1]
Palabras 1
Ciclos 1
Descripcin Rotacin de un bit a la derecha del contenido del registro 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.
C Registro

Status
38
SLEEP SLEEP
Sleep
Operacin 00h WDT
0 WDT prescaler
__
1 TO
__
0 PD
Sintaxis [Etiqueta] SLEEP
Operadores No tiene
Palabras 1
Ciclos 1
Descripcin Pone al circuito en modo Sleep con parada del oscilador.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - 1 0 - - -
TO Se pone a 1 al ejecutar la instruccin SLEEP o CLRWDT
PD Se pone a 0 al ejecutar la instruccin SLEEP
Status
SUBLW SUBLW
Subtract W from Literal
Operacin k - (W) (W)
Sintaxis [Etiqueta] SUBLW k
Operadores 0 k 255
Palabras 1
Ciclos 1
Descripcin Resta en complemento a dos el contenido del literal k el contenido del
registro W, y almacena el resultado en W.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X X X
Status
39
SUBWF SUBWF
Subtract W from f
Operacin (f) - (W) (dest)
Sintaxis [Etiqueta] SUBW f,d
Operadores 0 f 31
d [0,1]
Palabras 1
Ciclos 1
Descripcin Resta en complemento a dos el contenido del registro f menos el
contenido del registro W almacena el resultado en W si d=0 y en f si d=1.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X X X
Status
SWAPF SWAPF
Swap Nibbles in f
Operacin (f<3:0>) (dest <7:4>)
(f<7:4>) (dest <3:0>)
Sintaxis [Etiqueta] SWAPF f,d
Operadores 0 f 31
d [0,1]
Palabras 1
Ciclos 1
Descripcin Los cuatro bits de ms peso del registro f se intercambian con los 4 bits de
menos peso del mismo registro. Si d=0 el resultado se almacena en W, si
d=1 el resultado se almacena en f.
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - - - -
Status
40
XORLW XORLW
Exclusive OR Literal With k
Operacin (W).XOR.k (W)
Sintaxis [Etiqueta] XORLW k
Operadores 0 f 255
Palabras 1
Ciclos 1
Descripcin Realiza la funcin OR-Exclusiva entre el contenido del registro W y la
constante k de 8 bits. El resultado se almacena en W
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
Status
XORWF XORWF
Exclusive OR With f
Operacin (W).XOR.(f) (des)
Sintaxis [Etiqueta] XORWF f,d
Operadores 0 f 127
d [0,1]
Palabras 1
Ciclos 1
Descripcin Realiza la funcin OR-Exclusiva entre el contenido del registro W y el
contenido del registro f, y almacena el resultado en f si d=1 y en W si d=0
PA2 PA1 PA0
__
TO
__
PD Z DC C
- - - - - X - -
Status
41
La gama baja de los PIC tiene 2 instrucciones que no
existen en la gama media:
OPTION: Carga al registro OPTION
TRIS: Carga al registro TRIS
La gama media dispone de 4 instrucciones que no existen
en la baja:
ADDLW: Suma un valor inmediato al reg. W
RETFIE: Retorno de interrupcin
RETURN: Retorno de subrutina
SUBLW: Resta W de un inmediato
SET DE INSTRUCCIONES
Prescaler de TMR0/WDT
42
Prescaler de TMR0/WDT
Para que TRM0 funcione como contador de impulsos por
el pin RA4/TOCK, hay que poner a 1 el bit T0CS del
registro OPTION.
El flanco de activacin de los impulsos a contar se
selecciona con el bit T0SE del registro OPTION.
T0SE = 1 flanco descendente
T0SE = 0 flanco ascendente
Al llegar a FFh se desborda el contador y con el siguiente
impulso pasa a 00h, esto hace que active el flag TOIF del
registro INTCON si est activado el bit activacin global
de interrupciones GIE.
El TRM0 como Contador (1)
43
El TRM0 como Contador (2)
Para que TRM0 funcione como temporizador, hay que
poner a 0 el bit T0CS del registro OPTION.
Al llegar a FFh se desborda el contador y con el siguiente
impulso pasa a 00h, esto hace que active el flag TOIF del
registro INTCON si est activado el bit activacin global
de interrupciones GIE.
El TRM0 como Temporizador(1)
44
Interrupciones en el PIC16C84(1)
El PIC 16C84 tiene 4 posibles causas de interrupcin:
Sucesos Externos
Activacin del pin <6> RB0/INT.
Cambio de estado en una de los 4 pines de mas peso de
port B <RPB7:RPB4>.
Sucesos Internos
Finalizacin de la Escritura en la EEPROMde datos
Desbordamiento del temporizador TMR0
Interrupciones en el PIC16C84(1)
45
Interrupciones
en el PIC16C84
(3)
Interrupcin
PC -->Pila
GIE = 0
PC=0004h
(Vector de Interrupcin)
Rutina de atencin
a la Interrupcin
Se almacenan los
registros a modificar
Se determina la causa
de la Interrupcin
Salto a la rutina
de servicio corespondiente
Restauracin de los
registros
Se Borra el sealizador
de la interrupcin
Retorno (RETFIE)
PC<-- PILA
GIE=1
Cuando se produce una peticin de interrupcin
ocurre lo siguiente:
Si el bit GIE=1 se atiende la interrupcin
Se deposita el contenido del PC en la Pila
Se prohiben nuevas interrupciones poniendo el bit
GIE=0
El PC= 0004h (Vector de interrupciones)
Interrupciones en el PIC16C84(2)
46
Que debe hacer el programa de atencin a la interrupcin:
Guardar el contenido de los registros que va a utilizar esta
rutina.
Se determina la causa de la interrupcin explorando los
sealizadores de las fuentes de interrupcin.
Saltar a la rutina de atencin a la interrupcin
correspondiente.
Devolver el valor de los registros que tenia el programa
antes de atender la interrupcin.
Borrar el sealizador de interrupcin
Ejecutar RETFIE
Interrupciones en el PIC16C84(3)
Secuencia de instrucciones para guardar los registros al saltar
a una interrupcin
Salvar movwf almacen1_W ;Guarda el contenido de W
swapf STATUS,W ;Swap el contenido de Estado en W
movwf almacen2_S ;Guarda el contenido Estado(swapped)
.....................
.....................
Secuencia de instrucciones de finalizacin de interrupcin
swapf Almacen2_S,W ;Deja registro de estado como estaba
movwf STATUS ;restaura el STATUS
swapf Almacen1_W,f
swapf Almacen1_W,W
retfie
Interrupciones en el PIC16C84(4)
47
Secuencia de instrucciones para explorar de forma continua las 4
fuentes de interrupciones en un bucle cerrado.
int btfss INTCON, INTF ;Explora el bit INTF de INTCON y si vale 1 brinca
goto puertab ;Salta a puertab
puertab btfss INTCON,RBIF ;Explora el bit RBIF de INTCON y si vale 1 brinca
goto tmr0 ;Salta a tmr0
tmr0 btfss INTCON,T0IF ;Explora el bit TOIF y si vale 1 brinca
goto eeprom ;Salta a eeprom
eeprom btfss EECON1,EEIF ;Explora el bit EEIF del registro EECON1 y si=1brinca
goto int ; vuelve al principio
Interrupciones en el PIC16C84(5)
Lgica que gobierna la generacin de una interrupcin
Interrupciones en el PIC16C84(6)
48
Secuencia de instrucciones para explorar cual es la causa de la
interrupcin.
btfsc INTCON,1 ; Si el flag INTF=0 brinca
call INTE ; Si el flag INTF=1 salta a INTE
btfsc INTCON,2 ; Si el flag TOIF = 0 brinca
call TIMER ;Con TOIF=1, se llama a TIMER
btfsc INTCON,0 ; Si el flag RBIF=0 brica
call PUERTOB ; Si el flag RBIF=1 salta a PUERTOB
bsff ESTADO,5 ; Selecciona el banco 1
btfsc EECON1,4 ;Si EEIF=0, brinca
call EEPROM ; Si el flag INTF=1 salta a INTE
Interrupciones en el PIC16C84(7)

Вам также может понравиться