Vous êtes sur la page 1sur 33

UNIVERSIDAD NACIONAL

DE INGENIERIA

El PIC
16f84
AUTORE
S:

KEVIN NELSON QUIONEZ


MERCADO FRANCISCO
TELEMACO LOPEZ

25/11/201
0

INGENIERIA
ELECTRONICA

3T1-

EO

Este Paper esta basado en el PIC 16F84. Fue elaborado para material de la clase de
electrnica digital para uso didctico e instructivo tanto del docente como del
estudiante.

Tabla de
contenidos
PROLOGO ....................................................................................................................
.................................3
ABSTRACT....................................................................................................................
.................................4
INTRODUCCION ............................................................................................................
................................5
QU ES UN MICROCONTROLADOR?
...........................................................................................................5
UN POCO DE HISTORIA
.................................................................................................................................6
DIFERENCIA ENTRE UN MICROCONTROLADOR Y UN MICROPROCESADOR
.................................................7
El PIC 16F84
.....................................................................................................................................
.............7
Capitulo 1 ESPECIFICACIONES DEL DISPOSITIVO
..........................................................................................8
Descripcin de pines
..................................................................................................................................1
1
Arquitectura del PIC
16F84.........................................................................................................................1
2
Memoria de Programa
...............................................................................................................................13
Memoria de
Datos............................................................................................................................
..........15
Capitulo 2 PUERTOS DE ENTRADA Y
SALIDA...............................................................................................18
Confguracin de Puertos de entrada y salida
............................................................................................19
Limite de corriente para los puertos
..........................................................................................................20
Capitulo 3 TEMPORIZADORES DEL
PIC16F84..............................................................................................22
TIMER0 ........................................................................................................................
...............................22
El Prescaler
.....................................................................................................................................

............23
Capitulo 4 OTROS CIRCUITOS DEL MICROCONTROLADOR
.........................................................................27
Osciladores externos
..................................................................................................................................2
7
PIN
MCLR............................................................................................................................
........................28
Conclusin ...................................................................................................................
...............................29
Bibliografa ..................................................................................................................
...............................29

PROLOG
O
El microcontrolador es uno de los logros ms sobresalientes del siglo XX. Hoy existen casi
15,000 millones de microchips de alguna clase en uso. Para la mitad del siglo prximo, es
posible que

el

microcontrolador tpico

tenga

mayor poder

de

cmputo que

las

supercomputadoras ms veloces de hoy.


Nuestros antepasados no podan ni imaginarse el cambio que se iba a producir en sus
vidas este pequeo chip de silicio. Actualmente los podemos encontrar en cualquier sitio:
microondas, frigorficos, coches, aviones, mandos a distancia, radios, televisores. Hoy se
puede comprar tarjetas de felicitacin que contienen procesadores con mayor poder de
cmputo que las computadoras ms grandes del mundo en 1971.
Muchos futuristas predicen que en siete generaciones contadas a partir de ahora, estos chips
incorporarn reconocimiento del habla a procesadores de textos y sistemas de entrada de
pedidos. Producirn grficos en 3D del tamao de muros para televisin, teleconferencias e
incluso pelculas personalizadas. Dirigirn nuestros vehculos para optimizar la seguridad
y crearn mundos virtuales por los que nos desplazaremos. Darn instruccin a nuestros
hijos, supervisarn nuestra salud, reemplazarn partes perdidas del cuerpo y, a travs de una
retcula de miles de millones de sensores, nos conectarn con el mundo en formas que slo
podemos imaginar vagamente.
En definitiva, el microcontrolador puede ser considerado como uno de los inventos ms
importantes de este siglo, y quien sabe si tambin del prximo.
Algunos fabricantes de microcontroladores superan el milln de unidades de un modelo
determinado producidas en una semana. Este dato puede dar una idea de la masiva utilizaci
n de estos componentes. Los microcontroladores estn siendo empleados en multitud
de sistemas

presentes

en

nuestra vida

diaria,

como

pueden ser juguetes, horno

microondas, frigorficos, televisores, computadoras, impresoras, mdems, el sistema de


arranque de nuestro vehculo, etc. Y otras aplicaciones con las que seguramente no
estaremos tan familiarizados como instrumentacin

electrnica, control de sistemas en

una nave espacial, etc. Una aplicacin tpica podra emplear varios microcontroladores
para controlar pequeas partes del sistema. Estos pequeos controladores podran
comunicarse entre ellos y con un procesador

central, probablemente ms potente, para compartir la informacin y coordinar sus acciones,


como, de hecho, ocurre ya habitualmente en cualquier PC.

ABSTRA
CT
A micro controller is, basically, a complete computer, which has a RAM memory, processor
unit, all that you can imagine that there is inside of a computer. This huge electronic was
designed for to realize almost any task after of the programming process.
Basically, the micro controller is conformed by millions and millions of transistors that
together make any task, if the conditions permit it, after that the user make the programming
process for to eject the desire task. At the same way, when you programs your cellphone for
that ring your favorite song or to programs the alarm for an specific time, is also possible that
you program the micro controller, in this example your cellphone is the micro controller,
composed by millions of resistors and transistors, and you are the programer that decide that
the micro controller have that make and when have to make.
The micro controllers

go beyond

where last we

imagine, in television, IPODS,

cellphones, videogames console and a lot of applications that be part of our live.

INTRODUCCI
ON
Como observamos anteriormente el insuperable poder de los microcontroladores ha tomado
un rumbo revolucionario en el mundo tecnolgico y cada da lo vemos mas cerca de nuestra
vida de lo que nos imaginamos.
El siguiente documento est basado en el PIC 16F84 del fabricante Microchip Tecnology
Inc., en el cual se abordara todos los temas relacionado a este microcontrolador. Este
paper fue elaborado para material de la clase de electrnica digital para uso didctico e
instructivo tanto del docente como del estudiante.
Mas adelante, hablaremos de la historia del microcontrolador y del surgimiento del
PIC16F84, adems,

se estudiaran las caractersticas exclusivas

del PIC16F84 y

PIC16F84A, y el sin numero de aplicaciones que este micro controlador puede tener.

QU
ES
MICROCONTROLADOR?

UN

Un microcontrolador, es un circuito integrado programable que contiene los elementos


necesarios para controlar un sistema.
PIC significa Peripheral Interface Controler es decir un controlador de perifricos. Cuando
hablamos de un circuito integrado programable que controla perifricos, estamos hablando
de un sistema que contiene entre otras cosas una unidad arimtico-lgica, unas memorias
de datos y programas, unos puertos de entrada y salida, es decir estamos hablando de
un pequeo

ordenador diseado para realizar unas funciones especficas.

Podemos

encontrar microcontroladores en lavadoras, teclados, telfonos mviles, ratones etc. Hay


multitud de microcontroladores con
trabajo,

ms

memoria, entradas y salidas, frecuencia de

coste, subsistemas integrados y un largo etc. dependiendo de cada tipo de

microcontrolador.

UN POCO DE
HISTORIA
En el ao 1969, un equipo de ingenieros japoneses de la compaa BUSYCOM llegaron a
Estados Unidos con una propuesta de que algunos circuitos integrados para calculadoras
fueran diseados de acuerdo a sus proyectos. Esta propuesta fue enviada a la compaa
INTEL y Marcian Hoff estaba a cargo del proyecto. Desde muchos aos con la experiencia
de trabajas con computadores PDP8, vino a el la idea de sugerir una solucin
fundamentalmente diferente basada en el diseo

propuesto por los

japoneses. La

solucin presuma que la operacin del circuito integrado iba a ser determinada por un
programa almacenado en el circuito mismo. Esto significaba que la configuracin seria ms
simple, pero esto requera de mucho ms memoria que los proyectos propuestos por los
ingenieros japoneses. Luego de un tiempo,

tambin los ingenieros japoneses trataron de

encontrar una solucin ms fcil. La idea de Marcian Hoff gano y as naci el primer
microprocesador. Luego la empresa Intel tuvo xito en desarrollar el microcontrolador de
acuerdo al concepto original. En 1971 Intel

obtuvo el derecho de

vender estos circuitos integrados. Antes que Intel comprara la licencia la compaa BUSICOM
no tenia idea alguna del tesoro que esta empresa tenia.
microprocesador

llamado

microprocesador de

4-bits

el

4004

con

una

apareci
velocidad

en
de

el

Durante ese ao, un


mercado.

6000

Este

operaciones

fue
por

el

primer

segundo.

Despus Intel y Texas Instruments se mantuvieron trabajando en un microprocesador de 8bits llamado 8008 que en Abril de 1972 saldra al mercado. Este microprocesador tena
capacidad de 16K de memoria, tenia 45 instrucciones y la velocidad de 300,000 operaciones
por segundo.
Luego otras compaas Americanas como Motorola, Zilog inc. entre otras siguieron la
revolucin de los microprocesadores. En 1976 Zilog anuncio el Z80.

El Z80 fue el

microprocesador ms poderoso en ese tiempo. Este tena capacidad de memoria de 64Kb,


tena 176 instrucciones, un gran nmero de registros, mayor capacidad de operacin etc. Estos
avances fueron demasiado significativos para abrir

el

paso a nuevas revoluciones

tecnolgicas de microprocesadores y microcontroladores a como lo podemos observar en la


actualidad.

DIFERENCIA ENTRE
MICROPROCESADOR

UN

MICROCONTROLADOR

UN

Un microcontrolador difiere de un microprocesador en muchas maneras. La primera y la


ms importante

es su funcionalidad. De acuerdo a como el microprocesador sea

usado, otros componente tales como memorias o transmisin de datos deben ser aadido.
Tambin los microprocesadores se consideran ser poderosas maquinas computadoras, su
punto dbil esta en que no posee comunicacin directa con perifricos. En otras palabras un
microprocesador solamente es el corazn del computador.

Por otra mano, el microcontrolador es diseado para ser todo en uno. No se necesita
aadir otro componente externo ya que los perifricos pueden ser directamente ensamblados
a el. En cualquier otro caso este ahorra tiempo y espacio necesario para el diseo de un
aparato.

El
PIC
16F84
El PIC 16F84 es un microcontrolador con memoria de programa tipo FLASH es decir nunca
pierde su programacin, lo que representa gran facilidad en el desarrollo de prototipos y en
su aprendizaje ya que no se requiere borrarlo con luz ultravioleta sino que permite
reprogramarlo nuevamente sin ser borrado con anterioridad.

Capitulo 1 ESPECIFICACIONES
DISPOSITIVO

DEL

El PIC 16F84 aunque no es uno de los microcontroladores mas recientes de Microchip inc. si
es una herramienta poderosa para la introduccin al aprendizaje en el mundo de
los microcontroladores. Algunas de las principales caractersticas [1] se mencionan a
continuacin:

Repertorio de 35 Instrucciones.

Todas las instrucciones se ejecutan en un solo ciclo excepto las de salto que
necesitan dos.

Versiones para bajo consumo (16LF84A), de 4 MHz (PIC16F84A-04) y 20 MHz


(PIC16F84A-20). Un ciclo mquina del PIC son 4 ciclos de reloj, por lo cual si
tenemos un PIC con un cristal de 4 MHz, se ejecutarn 1 milln de instrucciones por
segundo.

Frecuencia de trabajo mxima de 10MHZ para PIC16F84 y de 20MHZ para PIC16F84A.

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.

15 registros de funciones especiales.

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 16F84 solo dispone de 1KB de memoria implementada).

Pila con 8 niveles de profundidad.

Modos de direccionamiento directo, indirecto y relativo.

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.

4 fuentes de interrupciones:
1.

A travs del pin RB0/INT.

2.

Desbordamiento del temporizador TMR0.

3.

Interrupcin por cambio de estado de los pines 4:7 del Puerto B.

4.

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.

13 pines de E/S con control individual de direccin.

PUERTO A de 5 bits <RA0:RA4>.

PUERTO B 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).

Proteccin de cdigo.

Modo de bajo consumo SLEEP.

Puede operar bajo 4 modos diferentes de oscilador.

Programacin en serie a travs de dos pines.

Tecnologa de baja potencia y alta velocidad CMOS Flash/EEPROM.

Caractersticas elctricas mximas (no deben ser superadas y de mantenerse por un


tiempo en algn mximo puede daarse al PIC)
1.

Temperatura ambiente mxima para funcionamiento de -55C a +125C.

2.

Tensin mxima de VDD respecto a VSS de -0,3 a +7,5V.

3.

Tensin de cualquier patilla con respecto a VSS (excepto VDD, MCLR, y


RA4) de -0,3V a (VDD + 0.3V).

4.

Tensin en MCLR con respecto a VSS -0,3 a +14V.

5.

Tensin en RA4 con respecto a VSS -0,3 a +8,5V.

6.

Disipacin de potencia total de 800 mW.

7.

Mxima corriente de salida a VSS 150 mA.

8.

Mxima corriente de salida de VDD 100 mA.

9.

Mxima corriente del puerto "A" como fuente, 50 mA.

10.

Mxima corriente del puerto "A" como sumidero, 80 mA.

11.

Mxima corriente del puerto "B" como fuente, 100 mA.

12.

Mxima corriente del puerto "B" como sumidero, 150 mA.

13.

Mxima corriente que puede suministrar una sola salida como fuente o
sumidero, 25 mA.

Rango de alimentacin:
1.

16LF84A: De 2 a 5,5 V en configuracin de oscilador XT, RC y LP.

2.

16F84A: 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:
1.

16LF84A:
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).

2.

16F84A:
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).

3.

16F84A-20:
De 10 a 20 mA en configuracin de oscilador HS (FOSC=20 MHz,
VDD=5,5V).

Descripcin de pines
Nombre

N Tipo Descripcin

OSC1/CLKIN

16 I

Entrada del oscilador a cristal/Entrada de la fuente de reloj externa

OSC2/CLKOUT 15 O

Salida del oscilador a cristal. En el modo RC, es una salida con una
frecuencia de OSC1

MCLR

Reset/Entrada del voltaje de programacin.

RA0

17 I/O

Puerto A bidireccional, bit 0

RA1

18 I/O

Puerto A bidireccional, bit 1

RA2

I/O

Puerto A bidireccional, bit 2

RA3

I/O

Puerto A bidireccional, bit 3

RA4/T0CKI

I/O

Tambin se utiliza para la entra de reloj para el TMR0

RB0/INT

I/O

Puerto B bidireccional, bit 0


Puede seleccionarse para entrada de interrupcin externa

RB1

I/O

Puerto B bidireccional, bit 1

RB2

I/O

Puerto B bidireccional, bit 2

RB3

I/O

Puerto B bidireccional, bit 3

RB4

10 I/O

Puerto B bidireccional, bit 4


Interrupcin por cambio de estado

RB5

11 I/O

Puerto B bidireccional, bit 5


Interrupcin por cambio de estado

RB6

12 I/O

Puerto B bidireccional, bit 6


Interrupcin por cambio de estado

RB7

13 I/O

Puerto B bidireccional, bit 7


Interrupcin por cambio de estado

Vss

Tierra de referencia

Vdd

14 P

I/P

Alimentacin

Arquitectura del PIC


16F84
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.
Otra caracterstica es su juego de instrucciones reducido (35 instrucciones) RISC, 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 que usa en operaciones con la ALU.

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.
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 Guardian) que protege al micro de
cuelgues debido a fallos software que produzcan bucles infinitos.

Memoria
Programa

de

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

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.
La memoria para almacenar el programa nos resultar perfecta para realizar pruebas y
experimentos, adems de para la programacin "on-board" o "in-circuit", esto es, nos permite
la programacin del dispositivo o actualizacin del programa sin necesidad de retirarlo del
circuito.
La memoria del programa comienza en la posicin 0000h y termina en la posicin 03FFh.
Esto es 1Kbyte, es decir, 1024 bytes (210).
En la figura tambin se muestra el PC (Contador de Programa o Program Counter). Que
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. En este caso el
contador de programa (PC) dejar de
incrementarse y apuntar a la posicin de
memoria de programa donde empieza la
subrutina; en el primer nivel de la pila se
almacenar esta llamada, hasta que se
acaben de ejecutar las instrucciones que
contiene, momento en el cual se seguir
con las instrucciones desde donde haba
sido llamada. Por eso es necesario saber
donde

se

qued

el

programa

almacenndose la direccin en la pila.


Podemos hacer hasta 8 llamadas a subrutinas una dentro de otra, como si de muecas
rusas se tratase. A esto se le llaman subrutinas anidadas.
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 localizacin 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, as 20h es 32d y 420h es 1056d, 1056d
menos
1024d es igual a 32d, es decir, se direcciona realmente la localizacin 20h, en binario 20h
es
100000b y 420h es 10000100000b, 1K se direcciona con 10 bits (210 = 1024) de manera q
ue de 10000100000b si slo se tienen en cuenta 10 bits queda 0000100000b que es 20h. Con
esto debe quedar claro que despus de 3FF, al incrementarse el PC y pasar a 400, se
direccionar de nuevo la posicin 0h.

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 memorias 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.

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. As, 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

nuevas piezas, etc. La

compresin, la

instalacin

de

reprogramacin

del microcontrolador

puede convertirse en una labor rutinaria dentro de la puesta a punto.

Memoria
Datos

de

Est organizada en dos pginas o bancos de registro, banco 0 y banco 1. Para cambiar de
pgina se utiliza un bit del registro STATUS (RP0).
Cada banco se divide a su vez en dos
reas:

RFS (Registros de Funciones Especiales)

RGP (Registros de Propsito General)

La primera es la de RFS (Registros de


Funciones Especiales)

que

controlan

el

funcionamiento del dispositivo. Estos

se

emplean para el control del funcionamiento de


la CPU y de los perifricos.
El segundo rea (68 bytes SRAM) es la de
RGP (Registros de Propsito General), y
puede accederse a ellos tanto directa como
indirectamente haciendo uso del registro FSR.
Banco 0:
Este banco est formado por 80 bytes, desde
la posicin 00 hasta la 4Fh (de la 0 a la 79).
El rea RFS consta de 12 registros que sern
utilizados

por

funciones

microcontrolador.

especiales

Comienza

del

en

la

direccin
00h y termina en la 0Bh, es decir, de la 0 a
la
11.
El rea RGP 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.
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)
La memoria RAM as como algunos registros especiales son los mismos en los dos bancos
del mapa de memoria del PIC. La anchura de los bytes en la memoria es de 8 bis.
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 OP 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.

Capitulo 2 PUERTOS DE ENTRADA Y


SALIDA
Una de las caractersticas ms importantes del microcontrolador es su nmero de pines de
entradas y salidas usados para la conexin de perifricos. En este caso hay un total de
trece pines disponibles de entrada o salida de propsito general.
Los pines del PIC16F84 estn divididos en dos grupos de registros, llamados PORTA y
PORTB: Ambos tienes muchas caractersticas en comn.
El Puerto A (PORTA) dispone de 5 lneas de la RA0 a la RA4, en la que hay que distinguir la
A4 o T0CKI (Timer 0 Clock Input) que est compartida con la entrada para el Timer 0
(TMR0) a travs de un trigger Schmitt y que cuando se configura como salida es de drenador
abierto, por lo que debe colocarse una resistencia de polarizacin.
El Puerto B (PORTB) dispone de 8 lneas de E/S que van desde la RB0 a la RB7 (la lnea RB0
o INT es compartida con la entrada de interrupcin externa). Adems, las lneas RB4 a RB7
pueden programarse como una interrupcin por cambio de estado de cualquiera de estas
lneas.
Cuando se produce una interrupcin por cambio de estado de cualquiera de las lneas RB4
a RB7, para lo cual las lneas deben estar adems programadas como entradas (ver
registro INTCON e Interrupciones) el valor de la patilla en modo entrada es comparado con
el valor almacenado en la bscula durante la ltima lectura del Puerto B. Los cambios en las
patillas se detectan realizando una operacin OR para la generacin de una interrupcin por
cambio de estado. Esta interrupcin puede despertar "wake up" al microcontrolador del
modo de reposo SLEEP. El usuario debe borrar la interrupcin en la Rutina de Servicio de
Interrupcin RSI de una de las siguientes maneras:

Borrando la bandera bit 3 de INTCON (RBIE).

Leyendo o escribiendo el PORTB y luego borrando el bit RBIF. Esto finaliza la condicin
"mismacht" y permite que se borre RBIF.

Una condicin "mismacht" puede producir que el bit RBIF siga a "1". Leyendo el puerto B
puede finalizar la condicin de "mismacht" y permitiendo que el bit RBIF sea puesto a "0".
Adems,

todas

las

lneas

del

Puerto

disponen

de

resistencias

internas

de

polarizacin programables "pull-up" de alto valor. Cada una de las 8 resistencias pueden ser
activadas o

deshabilitadas haciendo uso del bit RBPU del registro especial OPTION. Estas resistencias se
deshabilitan automticamente si una lnea es programada como salida as como durante el
proceso de Power On Reset.

Configuracin
de
entrada y salida

Puertos

de

Cualquier lnea puede funcionar como entrada o como salida. Sin embargo, si acta como
entrada la informacin que se introduce no se memoriza, por lo que la informacin debe
ser mantenida hasta que sea leda. Si la lnea acta como salida, el bit que procede del
bus de datos se guarda en la bscula, con lo que la informacin que ofrece esta patita
permanece invariable hasta que se reescriba este bit.
Los bits de cada puerto se configuran mediante los bits correspondientes de dos registros
especiales de control:

Registro de Datos denominados PORTA PORTB: Se pueden leer o escribir segn que
el puerto correspondiente se utilice como entrada o como salida.

Registro de Control denominado TRISA TRISB: En los registros de Control se


programa el sentido de funcionamiento de cada una de las lneas de E/S. Colocando
un "0" en

el correspondiente bit del registro TRISA TRISB, la lnea queda

programada como salida mientras que colocando un "1" la lnea queda programada
como entrada. Por ejemplo, si ponemos un 0 en el bit 3 del registro TRISA la patilla
RA3 ser una salida y si ponemos un 1 en el bit 4 del registro TRISB entonces la
patilla RB4 ser una entrada.
Los Puertos A y B (PORTA y PORTB) se corresponden con las posiciones 5 y 6 del rea
de datos.
Cuando se produce un reset, todos los bits de los registros TRIS pasan a tener el valor 1 y
todas las lneas de E/S actan como entrada por evidentes motivos de seguridad para
evitar daos irreparables. Todas las patillas de E/S que no se empleen deben ser llevadas
a +5v, regla de las entradas CMOS, preferiblemente a travs de una resistencia para evitar
que si por error se configurasen como salidas puedan darse problemas si presentan un estado
bajo.

La

siguiente

figura

muestra

la

configuracin

de

pines

para

el

puerto

cdigo correspondiente de asignacin es un 1 para entrada y un 0 para una salida.

B,

el

TRISB=0b00110101; su conversin en hexadecimal, decimal u


octal.
Luego de configurar los pines podemos programar el PIC para que realice una tarea especfica
entregando un 1 o un 0 a las salidas dependiendo del dato que le llegue a la entrada.
PORTB=0b11010100;

Limite de corriente para los


puertos
Los puertos del microcontrolador PIC16F84 son el medio de comunicacin con el mundo
exterior, en ellos podremos conectar los perifricos o circuitos necesarios como por ejemplo
los mdulos LCD, teclados matriciales, motores elctricos, etc.; pero estas conexiones
no se podrn realizar arbitrariamente. Existen unas reglas bsicas que debern cumplirse
para que el microcontrolador no sufra daos o se destruya. Para ello es necesario conocer
los lmites de corriente que puede manejar el microcontrolador.
Como anteriormente hemos indicado los
programados como entradas salidas
programados como salida y presenten
porque suministran corriente y cuando
"sumidero" por que reciben corriente.

puertos A y B del microcontrolador podrn ser


indiferentemente. En el caso de que sean
un nivel lgico alto actuaran como "fuente"
presenten un nivel lgico bajo actuarn como

Disipacin de potencia total de 800 mW.


Mxima corriente de salida a VSS 150 mA.

Mxima corriente de salida de VDD 100 mA.


Si utilizamos todas las lneas del puerto "A" como fuente, no deber exceder de 50 mA
toda la corriente que suministre este puerto.
Si utilizamos todas las lneas del puerto "A" como sumidero, no deber exceder de 80
mA toda la corriente que suministre este puerto.
Si utilizamos todas las lneas del puerto "B" como fuente, no deber exceder de 100 mA
toda la corriente que suministre este puerto.
Si utilizamos todas las lneas del puerto "B" como sumidero, no deber exceder de
150 mA toda la corriente que suministre este puerto.
La mxima corriente que puede suministrar una sola salida como fuente o sumidero
es de 25 mA.

De todas maneras hay que tener en cuenta no superar la disipacin de potencia mxima,
que se calcula como sigue:
Pdis = VDD x (IDD - IOH) + {(VDD-VOH) x IOH} + (VOL x IOL)
VOH suele ser VDD-0,7 v y VOL 0,6 v.
El consumo de corriente (IDD) es principalmente funcin de la tensin de alimentacin y de
la frecuencia. Otros factores, como cambios en E/S, tipo de oscilador, temperatura y otros
tienen influencia en el consumo. La IDD para el PIC16F84A-4 est entre 1,8 a 4.5 mA en
configuracin de oscilador RC y XT (FOSC=4 MHz, VDD=5,5V), con las patillas como
entradas y unidas a positivo. En caso de que se necesiten utilizar perifricos que manejen
mayor cantidad de corriente de la especificada, habr que aplicar un circuito adaptador como
por ejemplo buffers o transistores.
En la siguiente figura vemos una configuracin tpica en la que se utilizan buffers de
corriente, que proporcionan en su salida el mismo nivel lgico que la entrada pero pueden
controlar corrientes
relativamente
elevadas. En este
caso se utiliza el
ULN2803,
un
circuito
integrado
que consiste en 8
buffers de potencia
capaces
de
suministrar en su
salida hasta 1 A,
mucho ms de lo
que es capaz de
soportar un PIC.

Capitulo 3 TEMPORIZADORES DEL


PIC16F84

TIMER
0
El temporizador/contador TMR0 es un registro de 8 bits, es decir, un particular tipo de
registro cuyo contenido es incrementado con una cadencia regular y programable
directamente por el hardware del PIC. Como es de 8 bits, el mximo de la cuenta est en 255.
El TMR0 tiene las siguientes caractersticas:

Temporizador/Contador de 8 bits.
Divisor de 8 bits programable por software.
Seleccin de reloj interno y externo.
Interrupcin por desbordamiento.
Seleccin del flanco del reloj externo.

Este registro puede usarse para contar eventos externos por medio de un pin de entrada
especial (modo contador) o para contar pulsos internos de reloj de frecuencia constante
(modo temporizador). Adems, en cualquiera de los dos modos, se puede insertar un
prescaler, es decir un divisor de frecuencia programable que puede dividir por 2, 4, 8, 16, 32,
64, 128 o 256. Este divisor puede ser utilizado alternativamente como prescaler o del TMR0 o
como postscaler del Watch Dog Timer, segn se lo programe.
En la prctica, a diferencia de los otros registros, el TMR0 no mantiene inalterado el valor
que tiene memorizado, sino que lo incrementa continuamente.
Si por ejemplo escribimos en l el valor 10, despus de un tiempo igual a cuatro ciclos
mquina, el contenido del registro comienza a ser incrementado a 11, 12, 13 y as
sucesivamente con una cadencia constante y totalmente independiente de la ejecucin del
resto del programa.
Una vez alcanzado el valor 255, el registro TMR0 es puesto a cero
automticamente comenzando entonces a contar desde cero y no desde el valor originalmente
cargado.
La frecuencia de conteo es directamente proporcional a la frecuencia de reloj aplicada al PIC
y puede ser modificada programando adecuadamente algunos bits de configuracin.
El modo temporizador se selecciona colocando a 0 el bit T0CS del registro OPTION. En
este modo, el Timer0 se incrementa con cada ciclo de instruccin (con el divisor desactivado).
El modo contador se selecciona colocando a 1 el bit T0CS del registro OPTION. En este
modo, el contador se incrementar con cada flanco de subida o de bajada del pin
RA4/T0CKI. El flanco se selecciona con el bit T0SE del registro OPTION.
Se generar una interrupcin cuando el registro TMR0 se desborda de FFh a 00h. Este
desbordamiento se indicar el bit T0IF del registro INTCON.

En la siguiente figura est representado el esquema de bloques internos del PIC


que determinan el funcionamiento del registro TMR0:

Fosc/4 y T0CKI representan las dos posibles fuentes de seal de reloj, para el contador TMR0.
Fosc/4 es una seal generada internamente por el PIC tomada del circuito de reloj y que es
igual a la frecuencia del oscilador dividida por
cuatro.
T0CKI es una seal generada por un posible circuito externo y aplicada al pin
T0CKI
correspondiente
al
pin
4
del
PIC16F84.
Los bloques T0CS y PSA son dos selectores de seal (multiplexores) en cuya salida se
presenta una de las dos seales de entrada en funcin del valor de los bits T0CS y PSA
del registro OPTION.

El
Prescaler
El Prescaler consiste en un divisor programable de 8 bits a utilizar en el caso de que la
frecuencia de conteo enviada al contador TMR0 sea demasiado elevada para
nuestros propsitos. Se configura a travs de los bits PS0, PS1 y PS2 del registro OPTION.
La frecuencia Fosc/4 es una cuarta parte de la frecuencia de reloj. Utilizando un cristal de 4Mhz
tendremos una Fosc/4 igual a 1 MHz, con lo que la cadencia de conteo que se obtien e

provoca

en TMR0 1 milln de incrementos por segundo (1/1.000.000 seg). =1MHz), que para
muchas aplicaciones podra resultar demasiado elevada.
Con el uso del PRESCALER podemos dividir la frecuencia Fosc/4 configurando
oportunamente los bits PS0, PS1 y PS2 del registro OPTION segn la siguiente tabla:
PS2 PS1

PS0 DIVISOR

FRECUENCIA DE SALIDA PREESCALER (Hz)

500.000

250.000

125.000

16

62.500

32

31.250

64

15.625

128

7.812,5

256

3.906,25

Ejemplo prctico: Introducir un retardo igual a un segundo utilizando el registro


TMR0.
Debemos programar el bit T0CS a 0 para seleccionar como fuente de conteo el reloj del PIC,
el bit PSA tambin debe estar a 0 para asignar el PRESCALER al registro TMR0 en lugar de
al Watch Dog Timer y los bits de configuracin del PRESCALER a 100 para obtener
una frecuencia de divisin igual a 1:32. La frecuencia que obtendremos en TMR0 ser igual a:
Fosc = 1Mhz / 32 = 31.250 Hz
Memorizamos en TMR0 el valor 6 de modo que el registro TMR0 alcanza el cero despus
de
250 cuentas (256 - 6 = 250) obteniendo as una frecuencia de paso por cero del TMR0 igual
a:
31.250 / 250 = 125 Hz
El siguiente paso ser memorizar en un registro de 8 bits el valor 125 de tal modo que,
decrementando este registro en 1 por cada paso por cero de TMR0, se obtenga una frecuenc
ia de pasos por cero del registro igual a:
125/125 = 1Hz (1 segundo).
En resumen se trata de controlar si TMR0 ha alcanzado el valor cero, luego de reiniciarlo a 6 y
decrementar el valor contenido en un registro con valor 125. Cuando el registro alcance
tambin el valor cero, entonces habr trascurrido un segundo.

En los siguientes esquemas se muestra la funcin del bit del PSA.

La funcin del PSA cuando el bit esta en 0.

La funcin del PSA cuando el bit esta en 1

En adicin al lo mencionado anteriormente, esto tambin es de mucha utilidad saberlo:


Cuando el prescaler es asignado al temporizador/contador, cualquier registro del
TMR0 limpiara el prescaler.
Cuando el prescaler es asignado al temporizador watch-dog, una instruccin CLRWDT
limpiara ambos, al prescaler y al WDT.
Cuando el registro escrito en TMR0 sea usado como temporizador, no causara el
pulso continuo para empezar inmediatamente, solamente cuando se cumplan dos
instrucciones del retardo del ciclo. De acuerdo a esto, es necesario ajustar el valor
escrito en el registro del contador TMR0.
Cuando el microcontrolador esta en modo sleep, el oscilador esta apagado. El
overflow no puede ocurrir por que no hay pulsos para contar. Esto es el porque la
interrupcin overflow del TMR0 no puede despertar el procesador del modo sleep.
Cuando se usa un contador externo sin prescaler, la mnima longitud de un pulso o
una pausa entre dos pulsos debe ser 2 Tosc + 20 nS . Tosc es la seal peridica del
oscilador.
Cuando se usa un contador externo con prescaler, la mnima longitud de un pulso o
una pausa entre dos pulsos ser de 10nS.
El registro prescaler no esta disponible al usuario, lo cual significa que este no puede
ser directamente ledo o escrito.

Capitulo
4
OTROS
MICROCONTROLADOR

CIRCUITOS

DEL

Oscilador Externo: Es instalado con el microcontrolador a conectado al pin OSC1 y OSC2,


es llamado Externo porque se necesita de una circuitera externa para generar la seal de
reloj y la frecuencia de estabilizacin, los cuales pueden ser un oscilador de cristal, un
resonador cermico o un circuito RC. El modo oscilador es seleccionado byte a byte en la
programacin y es llamado configuracin de palabra.
Oscilador interno:
separados:

Consiste

de

dos

osciladores

externos

El HFINTOSC es un oscilador interno de altas frecuencias el cual opera a 8MHZ. El


microcontrolador puede usar una seal de reloj a esa frecuencia y luego dividirla en
el prescaler.
El LFINTOSC es un oscilador interno el cual opera a 31KHZ. Esta frecuencia es usada por
el watch-dog y el power-up timer.

Osciladores
externos
El modo LP, XT y HS soportan el uso del oscilador interno para
configurar la frecuencia de trabajo, Esta frecuencia es determinada
por el cristal o por el resonador cermico conectado al pin OSC1 y
OSC2. Dependiendo de las caractersticas de los componentes que

se usan
modos:

se selecciona uno de los siguientes

Modo LP (Low power) es usado para bajas frecuencias solamente. Este modo es diseado
para manejar frecuencias de 32.768Khz usualmente usado en los relojes de cuarzo. Es fcil
de reconocer por su forma cilndrica plana. Consumo de corriente menor que los otros modos.
Modo XT es usado para frecuencias intermedias arriba de 8MHZ. El consumo de corriente
es intermedio de los tres modos.
Modo HS (High Speed) es usado para altas frecuencias por encima de 8MHZ. El consumo
de corriente es el mayor de los tres modos.

PIN
MCLR
Un cero lgico en el pin MCLR causa un reinicio
inmediato. Se recomienda que sea conectado como
se muestra en la siguiente figura.
Cuando el reset vuelve a su normalidad el
microcontrolador se reinicia automticamente.

Conclusi
n
Esperamos que la finalidad de este paper haya sido cumplido en su totalidad y que
luego de leer este documento podamos estar claro del la poderosa
herramienta electrnica que tenemos al alcance de nuestras manos.
La vida cotidiana esta llena de necesidades de las que como futuros ingenieros
somos responsables de satisfacer con las herramientas que exponemos en este
paper que juega un papel fundamental en el mundo tecnolgico de automatizacin
y domtica para hacer una vida mas fcil y cmoda para bien de la humanidad.
Solamente nos resta poner manos a la obra y sumergirnos dentro de este
inmenso mundo de los microcontroladores y explorar las maravillas tecnolgicas
que son posibles gracias a los microcontroladores.

Bibliograf
a
Verle, Miln. PIC Microcontrollers
Serra, Enric. PIC 16F84A Escola Professional Salesians Joan XXIII.
Curso avanzado de micro controladores PIC