transparencias pic 16f84a

55
1 CARACTERISTICAS MICROPROCESADOR PIC 16F84A Características del Procesador del PIC16F84 A Procesador segmentado “pipelineProcesador tipo RISC Disponer de arquitectura HARVARD Formato de instrucciones ortogonal Una misma longitud de instrucciones (14 bits) Arquitectura en banco de registros

Upload: elizabeth-juarez-agustin

Post on 28-Nov-2014

255 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Transparencias PIC 16F84A

1

CARACTERISTICAS

MICROPROCESADORPIC 16F84A

Características del Procesador del PIC16F84 A

• 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

Page 2: Transparencias PIC 16F84A

2

Procesador Pipeline

Procesador Pipeline

Ejemplo: Busqueda 1 Ejecuta 11. MOVLW 55h Busqueda 2 Ejecuta22 .MOVWF PORTB Busqueda 3 Ejecuta 33. CALL SUB_1 Busqueda 4 Salir4. BSF PORTA,BIT3 Busqueda SUB_1 Ejecuta SUB_1

Page 3: Transparencias PIC 16F84A

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 máquina 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 máquina. Además 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 específico.

MICROPROCESADORMODELO HARVARD

Memoriade Datos

CPU Memoria de Instrucciones

Reloj

BusDatos

BusInstrucciones

Page 4: Transparencias PIC 16F84A

4

MICROPROCESADORMODELO DE VON NEUMANN

Memoriade RAM CPUMemoria de

ROMReloj

Bus Datos

Bus Direcciones

Arquitectura Ortogonal

Arquitectura Ortogonal: En los μcontroladores PIC la salida de la ALU puede ir al registro W y también a la memoria de datos. Por lo tanto el resultado puede guardarse en cualquiera de los dos destinos.Cualquier instrucción puede utilizar cualquier elemento de la arquitectura como fuente o destino.

Page 5: Transparencias PIC 16F84A

5

Arquitectura Ortogonal

WMEMORIADE DATOS

ALU

ACUMULADOR

ALU

MEMORIADE DATOS

Arquitectura de los PICArquitectura de otrosmicrocontroladores

Arquitectura basada en banco de registros

INDIRECTO

TMRO

PC

STATUS

FSR

PORTA

PORTB

PORTC

REGISTROSDE

PRPOSITOGENERAL

REGISTRO DEINSTRUCCIONES

w

ALU

MPX

BUS DE DATOS

8

8

BANCO DE REGISTGROS

Page 6: Transparencias PIC 16F84A

6

MICROPROCESADORPIC 16F84A

• OSC1/CLKIN: Entrada externa de los impulsos de reloj o conexión con el cristal de cuarzo.

• OSC2/CLKOUT: Salida de Fosc/4 en modo oscilador R-C o conexión con el cristal de cuarzo

• VPP/MCCLR#: En modo grabación por esta patilla se introduce la tensión VPP (12-14V). En funcionamiento normal esta patilla soporta la petición de Reset.

• RA0-RA3: Líneas de E/S del Puerto A• RA4/TOCK1: Líneas E/S del Puerto A o

entrada de impulsos de reloj para TMR0• RB0/INT : Línea de E/S de la Puerto B o

petición de Interrupción.• RB1- RB7: Líneas de E/S del Puerto B

Patillaje PIC 16F84A

Page 7: Transparencias PIC 16F84A

7

Diagrama de Bloques PIC 16F84A

Arquitectura del PIC16F84A

• Memoria de Programa EEPROM de 1Kx14bits.• Memoria de datos dividida en dos áreas:

Área RAM formada por 22 registros de propósito específico (SFR) y 32 de propósito general para el 16C84 y 68 para el 16F84A.

Área EEPROM formada por 64 bytes• ALU de 8 bits y registro de trabajo W, del que normalmente recibe un operando y envía el resultado, mientras que el otro operando puede ser cualquier registro, memoria puerto o el propio código de instrucción.• Recursos conectados al bus de datos: Puerto A, Puerto B, Temporizador TMR0, etc.

Page 8: Transparencias PIC 16F84A

8

EL Contador de Programa

Código de Operación

EL Contador de Programa para las instrucciones CALL y GOTO

Código de Operación

Page 9: Transparencias PIC 16F84A

9

Organización de la memoria de Programa

Mapa de direcciones de registros

d i r. I n d i r e c . d i r. I n d i r e c .

T M R 0 O P T IO N _ R E G

P C L P C L

S T A T U S S T A T U S

F S R F S R

P O R T A

P O R T B

T R I S A

T R I S B

E E D A T A E C O N 1

E C O N 2E E A D R

P C L A T H P C L A T H

I N T C O N I N T C O N

6 8P o s ic io n e s

d e p r o p o s i t og e n e r a lS R A N

M a p ad e

a c c e s oe n B a n c o 0

D i r e c c ió n R e g i s t r o D i r e c c ió n R e g i s t r o

0 0 h 8 0 h

0 1 h 8 1 h

0 2 h 8 2 h

0 3 h 8 3 h

0 4 h 8 4 h

0 5 h 8 5 h

0 6 h 8 6 h

0 7 h 8 7 h

0 8 h 8 8 h

0 9 h 8 9 h

0 A h 8 A h

0 B h 8 B h

0 C h 8 C h

4 F h

5 0 h

7 F h

C F h

D 0 h

F F h

B a n c o 0 B a n c o 1

Page 10: Transparencias PIC 16F84A

10

Relación de registros SFR

Memoria de Instrucciones PIC 16F84

• Las posiciones ID de Identificación sirven para que el usuario grabe en sus 14 bits de menos peso los códigos que desee. Lo que le permite referenciar el modelo, la aplicación , la versión del dispositivo, etc..

IMPLEMENTADO

NOIMPLEMENTADO

IDIDIDID

RESERVADORESERVADORESERVADO

PALABRACONFIGURACION

RESERVADO

NOIMPLEMENTADO

3FFF

200F

2007

20001FFF

0000

03FFÚTIL

CAPACIDADMÁXIMA

PALABRASIDENTIFICACIÓN

MEMORIA DECONFIGURACIÓN

Page 11: Transparencias PIC 16F84A

11

Memoria de datos RAM PIC 16X84

• Consta de 2 bancos de128 bytes cada uno.• El PIC 16F84A solo tiene implementadas

las primeras 80 direcciones de cada banco• En las 12 primeras posiciones se ubican

los registros de propósito específico(SFR).

• En las 68 posiciones siguientes los registros de propósito general (GPR)

• Los 80 registros de propósito general del Banco 1 se mapean sobre el banco 0, dejando reducidos a 68 los registros operativos

dir.Indirec. dir.Indirec.

TMR0 OPTION_REG

PCL PCL

STATUS STATUS

FSR FSR

PORTA

PORTB

TRISA

TRISB

EEDATA ECON1

ECON2EEADR

PCLATH PCLATH

INTCON INTCON

68Posiciones

de propositogeneralSRAN

Mapade

accesoen Banco 0

Dirección Registro Dirección Registro

00h 80h

01h 81h

02h 82h

03h 83h

04h 84h

05h 85h

06h 86h

07h 87h

08h 88h

09h 89h

0Ah 8Ah

0Bh 8Bh

0Ch 8Ch

4Fh

50h

7Fh

CFh

D0h

FFh

Banco 0 Banco 1

Registrosde proposito

general

SFR

2Fh

16F84

16C84

• Los 7 bits de menor peso del código de operación de la instrucción proporcionan la posición 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 PIC16F84 solo se usa el bit RP0 por tener implementado solo 2 bancos

Direccionamiento Directo

Page 12: Transparencias PIC 16F84A

12

• El operando de la instrucción hace referencia al registro INDF, que ocupa la posición 0 del área de datos. Se accede a la posición que apunta el registro FSR, que se encuentra en la posición 4 del banco 0.

• Los 7 bits de menos peso del FSR seleccionan la posición y su bit de más peso junto al bit IRP de registro de Status <7>, seleccionan el banco.

Direccionamiento Indirecto

Funcionamiento de las instrucciones de Direccionamiento Indirecto

W

FSR 2Ah14h

14h

2Ah

Memoria RAMde Datos

Al ejecutar movwf INDF

W

FSR B2h14h

14h

B2h

Memoria RAMde Datos

Al ejecutar movf INDF,W

Posición ContenidoPosición Contenido

Page 13: Transparencias PIC 16F84A

13

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 punteromovf FSR ;de memoria RAM

Bucle clrf INDF ;Borra el registro INDFinc FSR ; Incrementa el registro FSRbtfss FSR,4 ;Comprueba si el bit 4 del FSR y si es 1 salta a la

;siguiente instruccióngoto Bucle ;Si el bit 4 del FSR es 0 se borra la dirección que

;apunta..

Ejemplo: direccionamiento Indirecto

Registros Especiales

Page 14: Transparencias PIC 16F84A

14

Registro de Control (Status) (1)

dirección: 03h,83h

• C : Señalizador de acarreo en el octavo bit1: Acarreo en la suma y no en la resta0: Acarreo en la resta y no en la sumaEste bit también se utiliza en las instrucciones de rotación

• DC: Señalizador de acarreo en el 4º bit de menos peso.1: Acarreo en la suma0 : No acarreo en la sumaEn la resta lo contrario

• Z: Señalizador de cero–1: el resultado de la última operación aritmética o lógica es cero–0: El resultado de la última operación es distinto de cero

IRP RP1 RP0 TO# PD# Z DC CR/W R/W R/W R R R/W R/W R/W

Comprobación de que un registro es mayor o menor que otro

C=1 y Z=1CeroA=B

C=0 y Z=0NegativoA<B

C=1 y Z=0PositivoA>B

Bits de Carry y ZeroResultadoOperación A-B

Movlw Dato_B ;Dato_B WSublw Dato_A ;DatoA – W W

oMovlw Dato_B ;Dato_B WSubwf Dato_A,W ;Dato_A-W W

Page 15: Transparencias PIC 16F84A

15

Registro de Control (Status) (2)

dirección: 03h,83h

• PD : Power Down1: Tras conectar VDD o al ejecutar la instrucción CLRWDT0: Al ejecutar la instrucción SLEEP

• TO: Timer Out1:Tras conectar VDD o ejecutar CLRWDT o SLEEP0 :Al desbordar el temporizador de WDT

• RP<1:0>:Selección del banco para el direccionamiento directo00 Banco 0 (00-7Fh) 01 Banco 1 (80-FFh) 10 Banco 2 (100-17Fh)11 Banco 3 (180-1FFh)

IRP RP1 RP0 TO# PD# Z DC CR/W R/W R/W R R R/W R/W R/W

Registro de Control (Status) (3)

dirección: 03h,83h

• IRP: Selección de bancos para el direccionamiento indirecto1: Bancos 2 y 3 (100-1FFh)0: Bancos 0 y 1 (00-FFh)

IRP RP1 RP0 TO# PD# Z DC CR/W R/W R/W R R R/W R/W R/W

Page 16: Transparencias PIC 16F84A

16

Registro OPTION (1)

dirección 81h

RBPU# INTEDG T0CS T0SE PSA PS2 PS1 PS0bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

• PS2:PS0: Rango con el que actúa el Divisor de frecuenciaPS2 PS1 PS0 Divisor del TMR0 Divisor del WDT

0 0 0 1:2 1:10 0 1 1:4 1:20 1 0 1:8 1:40 1 1 1:16 1:81 0 0 1:32 1:161 0 1 1:64 1:321 1 0 1:128 1:641 1 1 1:256 1:128

Registro OPTION (2)

dirección 81h

• PSA: Asignación del divisor de frecuencia1: El divisor de frecuencia se asigna al WDT0: El divisor de frecuencia se asigna al TMR0

• T0SE: Tipo de flanco en TOCK11: Incremento de TMR0 cada flanco descendente0: Incremento de TMR0 cada flanco ascendente

• T0CS: Tipo de Reloj para TMR01: Pulsos introducidos a través de T0CK1 (Contador)0: Pulsos de reloj interno Fosc/4 (Temporizador)

RBPU# INTEDG T0CS T0SE PSA PS2 PS1 PS0bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Page 17: Transparencias PIC 16F84A

17

Registro OPTION (3)

dirección 81h

• INTEDG: Flanco activo control de interrupciones1: Flanco Ascendente0: Flanco Descendente

• RBPU# : Resistencia Pull-up Puerto B1: Desactivadas para el PIC16F84A (para el 16C84 es al contrario)0: Activadas para el PIC16F84A (para el 16C84 es al contrario)

RBPU# INTEDG T0CS T0SE PSA PS2 PS1 PS0bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Registro de Control INTCON (1)

dirección 0Bh

• RBIF: Señalizador de estado del Port B1:Cuando cambia de estado cualquier línea de PB (RB<7:4> ). Se borra por software 0:Ninguna entrada de PB ha cambiado

• INTF: Señalizador de estado de la interrupción externa1:La entrada de la interrupción se ha activado. Se borra por software 0:No hay interrupción externa

• T0IF: Señalizador de rebosamiento del TMR01: El TMR0 se ha desbordado. Se borra por software 0: El TMR0 no se ha desbordado

GIE EEIE T0IE INTERBIE T0IFINTFRBIFbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Page 18: Transparencias PIC 16F84A

18

Registro de Control INTCON (2)

dirección 0Bh

• RBIE: Activación de la interrupción del Port B1: Interrupción activada0: Interrupción desactivada

• INTE: Activación de la interrupción externa1: Interrupción activada0: Interrupción desactivada

• T0IE: Activación de la interrupción del TMR01: Interrupción activada0: Interrupción desactivada

GIE EEIE T0IE INTERBIE T0IFINTFRBIFbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Registro de Control INTCON (3)

dirección 0Bh

• EEIE: Activación de la interrupción de la memoria EEPROM1: Interrupción activada0: Interrupción desactivada

• GIE:Activación Global de Interrupciones1: Concedido el permiso de interrupciones0: No hay posibilidad de interrupciones

GIE EEIE T0IE INTERBIE T0IFINTFRBIFbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Page 19: Transparencias PIC 16F84A

19

Lógica que gobierna la generación de una interrupción

Interrupciones en el PIC16F84 (4)

Activa si estáen modo de reposo

Interrupción

TOIFTOIE

INTFINTE

RBIFRBIE

EEIFEEIE

GIE

Palabra de Configuracióndirección 2007h

• Bit 4: CP, bit de configuración protección de código– 1: Protección de código desactivado– 0: Protección de código activado

• Bit 3: PWRTE (Power-up Timer)– 1: Proporciona un retardo de 72 ms desde el momento de la conexión a la

alimentación.• Bit 2: bit de configuración habilitación 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 FOSC213 12 11 10 9 8 7 6 5 4 3 2 1 0

Page 20: Transparencias PIC 16F84A

20

SET DE INSTRUCCIONES

MICROPROCESADORPIC 16F84

Descripción de los campos de los códigos de operación

Campo Descripciónf Nombre del registro comprendido ente las posiciones

(0x00 a la 0x7F)W Registro de trabajo (Acumulador)B Número de bit de los 8 de un registroK Campo de un literal, dato constante o etiquetaX Valor indeterminado puede ser 0 ó 1DLabel Nombre de etiquetaTOS Parte alta del StackPC Contador de ProgramaPCLATH Latch parte alta del Contador de ProgramaGIE Bit de permiso global de interrupcionesWDT Perro guardián (Watchdog Timer/Counter)TO Time-Out bit (Bit de tiempo fuera)PD Power-down bit (Bit de alimentación)Dest Destino[ ] Opciones( ) Contenido

Asignación<> Campo de un bit de un registroε En el conjunto de

Page 21: Transparencias PIC 16F84A

21

Constantes numéricas y alfanuméricas

DT “Estudia DPE”“<string>”“String”o Cadena de Caracteres

movlw A’M’movlw a’M’movlw ‘M’

A’<carácter>’a’<carácter>’‘<carácter>

ASCII

movlw B’01101101’movlw b’01101101’

B’<cantidad>’b’<cantidad>’

Binario

movlw O’155’movlw o’155’

O’<cantidad>’o’<cantidad>’

Octal

movlw H’6D’ movlw h’6D’movlw 0x6Dmovlw 6DHmovlw 6Dh

H ’<cantidad>’h ’<cantidad>’0x<cantidad><cantidad>H<cantidad>h

Hexadecimal

movlw D’109’movlw d’109’movlw .109

D’<cantidad>’d’<cantidad>’. <cantidad>

Decimal

EJEMPLOSINTAXISTIPO

INSTRUCCIONES DE CARGA

Ninguno 00 0000 1fff ffff(W) → (f)movwf f

Ninguno11 00xx kkkk kkkkK → (w)movlw k

Z00 1000 dfff ffff(f) → (destino)movf f,d

Z00 0001 0xxx xxxx00 → (w)clrfw

Z00 0001 1fff ffff00 → (f)clrf f

FLAGSAFECTADOS

CÓDIGO DE OPERACIÓN

DESCRIPCIÓNNEMONICO

Page 22: Transparencias PIC 16F84A

22

INSTRUCCIONES DE BIT

Ninguno01 01bb bfff ffffPone a 1 el bit “b” del registro f

Bsf f,b

Ninguno01 00 bb bffff ffffPone a 0 el bit “b” del registro f

Bcf f,b

FLAGSAFECTADOS

CÓDIGO DE OPERACIÓN

DESCRIPCIÓNNEMONICO

INSTRUCCIONES ARITMÉTICAS

C, DC, Z00 0010 dfff ffff(f) – (W) (destino)subwf f,d

C, DC, Z11 110x kkkk kkkkK – (w) Wsublw k

Z00 1010 dfff ffff(f) + 1 (destino)incf f,d

Z00 0011 dfff ffff(f)-1 (destino)decf f,d

C, DC, Z00 0111 dfff ffff(W)+(f) (destino)addwf f,d

C, DC, Z11 111x kkkk kkkk(W) + k (W)addlw k

FLAGSAFECTADOS

CÓDIGO DE OPERACIÓN

DESCRIPCIÓNNEMONICO

Page 23: Transparencias PIC 16F84A

23

INSTRUCCIONES LÓGICAS

Z00 0110 dfff ffff(W) XOR (f) (destino)xorwf f,dZ11 1010 kkkk kkkk(W) XOR k (W)xorlw k

Ninguno00 1110 dfff ffffIntercambia los nibbles de f (destino)

swapf f,d

C00 1100 dfff ffffRota f a la derecha a través del Carry (destino)

rrf f,d

C00 1101 dfff ffffRota f a la izquierda a través del Carry (destino)

rlf f,d

Z00 0100 dfff ffff(W) OR (f) (destino)iorwf f,dZ11 1001 dfff ffff(W) OR k (W)iorlw k

Z00 1001 dfff ffff(/f) (destino)comf f,d

Z00 0101 dfff ffff(W) AND (f) (destino)andwf f,dZ11 1001 kkkk kkkk(W) AND k (W)andlw k

FLAGSAFECTADOS

CÓDIGO DE OPERACIÓN

DESCRIPCIÓNNEMONICO

INSTRUCCIONES DE SALTO

Ninguno00 0000 0000 1000Retorno de una subrutinareturn

Ninguno11 01xx kkkk kkkkRetorno con un literal en Wretlw

Ninguno00 0000 0000 1001Retorno de interrupciónretfie

Ninguno10 0kkk kkkk kkkkLlamada a subrutinacall k

Ninguno10 1kkk kkkk kkkkSalta a la dirección “k”goto k

Ninguno00 1111 dfff ffff(f)+1 destino y salta si es 0incfsz f,d

Ninguno00 1011 dfff ffff(f)-1 destino y salta si es 0decfsz f,d

Ninguno01 11bb bfff ffffSalta si el bit “b” del “f” es 1btfss f,b

Ninguno01 10bb bfff ffffSalta si el bit “b” del “f” es 0btfsc f,b

FLAGSAFECTADOS

CÓDIGO DE OPERACIÓN

DESCRIPCIÓNNEMONICO

Page 24: Transparencias PIC 16F84A

24

INSTRUCCIONES ESPECIALES

/TO, /PD00 0000 0110 0011Entra en modo bajo consumoSleep

Ninguno00 0000 0xx0 0000No operarNop

/TO, /PD00 0000 0110 0100Borra Timer del WatchdogClrwdt

FLAGSAFECTADOS

CÓDIGO DE OPERACIÓN

DESCRIPCIÓNNEMONICO

ADDLW ADDLWADD Literal to W

Operación (W) + k (W)

Sintaxis [Etiqueta] ADDLW k

Operadores 0 ≤ k ≤ 255

Cod.Oper. 0001 11df ffff

Palabras 1

Ciclos 1

Descripción Añade el contenido del registro W al literal k, y almacena el resultado enW.Nota.- Esta instrucción no existe en el PIC 16C5X

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X X X

Status

Page 25: Transparencias PIC 16F84A

25

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X X X

ADDWF ADDWFADD W to F

Operación (W) + (f) (destino)

Sintaxis [Etiqueta] ADDWF f,d

Operadores 0 ≤ f ≤127d 0 [0,1]

Palabras 1

Ciclos 1

Descripción Añade el contenido del registro W al contenido del registro f, y almacenael 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 ANDLWAND Literal and W

Operación (W).AND. (k) (W)

Sintaxis [Etiqueta] ANDLW k

Operadores 0 ≤ f ≤ 255

Palabras 1

Ciclos 1

Descripción Efectúa la operación AND lógico entre el contenido del registro W y elliteral k, y almacena el resultado en W.

Status

Page 26: Transparencias PIC 16F84A

26

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X - -

ANDWF ANDWFAND W wind F

Operación (W) AND (f) ----> (destino)

Sintaxis [Etiqueta] ANDWF f,d

Operadores 0 ≤ f ≤ 127d 0 [0,1]

Palabras 1

Ciclos 1

Descripción Efectúa la operación AND lógico entre el contenido del registro W y elcontenido 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 BCFBit Clear f

Operación 0 (f<b>)

Sintaxis [Etiqueta] BCF f,b

Operadores 0 ≤ f ≤ 1270 ≤ b ≤ 7

Palabras 1

Ciclos 1

Descripción Pone a cero el bit número b del registro f

Status

Page 27: Transparencias PIC 16F84A

27

BSF BSFBit Set f

Operación 1 --> (f<b>)

Sintaxis [Etiqueta] BSF f,b

Operadores 0 ≤ f ≤ 1270 ≤ b ≤7

Palabras 1

Ciclos 1

Descripción Pone a 1 el bit b del registro f

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

BTFSC BTFSCBit Test, f Skip if Clear

Operación skip if (f<b>) = 0

Sintaxis [Etiqueta] BTFSC f,b

Operadores 0 ≤ f ≤ 1270 ≤ b ≤ 7

Palabras 1

Ciclos 1 (2)

Descripción Si el bit número b del registro f es nulo, la instrucción que sigue a ésta seignora y se trata como un NOP (skip). En este caso, y sólo en este caso, lainstrucción BTFSC precisa dos ciclos para ejecutarse.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

Page 28: Transparencias PIC 16F84A

28

BTFSS BTFSSBit Test, Skip if Set

Operación skip if (f<b>) = 1

Sintaxis [Etiqueta] BTFSS f,b

Operadores 0 ≤ f ≤ 1270 ≤ b ≤7

Palabras 1

Ciclos 1 (2)

Descripción Si el bit número b del registro f está a 1, la instrucción que sigue a ésta seignora y se trata como un NOP (skip). En este caso, y sólo en este caso, lainstrucción 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

Operación (PC)+1 Top of Stackk PC <10:0>;

PCLATCH (<4:3>) PC (<12,11>)

Palabras 1

Ciclos 2

Descripción Salvaguarda la dirección de vuelta en la Pila y después llama a la subrutinasituada en la dirección cargada en el PC.El modo de cálculo de la dirección efectiva difiere según la familia PICutilizada. También hay que posicionar PA2, PA1 y PA0 (PIC 16C5X) o elregistro PCLATCH (En los demás PIC) antes de ejecutarse la instrucción.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

Page 29: Transparencias PIC 16F84A

29

CLRF CLRFClear f

Operación 00h f1 Z

Sintaxis [Etiqueta] CLRF f

Operadores 0 ≤ f ≤ 127

Palabras 1

Ciclos 1

Descripción Se borra el contenido del registro f y el flag Z se activa

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - 1 - -Status

CLRW CLRWClear W

Operación 00h (W)1 Z

Sintaxis [Etiqueta] CLRW

Operadores No tiene

Palabras 1

Ciclos 1

Descripción 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

Page 30: Transparencias PIC 16F84A

30

CLRWDT CLRWDTClear Watchdog Timer

Operación 00h WDT0 WDT preescaler

__1 T0 __1 PD

Sintaxis [Etiqueta] CLRWDT

Operadores No tiene

Palabras 1

Ciclos 1

Descripción Se borra tanto el registro WDT (Watchdog) como su preescaler. Losbits T0 y PD del registro de estado se ponen a Α1".

PA2 PA1 PA0__TO

__PD Z DC C

- - - 1 1 - - -

Status

COMF COMFComplement f

Operación _(f) (dest)

Sintaxis [Etiqueta] COMF f,d

Operadores 0 ≤ f ≤ 127d 0 [0,1]

Palabras 1

Ciclos 1

Descripción Hace el complemento del contenido del registro f bit a bit. El resultado sealmacena en el registro f si d = 1 y en el registro W si d = 0, en este caso fno varía.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X - -

Status

Page 31: Transparencias PIC 16F84A

31

DECF DECFDecrement f

Operación (f)-1 --> (dest)

Sintaxis [Etiqueta] DECF f,d

Operadores 0 ≤ f ≤ 127d 0 [0,1]

Palabras 1

Ciclos 1

Descripción Se decrementa el contenido del registro f en una unidad. El resultado sealmacena en f si d=1 y en W si d=0, en este caso f no varía.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X - -

Status

DECFSZ DECFSZDecrement f , Skip if 0

Operación (f) -1 --> (dest) ; skip if result =0

Sintaxis [Etiqueta] DECFSZ f,d

Operadores 0 ≤ f ≤31d ∈ [0.1]

Palabras 1

Ciclos 1 (2)

Descripción Decrementa el contenido del registro f en una unidad, el resultado sealmacena en f si d=1 y en W si d=0, en este caso, f no varía. Si elresultado es cero, se ignora la siguiente instrucción y, en ese caso lainstrucción tiene una duración de dos ciclos.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

Page 32: Transparencias PIC 16F84A

32

GOTO GOTOGo to direccion

Operación K PC <10:0>(PCLATH <4:3>) (PC <12:11>)

Sintaxis [Etiqueta] GOTO k

Operadores 0 ≤k ≤2047

Palabras 1

Ciclos 2

Descripción Salto incondicional, normalmente se utiliza para llamar a la subrutinasituada en la dirección que se carga en PC.El modo de cálculo de la instrucción caga de bit 0 al 10 del valor de laconstante k en el PC y los bits 4 y 3 del registro PCLATH

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

INCF INCFIncrement f

Operación (f) + 1 (dest)

Sintaxis [Etiqueta] INCF f,d

Operadores 0 ≤ f ≤ 127d 0 [0,1]

(f) + 1 (dest)

Palabras 1

Ciclos 1

Descripción Se incrementa en una unidad el contenido del registro f, si d=1 elresultado se almacena en f, si d= 0 el resultado se almacena en W, en estecaso el resultado de f no varía.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X - -

Status

Page 33: Transparencias PIC 16F84A

33

INCFSZ INCFSZIncrement f, SKIP if 0

Operación (f) +1 (dest) , skip if result = 0

Sintaxis [Etiqueta] <INCFSZ f,d

Operadores 0 ≤ f ≤ 127d 0 [0,1]

Palabras 1

Ciclos 1 (2)

Descripción Incrementa el contenido del registro f en una unidad. El resultado sealmacena de nuevo en f si d=1, y en W si d=0, en este caso f no varía. Siel resultado es cero, se ignora la siguiente instrucción y , en ese caso la,instrucción tiene una duración de dos ciclos.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

IORLW IORLWInclusive OR Literal wirh W

Operación (W).OR.k (W)

Sintaxis [Etiqueta] IORLW k

Operadores 0 ≤ k ≤ 255

Palabras 1

Ciclos 1

Descripción Se realiza la operación lógica OR entre el registro W y el literal k. Elresultado se almacena en el registro W.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X - -

Status

Page 34: Transparencias PIC 16F84A

34

IORWF IORWFInclusive OR W with f

Operación (W) .OR.(f) (dest)

Sintaxis [Etiqueta] IORWF f,d

Operadores 0 ≤ f ≤31d ∈[0,1]

Palabras 1

Ciclos 1

Descripción Efectúa la operación lógica OR entre el contenido del registro W y elcontenido del registro f, y almacena el resultado en f si d=1 y en W sid=0.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X - -

Status

MOVLW MOVLWMove liteal to W

Operación k (W)

Sintaxis [Etiqueta] MOVLW k

Operadores 0 ≤ f≤ 255

Palabras 1

Ciclos 1

Descripción El registro W se carga con el valor de 8 bits del literal k

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X - -

Status

Page 35: Transparencias PIC 16F84A

35

MOVF MOVFMove f

Operación (f) (dest)

Sintaxis [Etiqueta] MOVF f,d

Operadores 0 ≤ f ≤ 31d ∈ [0,1]

Palabras 1

Ciclos 1

Descripción El contenido del registro f se carga en el registro destino dependiendo delvalor de d. Si d=0 el destino es el registro W, si d=1 el destino es elpropio registro f . Esta instrucción permite verificar dicho registro ya queel flag Z queda afectado.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X - -

Status

MOVWF MOVWFMove W to f

Operación (W) (f)

Sintaxis [Etiqueta] MOVWF f

Operadores 0 ≤ f ≤ 31

Palabras 1

Ciclos 1

Descripción Mueve el contenido del registro W al registro f

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

Page 36: Transparencias PIC 16F84A

36

NOP NOPNo operation

Operación no operación

Sintaxis [Etiqueta] NOP

Operadores No tiene

Palabras 1

Ciclos 1

Descripción No realiza operación alguna. En realidad, se consume un ciclo deinstrucción sin hacer nada.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

RETFIE RETFIEReturn from Interrupt

Operación TOS PC1 GIE

Sintaxis [Etiqueta] RETFIE

Operadores No tiene

Palabras 1

Ciclos 2

Descripción Carga el PC con el valor que se encuentra en la parte alta de la Pila,asegurando así la vuelta de la interrupción. Pone a 1 el bit GIE, con el finde autorizar de nuevo que se tengan en cuenta las interrupciones.Esta instrucción no existe en los PIC 16C5X

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

Page 37: Transparencias PIC 16F84A

37

RETLW RETLWRetur with Literal in W

Operación k (W);TOS PC

Sintaxis [Etiqueta] RETLW k

Operadores 0 ≤ f ≤ 255

Palabras 1

Ciclos 2

Descripción Carga el registro W con el literal k, y después carga el PC con el valorque se encuentra en la parte superior de la PILA, efectuando así unretorno de subrutina.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

RETURN RETURNReturn from Subroutine

Operación TOS PC

Sintaxis [Etiqueta] RETURN

Operadores No tiene

Palabras 1

Ciclos 2

Descripción Retorno de subrutinaPC = TOS

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

Page 38: Transparencias PIC 16F84A

38

RLF RLFRotate Left f through Carry

Operación C Registro

Sintaxis [Etiqueta] RLF f,d

Operadores 0 ≤ f ≤31d ∈ [0,1]

Palabras 1

Ciclos 1

Descripción Rotación de un bit a la izquierda del contenido del registro f, pasando porel bit de acarreo C. Si d= 1 el resultado se almacena en f, si d =0 elresultado 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 RRFRotate Right f through Carry

Operación C Registro

Sintaxis [Etiqueta] RRF f,d

Operadores 0 ≤ f ≤ 31d ∈[0,1]

Palabras 1

Ciclos 1

Descripción Rotación de un bit a la derecha del contenido del registro f, pasando por elbit de acarreo C. Si d = 1 el resultado se almacena en f, si d = 0 elresultado se almacena en W.

C Registro

Status

Page 39: Transparencias PIC 16F84A

39

SLEEP SLEEPSleep

Operación 00h WDT 0 WDT prescaler __ 1 TO __ 0 PD

Sintaxis [Etiqueta] SLEEP

Operadores No tiene

Palabras 1

Ciclos 1

Descripción 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 instrucción SLEEP o CLRWDTPD Se pone a 0 al ejecutar la instrucción SLEEP

Status

SUBLW SUBLWSubtract W from Literal

Operación k - (W) (W)

Sintaxis [Etiqueta] SUBLW k

Operadores 0 ≤ k ≤ 255

Palabras 1

Ciclos 1

Descripción Resta en complemento a dos el contenido del literal k el contenido delregistro W, y almacena el resultado en W.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X X X

Status

Page 40: Transparencias PIC 16F84A

40

SUBWF SUBWFSubtract W from f

Operación (f) - (W) (dest)

Sintaxis [Etiqueta] SUBW f,d

Operadores 0 ≤ f ≤ 31d ∈ [0,1]

Palabras 1

Ciclos 1

Descripción Resta en complemento a dos el contenido del registro f menos elcontenido 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 SWAPFSwap Nibbles in f

Operación (f<3:0>) (dest <7:4>)(f<7:4>) (dest <3:0>)

Sintaxis [Etiqueta] SWAPF f,d

Operadores 0 ≤ f ≤ 31d ∈ [0,1]

Palabras 1

Ciclos 1

Descripción Los cuatro bits de más peso del registro f se intercambian con los 4 bits demenos peso del mismo registro. Si d=0 el resultado se almacena en W, sid=1 el resultado se almacena en f.

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - - - -

Status

Page 41: Transparencias PIC 16F84A

41

XORLW XORLWExclusive OR Literal With k

Operación (W).XOR.k (W)

Sintaxis [Etiqueta] XORLW k

Operadores 0 ≤f ≤ 255

Palabras 1

Ciclos 1

Descripción Realiza la función OR-Exclusiva entre el contenido del registro W y laconstante k de 8 bits. El resultado se almacena en W

PA2 PA1 PA0__TO

__PD Z DC C

- - - - - X - -

Status

XORWF XORWFExclusive OR With f

Operación (W).XOR.(f) (des)

Sintaxis [Etiqueta] XORWF f,d

Operadores 0 ≤ f ≤ 127d ∈ [0,1]

Palabras 1

Ciclos 1

Descripción Realiza la función OR-Exclusiva entre el contenido del registro W y elcontenido 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

Page 42: Transparencias PIC 16F84A

42

• 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 interrupción– RETURN: Retorno de subrutina– SUBLW: Resta W de un inmediato

SET DE INSTRUCCIONES

Prescaler de TMR0/WDT

Page 43: Transparencias PIC 16F84A

43

• Para que TRM0 funciona como contador de impulsos por el pin RA4/TOCK, hay que poner a 1 el bit T0CS del registro OPTION.

• El flanco de activación 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 T0IF del registro INTCON si está activado el bit activación global de interrupciones GIE.

El TRM0 como Contador (1)

El TRM0

Page 44: Transparencias PIC 16F84A

44

EL TMR0

Foosc/4

Bus de datos

El bit T0IF sepone a 1 si hayoverflow

T0SE

RA4/T0CKIpin

Sincronizacióncon el reloj

internoTMR0

8

0

11

0

T0CS

PreescalerProgramable

PS2,PS1,PS0 PSA

3

PSout

PSout(Retardo de 2 ciclos)

El TRM0

CLKOUT (=Foosc/4) Bus de datos

El bit T0IF sepone a 1 si hayoverflow

T0SE

RA4/T0CKIpin

PS2:PS0

PSA

WDTtime-out

WDT bit de habilitación

MUX

T0CS

0

1

Retardode 2ciclos

Registro TMROMUX

PSA

1

0

MUX

PSA

0

1

Multiplexor 1-8

Preescaler de 8 bits

MUX

PerroGuardián

8

0 1

8

3

PREESCALER

Page 45: Transparencias PIC 16F84A

45

EL WATCHDOG (WDT)

• Su función es vigilar que el programa no se “cuelgue”.

• Para ello el Watchdog da un paseo por la CPU cada cierto tiempo, asegurándose que el programa se ejecuta normalmente; en caso contrario (por ejemplo si el control está detenido en un bucle infinito o a la espera de un acontecimiento que no se produce), el Watchdog “ladra” y provoca un reset, reinicializando el sistema.

EL WATCHDOG (WDT)

• El Warchdog es un temporizador de 8 bits cuyo objetivo es generar un reset general cuando se desborda su cuenta.

• Su control de tiempo es independiente del oscilador principal del µcontrolador y se basa en una red R-C interna que fija un periodo de oscilación de 18 ms.

• El periodo puede aumentarse haciendo uso del Preescaler con el que se puede conseguir una relación de hasta 1:128 que corresponde a 2,3 seg. de temporización.

Page 46: Transparencias PIC 16F84A

46

EL WATCHDOG (WDT)

CLKOUT (=Foosc/4) Bus de datos

El bit T0IF sepone a 1 si hayoverflow

T0SE

RA4/T0CKIpin

PS2:PS0

PSA

WDTtime-out

WDT bit de habilitación

MUX

T0CS

0

1

Retardode 2ciclos

Registro TMROMUX

PSA

1

0

MUX

PSA

0

1

Multiplexor 1-8

Preescaler de 8 bits

MUX

PerroGuardián

8

0 1

8

3

PREESCALER

MODO DE BAJO CONSUMO “SLEEP”

• Es un modo de funcionamiento de ahoro de energía, llamado modo de bajo consumo, reposo, standby o SLEEP.

• Para entra en este modo hay que ejecutar la instrucción SLEEP.

• En este modo se detiene el reloj principal y sus circuitos asociados con el consiguiente ahorro de energía. Al activarse una interrupción, ocasionada por algún acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo.

(1)

Page 47: Transparencias PIC 16F84A

47

MODO DE BAJO CONSUMO “SLEEP”

• Al ejecutarse la instrucción SLEEP se provocan los siguientes acontecimientos:– El consumo del microcontrolador baja a unos pocos μA.– Si el Watchdog está habilitado se refresca su valor, pero seguirá

funcionando normalmente.– El oscilador principal del sistema deja de funcionar.– El TMR0 tampoco funciona.– Los puertos de E/S mantienen el mismo estado que tenían antes de

ejecutar SLEEP.– Los bits /TO y /PD del registro de STATUS toman los valores “1”

y “0” respectivamente.

(2)

MODO DE BAJO CONSUMO “SLEEP”(Status) (2)

dirección: 03h,83h

• PD : Power Down1: Tras conectar VDD o al ejecutar la instrucción CLRWDT0: Al ejecutar la instrucción SLEEP

• TO: Timer Out1: Tras conectar VDD o ejecutar CLRWDT o SLEEP0: Al desbordar el temporizador de WDT

IRP RP1 RP0 TO# PD# Z DC CR/W R/W R/W R R R/W R/W R/W

(3)

Page 48: Transparencias PIC 16F84A

48

MODO DE BAJO CONSUMO “SLEEP”

• El µcontrolador se despierta por alguna de las siguientes razones:– El pin de reset MCLR es activado a nivel bajo,

generándose un reset.– El Watchdog que estaba habilitado cuando se

ejecuto el sleep se desborda y se despierta.– Por una interrupción que no sea el

desbordamiento del TMR0, ya que este no funciona en el modo SLEEP.

(4)

Interrupciones en el PIC16F84(1)

Page 49: Transparencias PIC 16F84A

49

El PIC 16F84 tiene 4 posibles causas de interrupción:Sucesos Externos• Activación del pin <6> RB0/INT. • Cambio de estado en una de los 4 pines de mas peso de

port B <RPB7:RPB4>.Sucesos Internos• Finalización de la Escritura en la EEPROM de datos• Desbordamiento del temporizador TMR0

Interrupciones en el PIC16F84(1)

Interrupciones en el PIC16F84A (3)

Interrupción

PC -->PilaGIE = 0

PC=0004h(Vector de Interrupción)

Rutina de atención a la Interrupción

Se almacenan losregistros a modificar

Se determina la causade la Interrupción

Salto a la rutinade servicio corespondiente

Restauración de losregistros

Se Borra el señalizadorde la interrupción

Retorno (RETFIE)PC<-- PILA

GIE=1

Page 50: Transparencias PIC 16F84A

50

Interrupción

PC PILA

GIE=0

PC=0004(Vector de Interrupción)

Se almacenan los registrosa modificar

Se determina la causade la Interrupción

Salto a la rutina deservicio a la Interrupción

Restauración de losRegistros guardados

Se borra el señalizadorde la Interrupción

Retorno (RETFIE)

PC PILA

GIE=1

Interrupciones en el PIC16F84A (3)

Cuando se produce una petición de interrupción ocurre lo siguiente:

• Si el bit GIE=1 se atiende la interrupción• 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 PIC16F84(2)

Page 51: Transparencias PIC 16F84A

51

Que debe hacer el programa de atención a la interrupción:• Guardar el contenido de los registros que va a utilizar esta

rutina.• Se determina la causa de la interrupción explorando los

señalizadores de las fuentes de interrupción.• Saltar a la rutina de atención a la interrupción

correspondiente.• Devolver el valor de los registros que tenia el programa

antes de atender la interrupción.• Borrar el señalizador de interrupción• Ejecutar RETFIE

Interrupciones en el PIC16F84(3)

Secuencia de instrucciones para guardar los registros al saltar a una interrupción

Salvar movwf W_TEMP ;Guarda el contenido de Wswapf STATUS,W ;Swap el contenido de Estado en Wmovwf STATUS_TEMP ;Guarda el contenido Estado(swapped)

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

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

Secuencia de instrucciones de finalización de interrupciónRestaurar swapf STATUS_TEMP,W;Devuelve el regisgtro de STATUS

movwf STATUS ;restaura el STATUSswapf W_TEMP,f ;restaura el Wswapf W_TEMP,Wbcf INTCON,INTF ;borrar el señalizador de la interrupciónretfie ;retorno de interrupción

Interrupciones en el PIC16F84(4)

Page 52: Transparencias PIC 16F84A

52

Secuencia de instrucciones para explorar cual es la causa de la interrupción.btfsc INTCON,INTF ;Si el flag INTF=0 salta call Inte ;Si el flag INTF=1 salta a Intebtfsc INTCON,T0IF ;Si el flag T0IF = 0 saltacall Timer ;Con T0IF=1, se llama a Timerbtfsc INTCON,RBIF ;Si el flag RBIF=0 salta call Puert_B ; Si el flag RBIF=1 salta a Puerto_Bbsff STATUS,RP0 ; Selecciona el banco 1btfsc EECON1,EEIF ; Si EEIF=0, saltacall Eeprom ; Si el flag INTF=1 salta a Eeprom

Interrupciones en el PIC16F84(6)

Lógica que gobierna la generación de una interrupción

Interrupciones en el PIC16F84(5)

Activa si estáen modo de reposo

Interrupción

TOIFTOIE

INTFINTE

RBIFRBIE

EEIFEEIE

GIE

Page 53: Transparencias PIC 16F84A

53

Memoria EEPROM de datos

07h

08h

09h

0Ah

4Fh

50h

0Ch

0Bh

D0h

CFh

8Ch

EEDATA

EEADR

PCLATH

INTCON

DECODIFICADOR

EECON2 89h

8Bh

8Ah

88h

87h

EECON1

PCLATH

INTCON

MAPEADO EN

BANCO 0

7Fh FFh

NO IMPLEMENTADO FISICAMENTE.

(SE LEEN COMO "0").

RB4

RB3

RB2

RB1

RB0

PUERTOB

RB5

RB6

RB7

3Fh

3Eh

01h

00h

03h

02h64 POSICIONES DE MEMORIA DE

DATOSEEPROM.

8BUS DEDATOS

BUS DE INSTRUC

68 REGISTROS

DE PROPOSITO

GENERAL

SFR

(Spe

GP

R

Registro EECON1 (1)

• Bit 4:EEIF, Señalizador de final de operación de escritura1= La operación de escritura se ha completado con éxito0 = La operación de escritura no se ha completado

• Bit 3:WRERR, Señalizador de error de escritura1 = Se pone a 1 cuando una operación de escritura ha terminado prematuramente0 = La operación de escritura se ha completado correctamente

• Bit 2: WREN, Permiso de escritura1 = Permite la escritura de la EEPROM0 = Prohibe la escritura de la EEPROM

- - - EEIF WRERR WREN WR RDbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Page 54: Transparencias PIC 16F84A

54

Registro EECON1 (2)

• Bit 1: WR, EscrituraSe pone a 1 cuando comienza el ciclo de escritura de la EEPROMSe pone a 0 cuando finaliza el ciclo de escritura de la EEPROM

• Bit 0: RD, LecturaSe pone a 1 cuando se va a realizar un ciclo de lectura de la EEPROM.

Este bit pone a 0 automáticamente cuando termina la lectura de la posición de la EEPROM

- - - EEIF WRERR WREN WR RDbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

RUTINA DE LECTURA EN LA E2PROM

;EE_Read: Leer un byte de la EEPROM. En W se debe escribir la dirección de ;memoria a leer y en W se devuelve el valor de la posición de memoria leída.EEPROM_LeeDato

movwf EEADR ;Dirección a Leerbsf STATUS,RP0 ;Selección de banco 1bsf EECON1,RD ;Orden de lectura

EEPROM_SigueLeyendobtfsc EECON1,RDgoto EEPROM_SigueLeyendobcf STATUS,RP0 ;Selección de banco 0movf EEDATA,Wreturn

Page 55: Transparencias PIC 16F84A

55

Rutina de Escritura en la E2PROM

;EE_Write: Graba un byte en la EEPROM de datos. La dirección será la contenida ;en EEADR y ;el dato se le supone previamente metido en EEDATAEEPROM_EscribeDato

bsf STATUS,RP0 ;Selecciona banco 1bsf EECON1,WREN ;Permiso de escrituramovlw b'01010101'movwf EECON2movlw b'10101010'movwf EECON2 ;Secuencia establecida por Microchipbsf EECON1,WR ;Orden de escritura

EEPROM_TerminaEscribirbtfsc EECON1,WR ;Testear flag de fin de escrituragoto EEPROM_TerminaEscribirbcf EECON1,WREN ;Desautoriza la Escritura en la EEPROMbcf EECON1,EEIF ;Reponer flag de fin de escriturabcf STATUS,RP0 ;Selección banco 0return