Redeya.com
Microcontrolador PIC 16F8x (I)
Autor: Miguel Angel Montejo Ráez radastan@swin.net

Indice


Familia PIC16F8X

Dispositivos integrantes de la familia:

FLASH-PROGRAMA MEMORIA-DATOS EEPROM-DATOS
PIC16F83 512 bytes 36 bytes 64 bytes
PIC16F84 1 K bytes 68 bytes 64 bytes

Adicionalmente hay una familia derivada PIC16LF8X con voltaje extendido. Los PIC16F8X son iguales a los 16C8X salvo que sustituyen FLASH por EPROM para la memoria de programa.

Características de CPU

Características de periferia

  • 13 pins de e/s para control de direccionamiento individual
  • Alta corriente de salida para manejar LEDs directamente:
    • 25 mA de pico por pin
    • 20 mA entregados por pin
  • TMR0: contador/temporizador de 8 bits pre-escalar y programable
Características especiales del Microcontrolador

  • Power en Reset (POR)
  • Power por temporización (PWRT)
  • Temporizador de comienzo por oscilador (OST)
  • Temporizador de "perro guardián" o watchdog (WDT) con su propio oscilador RC para mejor operación
  • Protección de código
  • Modo SLEEP para ahorro de energía
  • Programación del sistema por puerto serie de dos pines (los dispositivos ROM sólo soportan programación de datos en EEPROM)
Tecnología CMOS

  • Tecnología de baja potencia y alta velocidad CDMOS Flash/EEPROM
  • Diseño completamente estático
  • Rango de voltajes de trabajo:
    • Comercial: 2.0V a 6.0V
    • Industrial: 2.0V a 6.0V
  • Bajo consumo de potencia:
    • <2mA típicos a 5V y 4MHz
    • 15uA típicos a 2V y 32 KHz
    • 1 uA típico de corriente de "standby" o espera a 2V
Patillaje


Nº pin Nombre Tipo (E/S/A) Tipo de buffer Descripción
16 OSC1/CLKIN E ST/CMOS (3) entrada del cristal oscilador / entrada externa de reloj
15 OSC2/CLKOUT S - Salida del cristal oscilador. En el modo de oscilación por cristal se conecta al cristal o resonador. En modo RC OSC2 proporciona CLKOUT (salida de reloj), que posee 1/4 de la frecuencia de OSC1, y representa el ciclo de instrucción.
4 MCLR' E/A ST Entrada de reset / entrada de voltaje de programación. Este pin es un reset activo a nivel lógico bajo del dispositivo.
17
18
1
2
3
RA0
RA1
RA2
RA3
RA4/T0CKI
E/S
E/S
E/S
E/S
E/S
TTL
TTL
TTL
TTL
ST
PORTA es un puerto de E/S bidireccional

Puede ser seleccionado también para ser la entrada de reloj al contador/temporizador TMR0. La salida es de colector abierto.

6
7
8
9
10
11
12
13
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
E/S
E/S
E/S
E/S
E/S
E/S
E/S
E/S
TTL/ST (1)
TTL
TTL
TTL
TTL
TTL
TTL/ST (2)
TTL/ST (2)

PORTB es un puerto de E/S bidireccional que puede ser programado para levantar internamente todas las entradas.

RB0/INT puede ser seleccionado como un pin de interrupción externa

RB4 a RB7 son pines de interrupción por cambio de estado.
RB6 es la entrada de reloj de programación y RB7 la entrada de programación serie.

5 Vss A - Referencia de tierra (masa) para todos los pines lógicos de E/S.
14 Vdd A - Alimentación positiva para todos los pines lógicos de E/S.

Leyenda y notas:
E=entrada	S=salida	E/S=entrada/salida	A=alimentación
-=no empleado      TTL=entrada TTL      ST=entrada Schmitt

(1) Este buffer es una entrada Schmitt cuando se configura como interrupción externa
(2) Este buffer es una entrada Schmitt cuando se emplea en el modo de programación serie
(3) Este buffer es una entrada Schmitt cuando se configura en el modo de oscilación RC y como entrada CMOS


Arquitectura interna

Los microcontroladores PIC utilizan la arquitectura Harvard, la cual separa la memoria de programa de la memoria de datos. Esto hace que el dispositivo tenga un bus de datos y un bus de memoria de programa, hecho que permite acceder a ambos simultáneamente. En el caso de la memoria de programa es interna, ya que se encuentra en forma de EPROM o FLASH dentro del propio PIC.

Otra característica reseñable es que las instrucciones en los PIC son de 14 bits y no de 8, permitiendo instrucciones de palabra única con operación y operando en la misma palabra.

Esta estructura, acompañada de un pipeline, permite que las instrucciones se ejecuten en un sólo ciclo de reloj, salvo en el caso de saltos/rupturas de programa. Lo que se hace internamente es que mientras se ejecuta la instrucción actual se carga la siguiente instrucción en el pipeline, con lo que se alcanza una alta velocidad de ejecución.

En cuanto a los registros los PIC pueden direccionarse tanto directa como indirectamente. Todos los registros de función especial, incluyendo el contador de programa, están accesibles en la memoria de datos y pueden ser operados de cualquier forma y empleando cualquier modo de direccionamiento (ortogonalización).

Igualmente, todos los elementos del sistema (temporizadores, puertos de e/s, etc) están implementados como registros.

La unidad lógica aritmética (ALU)

Los PIC poseen una ALU de 8 bits y un registro de trabajo (W) de 8 bits, pudiéndose efectuar operaciones aritméticas y booleanas entre el registro de trabajo y cualquier otro registro. Por naturaleza los datos se operan en complemento a 2, a menos que se diga lo contrario.

En función de las instrucciones ejecutadas la ALU puede afectar los valores de los siguientes registros:

Diagrama de la estructura interna


Organización de la memoria

Hay dos bloques de memoria en el PIC16F8x. Éstas son la memoria del programa y la memoria de datos. Cada bloque posee su propio bus, con la finalidad que el acceso para cada bloque pueda ocurrir durante el mismo ciclo del oscilador.


Memoria de programa

La memoria de programa está organizada en palabras de 14 bits y es del tipo FLASH. Esta memoria es de sólo lectura y únicamente se ejecutará el código contenido en ella. El vector de reset se encuentra en la posición 0000h y el de interrupciones en la 0004h, por lo que la memoria de usuario se extiende desde la dirección 0005h.

Memoria de datos

La memoria de datos está dividida en Registros de Propósito General (GPR) y los Registros de Función Especiales (SFR).Los SFR controlan la operación del dispositivo.

Para el estudio de esta memoria se suele dividir virtualmente la misma en dos bancos, tal y como podemos ver en el gráfico adjunto. De esta forma los registros GPR están agrupados entre 00h-0Bh y 80h-8Bh. Los registros de propósito general pueden ser accedidos desde 0Ch-2Fh o 8Ch-AFh, aunque se recomienda siempre el primer intervalo.

Las zonas de memoria 30h-7Fh y B0h-FFh no son empleadas y devuelven 0 en lectura.

El área de memoria de datos también contiene la memoria de datos EEPROM. Esta memoria no está directamente mapeada en la memoria de datos, pero está indirectamente mapeada. Esto es, un puntero de dirección indirecta especifica la dirección de la memoria de datos EEPROM para lectura/escritura. Los 64 bytes de memoria de datos EEPROM tienen el rango de dirección 00h-3Fh.

Para acceder a la EEPROM en lectura y escritura empleamos dos registros, que forman el puntero de dirección indirecta:

EEDATA (0008h), para datos
EEADR (0009h), para direcciones

Para definir el modo de funcionamiento empleamos los registro especiales:

EECON1 (0088h)
EECON2 (0089h)



Puertos de E/S

Disponemos de dos puertos de entrada y salida (E/S).

Puerto A

Posee 5 líneas (RA0 a RA4), en la que RA4 o T0CKI es compartida con la entrada para el temporizador 0 (TMR0).

Puerto B

Posee 8 líneas de E/S (RB0 a RB7), en la que la línea RB0 o INT es compartida con la entrada de interrupción externa.


Página original de Http://www.redeya.com, prohibida su reproducción sin consentimiento del autor