You are on page 1of 27

PICmicro GAMA MEDIA: PIC16F84 [I]

PICmicro GAMA MEDIA: PIC16F84

ARQUITECTURA

PICmicro GAMA MEDIA: PIC16F84


Dentro del PIC16F84 se distinguen tres bloques de memoria:

Memoria de programa
En sus 1024 posiciones (1Kwords) contiene el programa con las instrucciones que gobiernan la aplicacin. Es del tipo no voltil.

Memoria de datos RAM


Guarda las variables y datos. Son 68 registros de 8 bits. Es voltil.

Memoria EEPROM de datos


Es una pequea rea de memoria (64x8) de datos de lectura y escritura no voltil que permite garantizar que determinada informacin estar siempre disponible al reinicializarse el programa. Se gestiona de manera distinta a la memoria de datos RAM.

PICmicro GAMA MEDIA: PIC16F84


MEMORIA DE PROGRAMA Almacena todas las instrucciones del programa en ejecucin, que estar grabado de forma permanente. La informacin contenida en esta memoria se graba previamente mediante un equipo fsico denominado programador o grabador. El PIC16F84 tiene una memoria de programa no voltil denominada ROM Flash que admite unas 1000 grabaciones. La memoria de programa est organizada en palabras de 14 bits cada una. Todas las instrucciones ocupan una posicin de memoria de programa.

A la direccin 0 se acceder tras un RESET y a la posicin 4 tras una interrupcin cualquiera.


4

PICmicro GAMA MEDIA: PIC16F84


CONTADOR DE PROGRAMA (PC)
A la memoria de programa de los PIC16 se accede mediante un registro de 13 bits que acta como puntero de la instruccin que se debe ejecutar en el siguiente ciclo de instruccin. Este registro de 13 bits se denomina Contador de Programa (Program Counter) y su acrnimo es PC. Con este contador de programa de 13 bits se pueden direccionar 8K posiciones de memoria de 14 bits cada una. La memoria se organiza en pginas de 2K de tamao. Como cada instruccin ocupa una posicin de memoria resulta mucho ms fcil saber si un dispositivo tiene memoria de programa suficiente para una aplicacin.
LNEAS DE DIRECCIN

LNEAS DE DATOS DE MEMORIA

PICmicro GAMA MEDIA: PIC16F84


CONTADOR DE PROGRAMA (PC)
Los 8K de memoria de programa disponible estn divididos en 4 pginas de 2K cada una (0h7FFh, 800h-FFFh, 1000h- 17FFh y 1800h-1FFFh). Esto es debido a que las instrucciones de salto y llamada a subprograma permiten cargar slo 11 bits en el PC (desplazamiento en 211 = 2K) Si se estn ejecutando instrucciones secuencialmente, el contador de programa pasar de una pgina a otra sin necesidad de intervencin por parte del usuario o programador. Para saltar entre pginas de la memoria de programa los 2 bits ms altos del PC deben modificarse. Esto se realiza escribiendo en el registro PCLATH (es un registro situado en la memoria de datos). Los dispositivos con menos de 2K de memoria, como el PIC16F84, no necesitan paginado.

PICmicro GAMA MEDIA: PIC16F84


CONTADOR DE PROGRAMA (PC)
El PC de 13 bits se divide en dos registros: PCH (parte alta) y PCL (parte baja).

El byte bajo PC<0:7> se denomina PCL y est disponible en la memoria de datos (Banco 0, posicin 02h), es un registro que se puede leer y escribir directamente desde programa. El cuasibyte alto PC<12:8> se denomina PCH y no est disponible en la memoria de datos. Este registro no se puede leer ni escribir directamente. La escritura debe realizarse usando los 5 bits menos significativos del registro PCLATH que s es un registro de 8 bits accesible en la memoria de datos (Banco 0, posicin 08h). Los saltos relativos afectan a los 8 bits de menor peso del PC (PCL) y los 5 bits de mayor peso los aporta el PCLATH. En las instrucciones GOTO y CALL, los 11 bits de menor peso del PC se suministran desde el cdigo de operacin, los 2 bits de ms peso del PC se cargan con los bits [4:3] del PCLATH. Con los 11 bits se posicionan los 2K de cada pgina y con los 2 bits se posiciona una de las 4 pginas.
12 8 7 0 12 11 10 0

PC
5
7 6 5 4 0

PCL
2
7 6 5 4 3 2 1 0

11
EN GOTO y CALL PROCEDEN DEL CDIGO DE PROGRAMA

PCLATH

PICmicro GAMA MEDIA: PIC16F84


CONTADOR DE PROGRAMA (PC) PILA (STACK)
La pila permite almacenar las direcciones (PC) a donde debe retornar el programa cuando se finaliza una llamada a una subrutina o cuando se finaliza la ejecucin de una rutina de interrupcin. Los microcontroladores de la familia PIC16 tienen una pila de 8 niveles x 13 bits, que por tanto permite concatenar como mximo 8 saltos a subrutinas (CALL) o ejecuciones de rutinas de interrupcin (salto a 0004h). El espacio de memoria para la pila no forma parte de la memoria de programa ni de la memoria de datos que tiene el microcontrolador. Es un espacio de memoria totalmente independiente. El puntero de pila no es leble ni escribble. Al contrario que en otros micros, no se dispone de una pila en RAM que se pueda gestionar por software (no hay inst.PUSH ni POP)

PICmicro GAMA MEDIA: PIC16F84


VECTOR DE RESET

El vector de RESET est siempre en la posicin 0000h de la memoria de programa. Cualquier reset (interno o externo) que se genere en un microcontrolador har que su contador de programa pase a tener el valor 0000h y que por tanto el microcontrolador pase a ejecutar la instruccin situada en dicha posicin. El RESET tambin limpia el contenido del registro PCLATH.

PICmicro GAMA MEDIA: PIC16F84


VECTOR DE INTERRUPCIN

El vector de INTERRUPCION est siempre en la posicin 0004h de la memoria de programa. Cualquier interrupcin que se fuerce a un microcontrolador har que su contador de programa pase a tener el valor 0004h y que por tanto el microcontrolador pase a ejecutar la instruccin situada en dicha posicin. El salto a la rutina de interrupcin no modifica el contenido del PCLATH, por lo que cualquier modificacin que se realice del PC en la rutina de interrupcin debe realizarse con cuidado de lo que se tiene cargado en el PCLATH.

10

PICmicro GAMA MEDIA: PIC16F84


MEMORIA DE DATOS La memoria de datos esta distribuida hasta en 4 posibles bancos de 128 bytes (27) cada uno. Por tanto, la mxima cantidad de memoria disponible en los microcontroladores PIC16 es de 512 bytes. No obstante, no estn implementadas todas las posiciones de memoria en todos los bancos, ni todos los PIC de la gama disponen de todos los bancos. A cada posicin de memoria se le denomina registro.

11

PICmicro GAMA MEDIA: PIC16F84


MEMORIA DE DATOS

Almacena todas los datos que se manejan en un programa.


Se distinguen dos tipos de registro:
Registros de funciones especiales SFR. Son los primeros registros. Cada uno de ellos cumple un propsito especial en el control del PIC.

Registros de propsito general GPR. Se pueden usar para guardar datos temporales. El PIC16F84 dispone de 68.
Algunos SFR son accesibles desde dos o ms bancos.

Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3.

Existen zonas de memoria no empleadas que devuelven 0 en caso de lectura.

12

PICmicro GAMA MEDIA: PIC16F84


MEMORIA DE DATOS (PIC16F84) RAM 68x8 bit Memoria disponible 0Ch a 4Fh (12 a 79), en total 68 posiciones. Registros especiales en bancos 0 y 1 repartidos en 15 Registros distintos

13

PICmicro GAMA MEDIA: PIC16F84


MODOS DE DIRECCIONAMIENTO DE DATOS
Existen varios modos de direccionamiento para acceder a cualquiera de las posiciones de datos: Direccionamiento directo Direccionamiento indirecto Direccionamiento indexado Direccionamiento inmediato Direccionamiento de bit Direccionamiento directo: La posicin de memoria con la que se trabaja viene directamente definida en el cdigo de la instruccin.

mowf TMR0

14

PICmicro GAMA MEDIA: PIC16F84


MODOS DE DIRECCIONAMIENTO DE DATOS
Direccionamiento indirecto: La posicin de memoria con la que se trabaja viene definida por el contenido del registro FSR (Posicin 04h, 84h), es decir, el registro FSR acta como puntero de la posicin de memoria con la que se pretende operar. movwf INDF

Direccionamiento indexado: Se utiliza el PC, concretamente el PCL para direccionar.

addwf PCL,F

Direccionamiento inmediato: El valor del dato inmediato lo contiene el cdigo de operacin y se carga en el registro. iorlw K Direccionamiento de BIT: La direccin del dato es un bit. Bcf STATUS,RP0

15

PICmicro GAMA MEDIA: PIC16F84


MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS (Cont.)

7 bits para direccionar la RAM


(9 bits)*

Dir. Indirecto
7 bits (8 bits)*

Dir. Directo: 7 bits . Con los bits STATUS (RP1 y RP0) se obtiene el banco

(X bits)* en otros PIC de la GAMA

16

PICmicro GAMA MEDIA: PIC16F84


MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS (Cont.)
Tanto para el direccionamiento directo como el indirecto la direccin completa (7 bits) no se puede obtener del cdigo de la operacin (5 bits) o del registro FSR (7 bits). Para direccionamiento directo, la direccin a operar se obtiene completando la direccin incluida en el cdigo de la instruccin (posicin en el banco) con los bits RP1:RP0 del registro STATUS (seleccin de banco). Para direccionamiento indirecto, la direccin se obtiene completando el contenido del registro FSR (posicin en el banco) con el bit IRP del registro STATUS y el bit de mayor peso del FSR (seleccin del banco). [El PIC16F84 no utiliza el bit IRP solo 2 bancos-].

17

PICmicro GAMA MEDIA: PIC16F84


MODOS DE DIRECCIONAMIENTO INDIRECTO: INDF y FSR
EL DIRECCIONANMIENTO INDIRECTO UTILIZA EL INDF, NO ES UN REGISTRO FSICO. DIRECCIONANDO INDF SE DIRECCIONA REALMENTE EL REGISTRO CUYA DIRECCIN CONSTA EN EL REGISTRO FSR. El direccionamiento indirecto es muy til para el procesamiento de posiciones consecutivas de memoria o para el direccionamiento de datos en subrutinas.

REGISTRO POSICIN 05h CONTIENE 10h REGISTRO POSICIN 06h CONTIENE 0Ah CARGA DE 05h EN EL REGISTRO FSR LECTURA DE INDF DA UN VALOR DE 10h INCREMENTAR EL CONTENIDO DE FSR (FRS=06h) LECTURA DE INDF DA UN VALOR DE 0Ah

18

PICmicro GAMA MEDIA: PIC16F84 REGISTROS ESPECIALES


INDF TMR0 PCL STATUS FSR PORTA PORTB EEDATA EEADR PCLATH INTCON OPTION_REG TRISA TRISB : : : : : : : : : : : : : : Contiene datos para direccionamiento indirecto Contador del timer Parte baja del contador de programa Flag de resultados Puntero del direccionamiento indirecto PORTA I/O PORTB I/O Dato a grabar en EEPROM Direccin de grabacin de EEPROM Modifica la parte alta del contador de programa Control de Interrupcin Configuracin timer, prescaler Configuracin PORTA Configuracin PORTB

EECON1
EECON2

:
:

Registro de control de la EEPROM


Escritura de datos en modo proteccin EEPROM

INDF y EECON2 son utilizados por otros registros

19

PICmicro GAMA MEDIA: PIC16F84


REGISTROS ESPECIALES: STATUS REGISTER (Address 03h,83h)
R= W= -n = Bit de lectura Bit de escritura Valor en reset

CARRY (bit 0): bit de desbordamiento. Este bit se pone a "1" cuando la operacin anterior ha rebasado la capacidad de un byte. DC (digit carry) (bit 1): lo mismo que el anterior pero esta vez nos avisa si el nmero no cabe en cuatro bits. Z (zero) (bit 2): Se pone a "1" si la operacin anterior ha sido cero. Y pasa a "0" si la operacin anterior no ha sido cero. PD (Power - Down bit) (bit3): se pone a "0" despus de ejecutar la instruccin SLEEP*, se pone a "1" despus de ejecutar la instruccin CLRWDT o despus de un power-up. TO (Timer Up) (bit4): se pone a "0" cuando se acaba el tiempo del WATCHDOG, Se pone a "1" despus de ejecutar las instrucciones, CLRWDT o SLEEP o despus de un power-up. RP0 y RP1 (seleccin de banco) (bit 5 y 6): Como el PIC16F84 solo tiene dos bancos de memoria el RP1 no se usa para nada, la seleccin del banco se hace mediante RP0 (BIT 5), si est a "0" nos encontramos en el banco 0, y si est a "1" nos encontramos en el banco 1. IRP (bit 7): En este PIC no se usa para nada.

20

PICmicro GAMA MEDIA: PIC16F84


REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA
Puerto A: 5 bits
RA4/TOCK1 RA3 RA2 RA1 RA0

Puerto B: 8 bits
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT0

Definicin IN-OUT por TRIS f Nivel IN-OUT por PORT f

BSF STATUS,RP0 BANCO 1 Para trabajar con TRIS f BCF STATUS,RP0 BANCO 0 Para trabajar con PORT f

21

PICmicro GAMA MEDIA: PIC16F84


REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA

Definicin IN-OUT por TRIS f Salida: 0 Entrada: 1

Nivel IN-OUT por PORT f Guardar el contenido del Puerto en W

22

PICmicro GAMA MEDIA: PIC16F84


Puertos de entrada/salida
Definicin IN-OUT por TRIS f Salida: 0 Entrada: 1
BSF Status, RP0 CLRF TRISA MOVLW b11111111 MOVWF TRISB BCF Status, RP0 ;Banco 1 ;Puerto A OUT ;Puerto B IN

;Banco 0

BSF TRISf,x BCF TRISf,x MOVLW bxxxxxxxx MOVWF TRISf


Nivel IN-OUT por PORT f Guardar el contenido del Puerto en W
;SI PUERTO f ES DE SALIDA MOVLW MOVWF b'01010101 ;Guarda en W el valor PORTB ;Lo enva a la salida

; SI PUERTO f ES DE ENTRADA MOVF PORTB,W ;Guarda los datos en W

23

PICmicro GAMA MEDIA: PIC16F84


REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA PORT B: resistencias de PULL-UP conectadas Se habilitan o Deshabilitan todas a la vez por registro: OPTION_REG
Vcc

BSF OPTION_REG,RBPU BCF OPTION_REG,RBPU

Si el puerto se define como SALIDA, las resistencias NO ACTUAN PORT A: El pin RA4/TOCKI es un COLECTOR ABIERTO - Si se utiliza de SALIDA: Resistencia EXTERNA de Pull-up - Como ENTRADA: puede ser utilizada como Trigger-Schmitt 24

PICmicro GAMA MEDIA: PIC16F84


SEGN FUNCIONALIDAD
DATA SHEET

25

PICmicro GAMA MEDIA: PIC16F84


SEGN FUNCIONALIDAD

26

PICmicro GAMA MEDIA: PIC16F84


SEGN FUNCIONALIDAD

27