PIC 16F84 – Organización de la memoria

Organización de la memoria

El PIC es el microcontrolador que fabrica la compañía Microchip. Aunque no son los microcontroladores que más prestaciones ofrecen, en los últimos años han ganado mucho mercado, debido al bajo precio de éstos, lo sencillo de su manejo y programación y la ingente cantidad de documentación y usuarios que hay detrás de ellos.

¿Para qué sirve un PIC?

Un PIC, al ser un microcontrolador programable, puede llevar a cabo cualquier tarea para la cual haya sido programado. No obstante, debemos ser conscientes de las limitaciones de cada PIC. Así, el 16F84, PIC que se tratará en este tutorial, no podrá generar un PWM ni convertir señales analógicas en digitales, entre otras.

El 16F84

Se trata de un microcontrolador de 8 bits. Es un PIC de gama baja, cuyas características podemos resumir en:

  • Memoria de 1K x 14 de tipo Flash
  • Memoria de datos EEPROM de 64 bytes
  • 13 líneas de E/S con control individual
  • Frecuencia de funcionamiento máxima de 10 MHz.
  • Cuatro fuentes de interrupción

* Activación de la patita RB0/INT
* Desbordamiento del TMR0
* Cambio de estado en alguna patita RB4-RB7
* Fin de la escritura de la EEPROM de datos

  • Temporizador/contador TMR0 programable de 8 bits
  • Perro Guardián o WatchDog

Generalmente se encuentra encapsulado en formato DIP18. A continuación puede apreciarse dicho encapsulado y una breve descripción de cada una de las patitas: imagen:

PIC 16F84 - Electrónica Unicrom

  • VDD: alimentación
  • VSS: masa
  • OSC1/CLKIN-OSC2/CLKOUT: conexión del oscilador
  • VPP/MCLR: tensión de programación y reset
  • RA0-RA3: líneas de E/S de la puerta A
  • RA4: línea de E/S de la puerta A o entrada de impulsos de reloj para TMR0
  • RB0/INT: línea de E/S de la puerta B o petición de interrupción
  • RB1-RB7: líneas de E/S de la puerta B

A continuación podemos ver la organización de la memoria del 16F84:

Organización de la memoria del PIC 16F84

Podemos comprobar como la memoria está dividida en dos bancos (cada una de las columnas): banco 0 y banco 1. Las primeras 12 posiciones de cada banco (00h-0Bh y 80h-8Bh) están ocupadas por los Registros de Propósito Especial (Special Purpose Registers).

Estos registros, en los que entraremos en detalle más adelante, son los encargados de controlar ciertas funciones específicas del PIC.

Las 68 posiciones siguientes (0Ch-4Fh y 8Ch-CFh) son los denominados Registros de Propósito General, del inglés General Purpose Registers. Éstos son empleados guardar cualquier dato que necesitemos durante la ejecución del programa.

BANCO 0

• TMR0: es un temporizador/contador de 8 bits. Puede operar de dos modos distintos:

  • Temporizador: el registro incrementa su valor en cada ciclo de instrucción (Fosc/4).
  • Contador: el registro incrementa su valor con cada impulso introducido en la patita RA4/TOSKI.

En ambos casos, cuando el registro se desborda, es decir, llega a su valor máximo (en este 2^8 = 256. Como el 0 también se cuenta, el máximo valor sería 255), empieza de nuevo a contar a partir del 0, no sin antes informar de este evento a través de la activación de un flag y/o una interrupción.

• PCL: es el contador del programa. Indica la dirección de memoria que se leerá a continuación. En algunas ocasiones, como el empleo de las tablas, el uso de este registro es imprescindible.

• STATUS: registro de 8 bits que sirve para configurar ciertos aspectos del PIC. En la siguiente figura se aprecia la disposición de los bits de dicho registro:

– RP0: indica el banco de memoria con el que se está trabajando. Cuando vale 0 se selecciona el Banco 0 y cuando vale 1 el Banco 1.

• PORTA: representación de la puerta A. Cada bit representa una línea de E/S de la puerta A:

Como se puede comprobar, los tres bits de mayor peso no representan ninguna línea de E/S, ya que la puerta A solo tiene 5 líneas de E/S

• PORTB: lo mismo que la puerta A, pero en este caso con 8 líneas de E/S

BANCO 1

• TRISA: registro de 8 bits de configuración de la puerta A. Si un bit se encuentra en 1, esa línea de E/S se configura como entrada; si, en cambio, se encuentra a 0, se configura como salida

• TRISB: lo mismo que TRISA, pero referente a la puerta B.

Finalmente cabe destacar el registro W, también conocido como registro de trabajo (del inglés work) o acumulador. Es de vital importancia ya que, entre otras, deberemos usarlo de registro puente para llevar a cabo ciertas operaciones.

/Tut_PICs3.asp   /Tut_organizacion_memoria_PIC_16F84.asp

Leave a Comment

I accept the Privacy Policy