You are on page 1of 73

SEMANA II

Microcontrolador 16F84A
Sistemas Digitales Ing. Luis Raymi

Introduccin al
Microcontrolador

2.1 Descripcin del PIC16F84


2.2 Arquitectura Interna
2.2.1 Organizacin de la memoria
2.2.2 Registros
2.2.2 E/S

2.3 Modos de Direccionamiento

Descripcin del PIC16F84

This powerful (200 nanosecond instruction


execution) yet easy-to-program (only 35 single
word instructions) CMOS Flash/EEPROMbased 8-bit microcontroller packs Microchips
powerful PIC architecture into an 18-pin
package. The same device can be used for
prototyping and production and the end
application can be easily updated without
removing the device from the end product via
the ICSP. Easily adapted for automotive,
industrial, appliances low power remote
sensors, electronic locks and security
applications
Fuente: www.microchip.com

Descripcin del PIC16F84

Descripcin del PIC16F84

Descripcin del PIC16F84

Descripcin del PIC16F84

Descripcin del PIC16F84


Caracterstica
Descripcin
Frecuencia de
Hasta 20 MHz
operacin
Memoria de programa 1Kx14 bits
FLASH
Memoria de datos
68 bytes RAM
64 bytes
EEPROM
Puertos de E/S

Puerto A (5
pines)
Puerto B (8

Descripcin del PIC16F84

Procesador RISC con ALU de 8 bits y


registro de trabajo W del que
normalmente recibe un operando que
puede ser cualquier registro, memoria,
puerto de Entrada/Salida o el propio
cdigo de instruccin.
Buses de instruccin (14 lneas) y de
datos (8 lneas) separados:
Arquitectura HARVARD.
Ejecucin segmentada (pipeline de 2
etapas): Todas las instrucciones se
ejecutan en un solo ciclo de mquina,
excepto las de salto que requieren dos.

Descripcin del PIC16F84

Memoria de programa Flash de 1 K x 14


bits.
Memoria RAM dividida en 2 reas: 22
registros de propsito especfico (SFR) y 68
de propsito general (GPR) como memoria
de datos.
Memoria de datos RAM de 68 bytes (68
registros de propsito general).
Memoria de datos EEPROM de 64 bytes.
Contador de programa de 13 bit (lo que en
teora permitira direccionar 4 KB de
memoria, aunque el 16F84A solo dispone de
1KB de memoria implementada).
Pila (Stack) de 8 niveles de profundidad.

Descripcin del PIC16F84

Modos de direccionamiento directo,


indirecto y relativo.
4 fuentes de interrupciones:

A travs del pin RB0/INT.


Desbordamiento del temporizador TMR0.
Interrupcin por cambio de estado de los
pins 4:7 del Puerto B.
Completada la escritura de la memoria
EEPROM.

1.000.000 de ciclos de
borrado/escritura de la memoria
EEPROM.
40 aos de retencin de la memoria
EEPROM.

Descripcin del PIC16F84

13 pins de E/S con control


individual de direccin.
PortA

de 5 bits <RA0:RA4>.
PortB de 8 bits <RB0:RB7>.

Contador/Temporizador TMR0 de
8 bits con divisor programable.
Power-on Reset (POR).
Power-up Timer (PWRT).
Oscillator Start-up Timer (OST).
Watchdog Timer (WDT).

Descripcin del PIC16F84


Proteccin de cdigo.
Modo de bajo consumo SLEEP.
Puede operar bajo 4 modos
diferentes de oscilador.
Programacin en serie a travs
de dos pins.
Tecnologa de baja potencia y
alta velocidad CMOS
Flash/EEPROM.

Descripcin del PIC16F84

Encapsulado
El PIC16F84A se presenta en un
encapsulado PDIP (Plastic Dual In Line) o
SOIC (Small-Outline Integrated Circuit)
de 18 pines como se ve en la figura.

Descripcin del PIC16F84


Descripci
n de pines

El Oscilador o Generador de
Reloj
Es el encargado de proporcionar
una seal que sincronice las
operaciones internas del
microcontrolador.
A esta seal, que no es ms que
una onda cuadrada de alta
frecuencia, se le denomina Reloj
(Clock) y define la velocidad de
trabajo del sistema.

El Oscilador o Generador de
Reloj

Generalmente todos los


componentes del reloj se
encuentran integrados en el
propio microcontrolador y tan
slo se requiere unos pocos
componentes externos, como un
cristal de cuarzo o una red RC,
para definir la frecuencia de
trabajo.

El Oscilador o Generador de
Reloj

En el PIC16F84 los pines OSC1/CLKIN


y OSC2/CLKOUT son usados para este
fin, y permiten 5 tipos de osciladores:

XT: Cristal de cuarzo.


RC: Oscilador con resistencia y
condensador.
HS: Cristal de alta velocidad.
LP: Cristal para baja frecuencia y bajo
consumo de potencia.
Externa: Cuando se aplica una seal de
reloj externa.

El Oscilador o Generador de
Reloj
Oscilador XT
Es el ms utilizado y est basado en
el oscilador a cristal de cuarzo o en
un oscilador cermico.
Permite una frecuencia de reloj muy
estable entre 100 KHz y 4 MHz.
En muchas aplicaciones se suele
utilizar un cristal de cuarzo de 4
MHz acompaado de dos
condensadores entre 15 y 33 pF.

El Oscilador o Generador de
Reloj

Para cristal de cuarzo

Para resonador cermico

El Oscilador o Generador de
Reloj

RESET

El propsito del pin MCLR (Master


Clear) del PIC es provocar una
reinicializacin (RESET) del
microcontrolador.
Esto

provoca entre otras cosas que


la mayora de los dispositivos
internos tomen un estado
predeterminado (estado por defecto
y definido por el fabricante).

El MCLR inicia el reset cuando se


aplica a dicho pin un nivel lgico
bajo.

RESET

Se muestra la
conexin de
MCLR que
corresponde a un
reset automtico
que se produce
cada vez que se
energiza el
microcontrolador.

RESET

Para ello se debe activar la opcin


Power-On Reset (POR) del PIC.

El PIC dispone de un temporizador


denominado Reset PWRT (Power-up Timer)
que proporciona un retardo de 72 ms
desde el momento de la conexin a la
alimentacin.
El reset se mantienen durante este tiempo
garantizando que Vcc alcance un nivel
aceptable de tensin para un arranque
correcto del sistema.

De no emplearse la opcin POR del PIC


se deber emplear una red RC externa
que proporcione dicho retardo.

RESET

Se muestra la
conexin de
MCLR que
corresponde a un
reset manual:
MCLR es llevado
a masa cada vez
que se presiona
el pulsador.

RESET
En este tipo de conexin el reset
permanecer mientras se
mantenga presionado el pulsador.
Una vez soltado el pulsador se
iniciar la secuencia de arranque.
El fabricante recomienda conectar
en serie con el pulsador una
resistencia de 50 a 100 ohmios.
Por qu?

Alimentacin de un
PIC16F84A

Alimentacin de un
PIC16F84A

Caractersticas elctricas mximas (no deben ser


superadas y de mantenerse por un tiempo en algn
mximo puede daarse al PIC)

Temperatura ambiente mxima para funcionamiento de


-55C a +125C.
Tensin mxima de VDD respecto a VSS de -0,3 a +7,5V.
Tensin de cualquier patilla con respecto a VSS (excepto
VDD, MCLR, y RA4) de -0,3V a (VDD + 0.3V).
Tensin en MCLR con respecto a VSS -0,3 a +14V.
Tensin en RA4 con respecto a VSS -0,3 a +8,5V.
Disipacin de potencia total de 800 mW.
Mxima corriente de salida a VSS 150 mA.
Mxima corriente de salida de VDD 100 mA.
Mxima corriente del puerto "A" como fuente, 50 mA.
Mxima corriente del puerto "A" como sumidero, 80 mA.
Mxima corriente del puerto "B" como fuente, 100 mA.
Mxima corriente del puerto "B" como sumidero, 150 mA.
Mxima corriente que puede suministrar una sola salida
como fuente o sumidero, 25 mA.

Alimentacin de un
PIC16F84A

Rango de alimentacin:

16LF84A:
o

16F84A:
o
o

de 2 a 5,5 V en configuracin de oscilador XT, RC y LP.


de 4 a 5,5 v en configuracin de oscilador XT, RC y LP.
de 4,5 a 5.5 v en configuracin de oscilador HS.

Consumo tpico:

16LF84A:
o
o

16F84A:
o
o

de 1 a 4 mA en configuracin de oscilador RC y XT
(FOSC=2 MHz, VDD=5,5V).
de 15 a 45 A en configuracin de oscilador LP
(FOSC=32kHz, VDD=2V, WDT deshabilitado).
de 1,8 a 4.5 mA en configuracin de oscilador RC y XT
(FOSC=4 MHz, VDD=5,5V).
de 3 a 10 mA en configuracin de oscilador RC y XT
durante la programacin de la FLASH (FOSC=4MHz,
VDD=5,5V).

16F84A-20:
o

de 10 a 20 mA en configuracin de oscilador HS (FOSC=20


MHz, VDD=5,5V).

Alimentacin de un
PIC16F84A

Normalmente se
alimenta con 5
voltios aplicados
entre VDD y VSS
(alimentacin y
masa del chip,
respectivamente).
Se recomienda
conectar un
condensador de
desacoplo de
100nF lo ms
cerca posible del
pin de
alimentacin.

Puertos de
Entrada/Salida

El microcontrolador se comunica
a travs de los puertos.
Estos estn constituidos por
lneas digitales de entrada/salida
que trabajan entre 0 a 5 V.
Los pines de los puertos pueden
ser configurados para recibir
datos (como pin de entrada de
datos) o como salidas para
gobernar dispositivos externos
(como pin de salida de datos).

Puertos de
Entrada/Salida

El PIC 16F84A tiene dos puertos:


El

Puerto A con 5 lneas, pines RA0


a RA4.
El Puerto B con 8 lneas, pines RB0
a RB7.

Puertos de
Entrada/Salida

Las lneas son capaces de entregar


niveles TTL cunado la tensin de
alimentacin aplicada en VDD es de 5V.
La mxima capacidad de corriente de
cada una de ellas es:

25mA, cuando el pin est a nivel bajo, es


decir, cuando consume corriente (modo
sink). Sin embargo, la suma de corrientes
en el puerto A no puede superar de 80mA
y en el puerto B de 150 mA.
20mA, cuando el pin est a nivel alto, es
decir, cuando proporciona corriente (modo
source). Sin embargo, la suma de
corrientes en el puerto A no puede superar
de 50mA y en el puerto B de 100 mA.

Arquitectura interna

Las altas prestaciones de los


microcontroladores PIC derivan de
las caractersticas de su
arquitectura. Estn basados en
una arquitectura tipo Harvard que
posee buses y espacios de
memoria por separado para el
programa y los datos, lo que hace
que sean ms rpidos que los
microcontroladores basados en la
arquitectura tradicional de Von
Neuman.

Arquitectura interna

Otra caracterstica es su juego de


instrucciones reducido (35
instrucciones), donde la mayora se
ejecutan en un solo ciclo de reloj
excepto las instrucciones de salto que
necesitan dos.
Posee una ALU (Unidad Aritmtico
Lgica) de 8 bits capaz de realizar
operaciones de desplazamientos,
lgicas, sumas y restas. Posee un
Registro de Trabajo (W) no direccionable
usado en operaciones con la ALU.

Arquitectura interna

Arquitectura interna
Dependiendo de la instruccin
ejecutada, la ALU puede afectar
a los bits de Acarreo, Acarreo
Digital (DC) y Cero (Z) del
Registro de Estado (STATUS).
La pila es de 8 niveles. No existe
ninguna bandera que indique
que est llena, por lo que ser el
programador el que deber
controlar que no se produzca su
desbordamiento.

Arquitectura interna

Este microcontrolador posee


caractersticas especiales para
reducir componentes externos con
lo que se reducen los costos y se
disminuyen los consumos. Posee 4
diferentes modos de oscilador,
desde el simple circuito oscilador
RC con lo que se disminuyen los
costos hasta la utilizacin de un
oscilador a cristal.

Arquitectura interna

En el modo SLEEP el consumo se


reduce significativamente y puede
despertarse al microcontrolador
utilizando tanto interrupciones
internas como externas y seal de
reset. Adems posee la funcin
Watchdog Timer (Perro Guardin)
que protege al micro de cuelgues
debido a fallos software que
produzcan bucles infinitos.

Organizacin de la
memoria

Hay tres bloques de memoria los


cuales son: memoria FLASH de
programa, memoria RAM de
datos y memoria EEPROM
tambin para datos.

Memoria de Programa

Memoria de Programa

La memoria de programa est organizada


con palabras de 14 bits con un total de 1 K,
del tipo Flash, que durante el funcionamiento
es de solo lectura. Slo se ejecutar el cdigo
contenido en esta memoria, pudiendo
almacenar en ella una cantidad limitada de
datos como parte de la instruccin RETLW. En
una sola palabra se agrupa el cdigo de la
instruccin y el operando o su direccin.
El tipo de memoria utilizada en este
microcontrolador, podr ser grabada o
borrada elctricamente a nuestro antojo
desde el programador.

La memoria tipo Flash tiene la caracterstica de


poderse borrar en bloques completos y no podrn
borrarse posiciones concretas o especficas. Este
tipo de memoria no es voltil, es decir, no pierde
los datos si se interrumpe la energa.

Memoria de Programa

La memoria del programa comienza en la


posicin 0000h y termina en la posicin 03FFh.
En la figura tambin se muestra el PC
(Contador de Programa o Program Counter).
Este registro apunta a la direccin de memoria
de la instruccin en curso y permite que el
programa avance cuando se incrementa.
Tambin se muestra la pila o stack, de 8
niveles (Nivel Pila 1 a Nivel Pila 8). Se utiliza
cuando ejecutamos un subproceso o subrutina,
es decir, un conjunto de instrucciones que
hemos aislado de las dems para simplificar el
programa. Podemos hacer hasta 8 llamadas a
subrutinas una dentro de otra. A esto se le
llaman subrutinas anidadas.

Memoria de Programa

El vector de reset se encuentra en la


posicin 0000h y el de interrupcin en
la 0004h.
Debido a que el PIC16F84A tiene un
contador de programa de 13 bit
puede direccionar un espacio de
memoria de 8K x 14, sin embargo slo
el primer 1K x 14 (0000h-03FFh) est
implementado fsicamente.

Tener acceso a una posicin por encima


de la direccin fsicamente implementada
producir un solapamiento.
Por ejemplo, para las localizaciones 20h,
420h , 820h, C20h, 1020h, 1420h, 1820h,
y 1C20h, la direccin real ser la misma.

Memoria de Programa

Existen varias versiones de memoria de


programa para los PIC16f84A:
Versin Flash. Se trata de una memoria no voltil,
de bajo consumo, que se puede escribir y borrar. A
diferencia de las memoria de tipo ROM, la memoria
FLASH es programable en el circuito. Es ms rpida
y de mayor densidad que la EEPROM. Esta versin
es idnea para la enseanza y la Ingeniera de
diseo.
Versin OTP . ("One Time Programmable")
"Programable una sola vez". Slo se puede grabar
una vez por el usuario sin la posibilidad de borrar lo
que se graba. Resulta mucho ms econmica en la
implementacin de prototipos y pequeas series.
Versin QTP. Es el propio fabricante el que se
encarga de grabar el cdigo en todos los chips que
configuran pedidos medianos y grandes.
Versin SQTP. El fabricante solo graba unas pocas
posiciones de cdigo para labores de identificacin,
numero de serie, palabra clave, checksum, etc.

Memoria de Programa

Las memorias FLASH han sustituido a las


EEPROM y son muy tiles al permitir que
los microcontroladores que las
incorporan puedan ser reprogramados
"en circuito", es decir, sin tener que
sacar el circuito integrado de la tarjeta.

Por ejemplo, un dispositivo con este tipo de


memoria incorporado al control del motor de
un automvil permite que pueda modificarse
el programa durante la rutina de
mantenimiento peridico, compensando los
desgastes y otros factores tales como la
compresin, la instalacin de nuevas piezas,
etc.
La reprogramacin del microcontrolador
puede convertirse en una labor rutinaria
dentro de la puesta a punto.

Memoria de Programa:
El Contador de Programa
El Contador de Programa (PC) es un
(PC)
registro que contiene la direccin
de la siguiente instruccin ejecutar.
Se incrementa de manera
automtica garantizando la
ejecucin lineal del programa (una
instruccin despus de otra).
Cuando el microcontrolador se
conecta a la alimentacin o cuando
ocurre un reset, el contador se
pone a 0.

Memoria de Datos

Memoria de Datos

La memoria de datos est particionada


en mltiples bancos los cuales contienen
Registros de Propsito General y
Registros de Funciones Especiales.
Los bits RP1 y RP0 (pines 6 y 5 del
registro de STATUS) son usados para la
seleccin del banco:
RP1:RP0

Banco

00

01

10

11

Memoria de Datos

Sin embargo, slo existe


implementacin de dos bancos,
banco 0 y banco 1.
Slo

ser requerido un bit del registro


STATUS: el bit RP0. El bit RP1 siempre
se mantendr en cero.

Cada banco se divide a su vez en


dos reas:
SFR

(Registros de Funciones
Especiales)
GPR (Registros de Propsito General)

Memoria de Datos

Los Registros de Funciones Especiales


(Special Function Registers, SFR) controlan
el funcionamiento del
microcontrolador.

Estos se emplean para el control del


funcionamiento de la CPU y de los
perifricos.

Los Registros de Propsito General


(General Purpose Registers, GPR), son los
registros de datos del usuario y puede
accederse a ellos tanto directa como
indirectamente.

Memoria de Datos

Banco 0:
Este banco est formado por 80 bytes,
desde la posicin 00 hasta la 4Fh (de la 0 a
la 79).

El rea SFR consta de 12 registros que sern


utilizados por funciones especiales del
microcontrolador. Comienza en la direccin 00h
y termina en la 0Bh, es decir, de la 0 a la 11.
El rea GPR consta de 68 registros de memoria
RAM que sern utilizados para almacenar datos
temporales requeridos por los programas.
Comienza en la direccin 0Ch y termina en la
posicin 4Fh (de la 12 a la 79). Esta parte es la
memoria de registros de propsito general.

Memoria de Datos
Banco 1:
Este banco tiene las mismas
dimensiones que el anterior,
pero su uso es menor, ya que no
tiene banco para registros de
propsito general. Solamente
tiene una seccin de registros
especiales que van de la posicin
80h a la 8Bh (de la 128 a la 139).

Memoria de Datos

Para seleccionar el banco a


acceder hay que configurar el bit
5 (RP0) del registro de STATUS.
Con

RP0 = 0 se accede al Banco 0 y


con RP0 = 1 se accede al Banco 1.
El Banco 0 es seleccionado
automticamente despus de un
reset.

Las zonas de memoria 50h-7Fh y


D0h-FFh no son empleadas y
devuelven 0 en caso de lectura.

Memoria de Datos

La memoria RAM as como algunos registros


especiales son los mismos en los dos bancos
del mapa de memoria del PIC.
Para direccionar la memoria de datos se
emplean dos modos de direccionamiento, el
directo y el indirecto.

En el direccionamiento directo, los 7 bits de menos


peso del cdigo de operacin (op code) de la
instruccin proporcionan la direccin en la posicin
de la pgina, mientras que los bits RP1 y RP0 de
STATUS seleccionan la pgina o banco.
En el direccionamiento indirecto el operando de la
instruccin hace referencia al registro IDNF, que
ocupa la posicin 00h del rea de datos. Se accede
a la posicin que apunta el registro FSR 04h del
banco 0. Los 7 bits de menos peso de FSR
seleccionan la posicin y su bit de ms peso, junto
con el bit IRP del registro de estado, seleccionan la
pgina.

Memoria de Datos

Registros del SFR:


Registros relacionados con los
puertos
Los registros relacionados con el

puerto A son:
PORTA, en la direccin 05h (banco 0).

La lectura de este registro proporciona el


estado de los 5 pines del puerto A.
La escritura en este registro permite
actualizar el estado de los pines que
estn configurados como salidas.

Registros del SFR:


Registros relacionados con los
puertos
Los registros relacionados con el

puerto A son:
TRISA, en la direccin 85h (banco 1).
Registro de configuracin de los pines
del puerto A.

Un 0 en el bit correspondiente al pin lo


configura como salida.
Un 1 en el bit correspondiente al pin lo
configura como entrada.

Registros del SFR:


Registros relacionados con los
puertos
Los registros relacionados con el puerto

B son:
PORTB, en la direccin 06h del banco 0.

La lectura de este registro proporciona el


estado de los 8 pines del puerto B.
La escritura en este registro permite
actualizar el estado de los pines que estn
configurados como salidas.

Registros del SFR:


Registros relacionados con los
puertos
Los registros relacionados con el

puerto B son:
TRISB, en la direccin 86h (banco 1).
Registro de configuracin de los pines
del puerto B.

Un 0 en el bit correspondiente al pin lo


configura como salida.
Un 1 en el bit correspondiente al pin lo
configura como entrada.

Registros del SFR:


Registro PCL y Contador de
Programa
El contador de programa (PC) est

constituido por dos registros:


PCL (Program Counter Low byte). Su
contenido corresponde con los 8 bits
menos significativos del contador de
programa.
PCH (Program Counter High byte). Su
contenido corresponde con los 5 bits
menos significativos del contador de
programa.

Registros del SFR:


Registro PCL y Contador de
Programa
PCL (Program Counter Low byte).

Ocupa la direccin de memoria 02h


del banco 0 (tambin se encuentra
duplicado en la direccin 82h del
banco 1).
Este registro puede ser ledo o escrito.
Durante la ejecucin de un programa
se incrementa con cada instruccin, a
menos que se trate de una instruccin
de salto.

Registros del SFR:


Registro PCL y Contador de
Programa
PCH (Program Counter High byte).

No ocupa direccin alguna, por lo que


no puede ser ledo o escrito.
Los tres bits de mayor peso no son
tomados en cuenta al momento de
determinar una direccin de la
memoria de programa.

Registro de trabajo W
El registro de trabajo W (Work) es
el registro principal del
microcontrolador y participa en
la mayora de las instrucciones.
Trabaja estrechamente con el
ALU

Registro de Estatus

Registro OPTION

Registro INTCON

Bits de Configuracin

Estos bits son mapeados en la


memoria de programa en la direccin
2007h

Repertorio de
instrucciones

Cada instruccin del PIC16F84A es


una palabra de 14 bits de longitud.
Est conformada por un cdigo de
operacin (OPCODE), que especifica
el tipo de instruccin, y uno o ms
operandos.
Este conjunto de instrucciones es
agrupado en tres categoras:

Operaciones orientadas al Byte


Operaciones orientadas al bit
Operaciones con literales (constantes) y
de control.

Repertorio de
instrucciones

Repertorio de
instrucciones

Repertorio de
instrucciones

Fin
Ing. Luis Raymi Romn

You might also like