Sei sulla pagina 1di 12

Prlogo

En los ltimos aos en Latinoamrica se viene dando un fenmeno en el


campo del diseo de soluciones y aplicaciones en electrnica como nunca se
haba presentado antes. Lo que pareca solo materia para los gures
japoneses, norteamericanos o europeos ya no lo es tanto y nunca lo hubiera
sido si solo dependiera de nuestra capacidad como se demuestra con todos
los profesionales latinos que triunfan en el llamado primer mundo. La
diferencia

actual

radica

en

que

existen

muchas

ms

herramientas,

informacin y dispositivos para llevar a cabo nuestros proyectos. Entre estos


factores del desarrollo tecnolgico, los microcontroladores ocupan un lugar
fundamental

al

brindar

facilidades

que

nunca

antes

dispositivos

programables haban ofrecido. En este sentido, Microchip tuvo la visin de


desarrollar microcontroladores que no solo superaban en gran medida las
caractersticas de sus pares en el mercado sino que, adems, hizo que estos
sean fciles de operar y por ende al alcance no solo de ingenieros sino
tambin de estudiantes, tcnicos o cualquiera que posea conocimientos
medios en electrnica e informtica.
Al tener hoy una inmensa cantidad de informacin en este campo, lo nico
que necesitamos es comprenderla, encaminarla y utilizarla. Es este el
objetivo del presente curso: dar el empujn inicial para ingresar al
fascinante mundo del diseo electrnico con microcontroladores.

Ing. Daniel Perina

Curso Bsico de Microcontroladores PIC16F84A

Pgina 1

Curso Bsico de Microcontroladores PIC16F84A

Pgina 2

Captulo I
1.0

Introduccin

Qu es un Microcontrolador?
Un microcontrolador es un circuito integrado que posee muchas semejanzas con un microprocesador pero se
diferencia de este principalmente en su funcionalidad. Un microprocesador necesita perifricos externos, como
memoria, dispositivos de entrada/salida, buffers, etc. para interactuar con el exterior, por ello se puede decir con
mucho acierto que el microprocesador es el corazn del computador. En el caso del microcontrolador, este es
diseado con todos los perifricos incorporados, es decir que se comporta como un mini-computador, aunque con
menor capacidad de procesamiento, lo cual no impide que se constituya en la solucin ideal para mltiples
proyectos en los cuales el ahorro de espacio, componentes, y tiempo de diseo son fundamentales

Fig. 1.1 Esquema tpico de un microcontrolador con sus elementos bsicos y lneas de conexin interna

Curso Bsico de Microcontroladores PIC16F84A

Pgina 3

1.1

El Microcontrolador PIC16F84A

El PIC16F84A forma parte del grupo de la familia PIC16C(F)XXX de bajo costo, alto rendimiento, CMOS de 8 bit
entre otras cosas.
Todos los PICs emplean una avanzada arquitectura RISC (Reduced Instruction Set Computer). En el PIC16F84A se
ha reforzado una serie de caractersticas: tiene ocho niveles de pila y posee mltiples fuentes de interrupcin
internas y externas. Las instrucciones y los buses de datos separados permiten palabras de instruccin ancha de
14 bits para ejecutarse en un solo ciclo, salvo las instrucciones de salto que requieren dos.
La familia PIC16C(F)XXX tiene rasgos especiales para reducir componentes externos, reduciendo de este modo
costos, consumo de energa y reforzando la fiabilidad del sistema.

1.2

Opciones del oscilador:

Este microcontrolador puede utilizar distintas configuraciones en su oscilador externo:


El oscilador de RC proporciona una solucin de bajo costo.
El oscilador de LP(Low Power) minimiza el consumo de energa.
El XT es un cristal normal.
El HS es para los cristales de alta velocidad (hasta 20Mhz).

1.3

Familias

Existen diferentes tipos de Microcontroladores PIC, con el fin de que el diseador pueda escoger el que mejor
satisfaga las necesidades del proyecto que desea realizar. Estas son:
1.3.1

Gama Enana: PIC12C(F)XXX de 8 pines, se alimenta con un voltaje DC entre 2,5 V y 5,5 V, El formato
de sus instrucciones es de 12 bits y su set de instrucciones es de 33 o 35. La frecuencia del oscilador llega
a los 20MHz.

1.3.2

Gama Baja: PIC16C5X de 14, 18 y 28 pines, con instrucciones de 12 bits. Estos PIC, pueden
alimentarse a partir de una tensin de 2,5V, lo que los hace ideales para funcionar con bateras. Disponen
de un set de 33 instrucciones, no admiten ningn tipo de interrupcin y la PILA solo dispone de 2 niveles.

1.3.3

Gama Media PIC16C(F)XXX de 18 hasta 68 pines, Es una gama muy variada y completa, donde se
encuentra el PIC mas usado que es el PIC16F84A. Esta gama posee instrucciones de 14 bits, con un set
de 35 instrucciones. Dispone de interrupciones y una pila de 8 niveles que permiten el anidamiento de
subrutinas.
En esta gama se pueden encontrar las sig. caractersticas:
Comparador analgico (16C432, 16F628*).
Modulacin de anchura de impulsos (16F7X).
Conversor ADC de 8 bits (PIC16F676).
Memoria de programa Flash(16FXXX) y EEPROM(PIC16CXXX) .
Driver LCD (PIC16C92X).
Mdulos de puerto serial, I2C, SPI (PIC16F76).
Mdulo LIN (PIC16C43X).
Mdulo USB (PIC16C735)
Sensor interno de temperatura(PIC14000).

*Los PIC nombrados entre parntesis deben tomarse como ejemplos de microcontroladores que poseen las caractersticas nombradas. No
significa que sean los nicos con dichas caractersticas.
1.3.4

Gama Alta: PIC17CXXX/PIC18C(F)XXX, los hay de 40 hasta 80 pines, alcanzan 77 instrucciones de 16


bits. Disponen de un sistema de gestin de interrupciones vectorizadas muy potente. Tambin incluyen
variados controladores de perifricos, Puertos seriales y paralelos.

1.4

Caractersticas del PIC16F84A:

Es un microcontrolador de 18 pines, de 8 bits con tecnologa CMOS. La razn porque se ha elegido este tipo de
microcontrolador como base para el aprendizaje se debe fundamentalmente al tipo de memoria de programa que
posee. En el caso del PIC16F84A se trata de una memoria FLASH-EEPROM de 1K palabras de 14 bits cada una y 64
bytes de EEPROM como memoria de datos auxiliar y opcional.
La memoria FLASH es elctricamente grabable/borrable, es decir, para insertar en el PIC un nuevo programa
simplemente se sobreescribe la memoria como si se estuviera programando por primera vez. Esta caracterstica
supone una gran ventaja con la mayora de los microcontroladores, que tienen como memoria de programa

Curso Bsico de Microcontroladores PIC16F84A

Pgina 4

reescribible una tipo EPROM. Estas se graban elctricamente, pero para cargar un nuevo programa hay que
borrarlas sometiendolas durante cierto tiempo a rayos UV, lo que implica necesariamente sacar del zcalo el
circuito integrado, colocarlo en un borrador de EPROM y esperar un tiempo suficiente para borrar el
microcontrolador.

1.4.1

1.4.2

Resumen de caractersticas tcnicas


MEMORIA DE PROGRAMA

: 1K x 14 FLASH

MEMORIA DE DATOS RAM

: 68 Bytes

M. DE DATOS EEPROM

: 64 Bytes

PILA (STACK)

: De 8 niveles

INTERRUPCIONES

: 4 tipos diferentes

SET DE INSTRUCCIONES

: 35

ENCAPSULADO

: 18 PINES

FRECUENCIA DE TRABAJO

: 20 Mhz (mxima)

TEMPORIZADORES

: TMR0 y WDT

LINEAS DE E/S DIGITALES

: 13 (5 Puerto A y 8 Puerto B)

CORR. MXIMA ABSORBIDA

: 80 mA Puerto A y 150 mA Puerto B

CORR MXIMA SUMINISTRADA

: 50 mA Puerto A y 100 mA Puerto B

CORR. MXIMA ABSORBIDA POR LINEA

: 25 mA

CORR. MXIMA SUMINISTRADA POR LINEA

: 25 mA

VOLTAJE DE ALIMENTACIN (Vdd)

: De 2V(PIC16LF84) a 6V DC

VOLTAJE DE GRABACIN (Vpp)

: De 12 a 14V DC

Diagrama de pines del PIC16F84A

Fig. 1.2 Diagrama de pines PIC16F84A


Vdd

Pin por el cual se aplica la tensin positiva de alimentacin.

Vss

Pin utilizado para la conexin de tierra.

OSC1 / CLKIN
OSC2 / CLKOUT

Pin por el cual se aplica la entrada del circuito oscilador externo que proporciona la
frecuencia de trabajo al Microcontrolador.
Pin auxiliar o de salida del circuito oscilador.

MCLR# / Vpp

Este pin se activa con un cero (0) lgico, cada vez que se necesite reinicializar o resetear
al Microcontrolador. Este Pin tambin se usa durante la grabacin de la memoria de
programa para introducir por ella la tensin, Vpp (voltaje pico a pico de grabacin), que
esta comprendida entre 12 y 14V DC.

RA0 - RA4

Son los 5 Pines de E/S digitales correspondientes al Puerto A. El Pin RA4 es de colector
abierto lo que significa que cuando es utilizado como salida se debe conectar una
resistencia a Vcc (5V DC). El pin 3 adems de ser el bit mas significativo del Puerto A,
multiplexa otra funcin expresada por T0CKI. En este caso sirve para recibir una
frecuencia externa para alimentar al temporizador interno TMR0.

RB0 - RB7

Estos 8 pines corresponden a los 8 bits de E/S digitales del Puerto B. El Bit RB0
multiplexa otra funcin, que es la de servir como entrada a una peticin externa de
interrupcin, por eso se le denomina RB0/INT.

Curso Bsico de Microcontroladores PIC16F84A

Pgina 5

1.4.3 Organizacin de la memoria del PIC16F84A


En este microcontrolador tiene dos bloques principales de memorias, estos son la Memoria de Programa y la
Memoria de Datos. Cada bloque tiene su propio BUS, por lo cual el acceso para cada bloque puede ocurrir
durante el mismo ciclo del oscilador.

SFR

SFR

03FFh

Fig. 1.3 Mapa de la Memoria del PIC16F84A

1.4.3.1

MEMORIA DE PROGRAMA

El microcontrolador PIC16F84A , admite un mapa de memoria de programa capaz de contener 8.192 instrucciones
de 14 bits cada una. Para direccionar 8 K posiciones se necesitan 13 bits, que es la longitud del Contador de
Programa (PC) en este microcontrolador. Sin embargo, el PIC16F84A slo tiene implementadas 1K posiciones, por
lo que ignora los 3 bits de ms peso del PC.
La direccin 0000h esta reservada para el vector de RESET y la 0004h para el VECTOR DE INTERRUPCIN. Adems

Curso Bsico de Microcontroladores PIC16F84A

Pgina 6

posee una PILA de 8 niveles que permiten el anidamiento de hasta 8 subrutinas.


Es importante destacar que cada familia de microcontroladores posee una memoria de programa con tamao y
longitud de palabra especfica.

1.4.3.2

MEMORIA DE DATOS

Esta memoria dispone de dos zonas diferentes las cuales son:

Area de RAM esttica o SRAM: Es aquella donde residen los registros de funciones especiales (SFR) y los
registros de propsito general (GPR). El primero(SFR) tiene 24 registros de 1 Byte cada uno (12 por banco),
la mayora repetidos en ambos bancos. Dos de dichos registros no son operativos: el de la posicin 0h y el 7h.
Los dems registros corresponden al rea general y son 68 (0Ch 4Fh).

Area EEPROM de 64 bytes:Los PIC16F84A tienen una memoria EEPROM de datos de 64 bytes (0h - 3fh),
donde se pueden almacenar datos y variables que interesa que no se pierdan cuando se desconecta la
alimentacin al sistema. Soporta 10.000.000 de ciclos de escritura / borrado y es capaz de guardar la
informacin durante ms de 40 aos. Este bloque de memoria no se encuentra mapeado en ningn
banco, el acceso a esas posiciones (lectura y escritura) se consigue a travs de cuatro registros SFR de la
memoria de datos (RAM).
1.4.3.3

STACK (PILA)

El PIC16F84A tiene una pila de 8 niveles, o en otras palabras, un grupo de 8 posiciones de memoria de 13 bits de
longitud cuya funcin es mantener el valor del contador de programa luego de que ocurra un salto en el programa
hacia otra parte del mismo como ser una subrutina para que una vez finalizada esta el PIC pueda recordar desde
que punto se llam a esta subrutina y continuar normalmente.
Si resulta que la subrutina llama a su vez a otra, ocurre la misma situacin y la nueva posicin que es abandonada
debe guardarse en la PILA, empujando (PUSH) a la posicin original. De esta forma se pueden tener hasta 8
subrutinas anidadas en este microcontrolador.

Registro de Trabajo W(Work)


Se debe tener bien claro desde un principio que el registro W
NO se encuentra en ninguna posicin de la Memoria de Datos,
sin que es un registro de 8 bits totalmente independiente de
los dems, y se utiliza para intercambiar valores entre los
registros de la memoria de datos y para realizar operaciones
aritmticas, por lo tanto no se lo puede direccionar ni
manipular con los mismos criterios que se utilizan para los
dems registros.

Curso Bsico de Microcontroladores PIC16F84A

Pgina 7

1.5

Caractersticas Resumidas

Arquitectura del PIC16F84A:


1.5.3

Caractersticas RISC

El alto rendimiento del PIC16F84A puede atribuirse a las siguientes caractersticas de la arquitectura:
Arquitectura Harvard.

Pipelining de las instrucciones.

Concepto de Archivo de Registros.

Instruccin de un solo ciclo (excepto en los


saltos que se utilizan dos).

Todas las instrucciones son de una sola palabra (14


bits).

Reducido set de instrucciones .

Instrucciones de Palabra Larga (LWI).

1.5.4

Caractersticas del Hardware

Arquitectura Harvard con memoria de programa y datos separada.


Tecnologa CMOS EEPROM.
Diseo totalmente esttico.
Modo de operacin SLEEP de bajo consumo (<1 A tpico @ 3V).
Temporizador Watchdog con oscilador RC independiente.
Proteccin de cdigo.
Gran capacidad de sink/source en las lneas digitales de I/O:
25 mA source
25 mA sink
Manejo directo de LEDs

Que significa el trmino RISC?


Reduced Instruction Set Computer ( Juego de Instrucciones Reducido para Computador).
Solamente de 33 a 55 instrucciones que aprender ( comparado con ms de 200 en el Motorola HC05 y ms de
100 en el Intel 8051 ).
Velocidad de ejecucin mucho ms rpida.
Menor tiempo para salir con un producto al mercado.

Qu es la Arquitectura Harvard?

CPU

Memoria
(Programa &
DATOS)

Memoria

Memoria

CPU

La arquitectura Von-Neumann tradicional,


carga (FETCH) las instrucciones y el dato en
una sola memoria.
Se limita la capacidad operativa.

La arquitectura Harvard utiliza dos


reas de memoria independientes para
las instrucciones y los datos:

(Programa )

Aumenta el rendimiento

(DATOS )

14

Curso Bsico de Microcontroladores PIC16F84A

Es posible implementar buses de


programa y de datos de diferente
ancho

Pgina 8

1.6

Caractersticas del Set de Instrucciones


Arquitectura tipo tubera (PIPELINE), permite la carga ( FETCH) y ejecucin de las instrucciones en un
solo ciclo.
Todas las instrucciones (excepto los saltos ) son de una sola palabra y se ejecutan en un solo ciclo.
-

Alta velocidad ( 200ns @ 20Mhz ).

Tamao reducido de programa.

Manejo directo a nivel de bit en los puertos de I/O en un solo ciclo


-

Alto ratio de cambio de estado en la salida ( 200ns @ 20Mhz ).

Alto ratio de muestreo de las entradas ( 200ns @ 20Mhz ).

Las instrucciones de salto ( CALL, GOTO, etc.) se ejecutan en 2 ciclos (400ns @ 20Mhz)

Fig. 1.4 Ejemplo de tratamiento de instrucciones en base a la arquitectura PIPELINE (TUBERIA)


1.6.3

Juego de Instrucciones PIC16F84A


35 instrucciones Fcil de aprender.
Ancho de 14 bit Gran compactacin.
Todas las instrucciones son de una sola palabra.
Ejecucin en un solo ciclo, con excepcin de los saltos de programa: 2 ciclos.

1.6.4

Direccionamiento Indirecto
BANCO 1 (RAM)

00h

INDF

Direccin indirecta cargada en FSR


READ/WRITE a INDF (no implementada fsicamente )

04h

FSR

Ejemplo para borrar RAM de 20h a 7Fh:

Loop

movlw

20h

movwf

FSR

clrf

INDF

incf

FSR

btfss

FSR,7

goto

Loop

(continuacin del programa)


Registro de Archivo

Curso Bsico de Microcontroladores PIC16F84A

----------

Pgina 9

1.7

Perifricos

1.7.3

RESET

Los PIC16F84A tienen cinco causas que provocan el RESET del sistema. Dicho RESET consiste en cargar al PC
(PROGRAM COUNTER) con la posicin del Vector de RESET(direccin 0000h) y poner el estado de los bits de los
registros SFR con los valores DEFAULT.

Causas del RESET:


1 Conexin de la alimentacin POR (Power On Reset).
2 Activacin del pin #MCLR en funcionamiento normal.
3 Activacin del pin #MCLR en estado de reposo (SLEEP).
4 Desbordamiento del Perro Guardin (WDT) en funcin normal.
5 Desbordamiento del Perro Guardin (WDT) en estado de reposo (SLEEP).
1.7.4

TMR0 (Timer 0)

Se puede leer y grabar.


Es un contador de 8 bits que puede funcionar de distintos modos:
En modo TIMER: el ratio de incremento ms rpido es Osc/4 (5 Mhz con un oscilador de 20 Mhz).
En modo de Contador Externo: Cuenta los pulsos provenientes del pin RA4/T0CKI.
El Pre-escalador es un contador de 8 bits programable cuya funcin es retardar el incremento del TMR0 al
situarse entre la fuente de reloj y el TMR0. Por Ej. si el Pre-escalador esta programado con el valor 3, el TMR0
se incrementar en una unidad por cada 16 ciclos de reloj.

Fig. 1.5 Diagrama de funcionamiento del contador TMR0


1.7.5

Opciones del Oscilador

Se ofrecen cuatro opciones seleccionables:


- XT:

Oscilador a cristal ( de 100Khz a 4 Mhz.)

- LP:

Cristal de baja frecuencia ( DC a 200 Khz. )

- RC:

Oscilador RC ( DC a 4 Mhz )

- HS:

Oscilador de cristal de alta velocidad ( 1Mhz a 20 Mhz.)

La opcin RC es sumamente econmica y se utiliza para aplicaciones insensibles al tiempo pues la frecuencia
obtenida no es muy estable.
La opcin LP reduce el consumo

Oscilador a Cristal

Fig. 1.6 Conexin del oscilador externo a cristal y tabla de valores nominales C1/C2 por rango de frecuencia
Curso Bsico de Microcontroladores PIC16F84A

Pgina 10

Oscilador RC

La Fosc est en funcin a Vdd, Rext, Cext y la


temperatura. Los valores se extraen de las curvas
que ofrece el fabricante en la hoja de datos del
microcontrolador, pero aproximadamente podemos
obtener las sig. frecuencias con los valores RC
referidos:
625Khz 10K/20pf
80Khz 10K/220pf
80Hz
10K/0,1uf

Tabla 1ssdgfsdf

Fig. 1.7 Conexin del oscilador externo en configuracin RC

1.7.6

Temporizador de encendido Power-Up Timer (PWRT)

Es un temporizador opcional que se configura en la palabra de configuracin del PIC al programar el dispositivo. Su
funcin es de mantener al PIC en RESET 72mS fijos desde que se energiza el PIC para asegurar que la
alimentacin (VDD) este totalmente estabilizada cuando el microcontrolador empiece a funcionar normalmente.
1.7.7

Oscilador del Temporizador de Arranque (OST)

Circuitos osciladores basados en cristales o resonadores cermicos requieren un cierto tiempo despus del
encendido para que se establezca la oscilacin. El OST es un oscilador en el chip el cual temporiza el arranque, y
mantiene al dispositivo en una condicin de RESET por 1024 ciclos de reloj despus que finalice el tiempo del
PWRT. Si el PWRT no se habilita, el OST correr desde que se tenga un 1 en el pin MCLR.
Cuando VDD crece muy lentamente, es posible que los retardos del PWRT(si est habilitado) y del OST finalicen
antes de que VDD haya alcanzado su valor final. En estos casos se utiliza una red RC externa conectada al pin
MCLR para prolongar el RESET del PIC.

Fig. 1.7 Secuencia de activacin del PWRT y el OST


1.7.8

Watch Dog Timer o Perro Guardin (WDT)


El WDT es un contador(al igual que el TMR0) cuyo incremento depende exclusivamente de un oscilador
propio RC. Si se desborda produce un RESET en el chip por lo que intermitentemente el programa
principal lo debe borrar mediante la instruccin CLRWDT, si no ocurre esto (el programa quedo colgado
o mal funcionamiento) el PIC entra en RESET y el sistema puede recuperarse de este modo.
Utiliza su propio oscilador RC (totalmente independiente e insertado en el chip ).
WDT no puede ser modificado por software con otra instruccin que no sea CLRWDT, la cual pone a cero
el contador.
El tiempo de desbordamiento es programable de 18 mS a 2,5 Segundos mediante la asignacin del pre-

Curso Bsico de Microcontroladores PIC16F84A

Pgina 11

escalador.
Puede funcionar en modo SLEEP (bajo consumo).
Es opcional y se setea en la palabra de configuracin del micro (ver ms adelante).

Fig. 1.8 Diagrama general de funcionamiento del TMR0 y el WDT


1.7.9

Modo de bajo consumo (SLEEP)

Al ejecutarse en un programa la instruccin SLEEP ocurre lo sig.:


-

Se detiene la ejecucin del programa.

El driver del oscilador externo es apagado.

Los puertos de I/O mantienen sus estados antes de la instruccin SLEEP.

Si esta habilitado, el WDT ser limpiado, pero sigue corriendo.

El bit PD del STATUS es puesto a 0.

El bit TO del STATUS es puesto a 1

Despertar
El chip puede ser despertado por:
-

Un pulso bajo aplicado al pin #MCLR.

Una interrupcin (si est habilitada alguna).

Desbordamiento del WDT(si est habilitado).

1.7.10 Fusibles de configuracin


La palabra de configuracin consiste una palabra de 14 bits ubicada en la posicin 2007h del mapa de memoria de
programa que generalmente se especifica en la cabecera del programa *.ASM, aunque tambin el soft encargado
de grabar el PIC lo puede establecer mediante opciones dadas al usuario en el momento de la grabacin.

bit 13-4

CP: Code Protection bit


1= Proteccin de Cdigo deshabilitada.
0= Proteccin de Cdigo habilitada.

bit 3

#PWRTE: Power-up Timer Enable bit


Mantiene reseteado al PIC durante
72mS luego que la alimentacin
fue conectada.
1= Deshabilitado.
0= Habilitado.

Curso Bsico de Microcontroladores PIC16F84A

bit 2

WDTE: Watchdog Timer Enable bit


1= WDT habilitado.
0= WDT deshabilitado.

bit 1-0

FOSC1:FOSC2: Oscillator Selection bits


11 = RC
10 = HS
01 = XT
00 = LP

Pgina 12

Potrebbero piacerti anche