You are on page 1of 26

[Escriba aqu]

[Escriba aqu]
HISTORIA DE LOS
MICROCONTROLADORES
Las circunstancias con las que nos encontramos hoy en el campo de
los microcontroladores tienen sus races en el desarrollo de la tecnologa de
los circuitos integrados. Este desarrollo ha hecho posible contener cientos de
miles de transistores en un solo chip. se era uno de los requisitos previos
para la produccin de los microprocesadores, y las primeras computadoras
eran hechas agregando perifricos externos como la memoria, timers etc. lo
que aumentaba el volumen de los circuitos integrados. Estos circuitos
integrados contenan procesador y perifricos. As es cmo se desarrollo el
primer chip que contena una microcomputadora, o lo que despus se llegara
a conocer como un microcontrolador.
En el ao 1969, un equipo de ingenieros japoneses de la
compaa BUSICOM lleg a Estados Unidos con una idea, ellos deseaban usar
para sus proyectos pocos circuitos integrados de los que se usaban en las
calculadoras. La proposicin se hizo a INTEL, y Marcian Hoff era el
responsable del proyecto. Ya que l era quien tenia experiencia trabajando
con una computadora (PC) PDP8, se le ocurri pensar en una solucin
fundamentalmente diferente en lugar de la construccin sugerida. Esta
solucin presuma que la funcin del circuito integrado se determinara por
un programa almacenado en l. Eso significaba que la configuracin sera
ms simple, pero que requerira mucho ms memoria de lo que requera el
proyecto que propusieron los ingenieros japoneses. Despus de un tiempo,
aunque los ingenieros japoneses probaron soluciones ms fciles, la idea de
Marcian gan, y el primer microprocesador naci. Para transformar esta idea
en un producto ya fabricado, Federico Faggin, se uni a INTEL, y en slo 9
meses tuvo xito. INTEL obtuvo los derechos para vender este "bloque
integrado" en 1971. Primero,
compraron la licencia de la compaa
BUSICOM, que no tena idea del tesoro que posean. Durante ese ao,
apareci en el mercado un microprocesador que se llam 4004, este fue el
primer microprocesador de 4 bits con velocidad de 6 000 operaciones por
segundo. No mucho tiempo despus de eso, la compaa americana CTC
pidi a INTEL y Texas Instruments que hiciera un microprocesador de 8 bits.
Aunque despus a CTC no le interes mas la idea, Intel y Texas Instruments
siguieron trabajando en el microprocesador y el primero de abril de 1972, el
microprocesador de 8 bits aparece en el mercado con el nombre de 8008.
Poda direccionar 16 Kb de memoria, con un set de 45 instrucciones y
una velocidad de 300 000 operaciones por segundo. Este microprocesador
es el predecesor de todos los microprocesadores de hoy. Intel mantuvo sus
desarrollos y saco al mercado el procesador de 8 bits bajo el nombre 8080, el
cual poda direccionar 64Kb de memoria, con 75 instrucciones, a un precio de
360 dlls.

[Escriba aqu]
En otra compaa americana, Motorola, comprendieron rpidamente
lo que estaba sucediendo, as que ellos sacaron al mercado su
microprocesador de 8 bits, el 6800. Su constructor principal era Chuck
Peddle, y junto con el procesador, Motorola fue la primera compaa en hacer
otros perifricos como el
6820 y el 6850. En ese momento muchas compaas reconocieron
importancia de los microprocesadores y empezaron sus propios desarrollos.
Chuck Peddle abandon Motorola para unirse a la Tecnologa MOS y se
mantuvo trabajando intensamente en el desarrollo de los microprocesadores.
Un evento muy importante tuvo lugar en la historia de
microprocesadores en una exhibicin de WESCON en 1795 en Estados
Unidos. La Tecnologa MOS anunci que estaba comercializando los
microprocesadores 6501 y 6502 a 25 dlls. cada uno, y que los compradores
podran adquirirlos inmediatamente. Esto era tan extraordinario, que algunas
personas creyeron que era un escndalo, considerando que los competidores
estaban vendiendo el 8080 y el 6800 a 179 dlls. cada uno. Intel y
Motorola bajaron sus precios en el primer da de la exhibicin como una
respuesta a su competidor, 69.95 por microprocesador. Motorola reclama
a la Tecnologa de MOS y a Chuck Peddle el haberles copiado su 6800. La
Tecnologa
MOS suspende la fabricacin del 6501, pero siguen
produciendo el 6502. Los 6502 eran
microprocesadores de 8 bits, 56
instrucciones y la capacidad de direccionar 64Kb de memoria directamente.
Para reducir el costo, el 6502 se vuelve muy popular, as que se instala en
las computadoras tales como: KIM-1, Apple I, Apple II, Atari, Comodore,
Acorn, Oric, Galeb, Orao, Ultra, y muchas otras. Y muy pronto aparecieron
varios fabricantes del 6502 (Rockwell, Sznertek, GTE, NCR, Ricoh, y
Comodore quienes toman la Tecnologa MOS) el cual estaba en su momento
de apogeo y se venda a una velocidad de 15 millones de procesadores por
ao. Otros, sin embargo, no se rindieron. Federico Faggin deja Intel, y
empieza su propio Zilog Inc.
En 1976, Zilog anuncia el Z80. Durante la fabricacin de este
microprocesador, Faggin toma una decisin giratoria. Sabiendo que ya se han
desarrollado muchos programas para 8080, Faggin sabia que muchos
se
quedaran fieles a ese microprocesador. As que decide disear un nuevo
procesador que pueda ser compatible con 8080, o que sea capaz de
desarrollar todos los programas que ya se haban escrito para el 8080.
Adems de estas caractersticas, se agregaron muchas otras para que el Z80
fuera un microprocesador muy poderoso. Poda direccionar 64 Kb de
memoria, tena 176 instrucciones, un gran nmero de registros, una
opcin para refresco de memoria dinmica de la RAM, mayor velocidad
de trabajo etc. El Z80 fue un gran xito y todos cambiaron del 8080 al
Z80. Puede decirse que el Z80 fue el microprocesador comercializado ms
exitoso de ese tiempo. Adems de Zilog, tambin aparecieron otros nuevos
fabricantes como Mostek, NEC, SHARP, y SGS. Z80 estaba en el corazn de
muchas computadoras como en Spectrum, Partner, TRS703, Z-3 etc.

[Escriba aqu]

En 1976, Intel propone una versin mejorada del microprocesador de 8 bits, al


cual nombr 8085. Sin embargo, el Z80 era tan bueno que Intel perdi la
batalla. Aunque ms procesadores aparecan en el mercado (6809, 2650,
SC/MP etc.),
ya todo estaba decidido. Ya no haba grandes mejoras de
parte de los fabricantes para hacer algo nuevo, as que el 6502 y el Z80
junto con el 6800 permaneci como los
representantes
principales de
los microprocesadores de 8 bits de ese tiempo.

Microcontroladores - Sistemas microcontrolados


El diagrama de un sistema microcontrolado sera algo as

Los dispositivos de entrada pueden ser un teclado, un interruptor, un


sensor, etc.
Los dispositivos de salida pueden ser LED's, pequeos parlantes, zumbadores,
interruptores de potencia (tiristores, optoacopladores), u otros dispositivos como
rels, luces, un secador de pelo, en fin.. lo que quieras.
Aqu tienes una representacin en bloques del microcontroador, para que te des
una idea, y puedes ver que lo adaptamos tal y cual es un ordenador, con su fuente
de alimentacin, un circuito de reloj y el chip
microcontrolador, el cual dispone de su CPU, sus memorias, y por supuesto, sus
puertos de comunicacin listos para conectarse al mundo exterior.

Definamos entonces al microcontrolador; Es un circuito integrado programable,


capaz de ejecutar las rdenes grabadas en su memoria. Est compuesto de varios
bloques funcionales, los cuales cumplen una tarea especfica. Sacado de un
libro...!!!. En fin estas son bsicamente algunas de sus partes...
Memoria ROM (Memoria de slo lectura)
Memoria RAM (Memoria de acceso aleatorio)
Lneas de entrada/salida (I/O) Tambin llamados puertos

Lgica de control Coordina la interaccin entre los dems bloques Eso no


es todo, algunos traen funciones especiales.
Microcontroladores PIC16CXX/FXX de Microchip
Me referir a estos porque sern los que utilizar aqu, (al menos por ahora).
Estos micros pertenecen a la gama media y disponen de un set de
35 instrucciones, por eso lo llaman de tipo RISC (Reduced Instruction Set
Computer) en entendible sera "Computador con Set de Instrucciones Reducido"
pocas instrucciones pero muy poderosas, otras son de tipo CISC (Complex
Instruction Set Computer - Computador con Set de Instrucciones Complejo),
demasiadas instrucciones, y lo peor, difciles de recordar.
Esta familia de microcontroladores se divide en tres rangos segn la
capacidad de los microcontroladores. El ms bajo lo compone la familia
16C5X. El rango medio lo componen las familias 16C6X/ 7X/ 8X, algunos con
conversores A/D, comparadores, interrupciones, etc. La familia de rango
superior lo componen los 17CXX.
Estas son las funciones especiales de las cuales disponen algunos micros...

Conversores anlogo a digital (A/D) en caso de que se requiera medir


seales analgicas, por ejemplo temperatura, voltaje, luminosidad, etc.
Temporizadores programables (Timer's) Si se requiere medir perodos de
tiempo entre eventos, generar temporizaciones o salidas con frecuencia
especfica, etc.
Interfaz serial RS-232. Cuando se necesita establecer comunicacin con
otro microcontrolador o con un computador.
Memoria EEPROM Para desarrollar una aplicacin donde los datos no se
alteren a pesar de quitar la alimentacin, que es un tipo de memoria ROM
que se puede programar o borrar elctricamente sin necesidad de circuitos
especiales.
salidas PWM (modulacin por ancho de pulso) Para quienes requieren el
control de motores DC o cargas resistivas, existen microcontroladores que
pueden ofrecer varias de ellas.
Tcnica llamada de "Interrupciones", (sta me gust) Cuando una seal
externa activa una lnea de interrupcin, el microcontrolador deja de lado la
tarea que est ejecutando, atiende dicha interrupcin, y luego contina con
lo que estaba haciendo.
Todo esto, slo para tener una idea de lo que son los micros, ahora vamos a un
par de ellos en especial.

[Escriba aqu]

[Escriba aqu]

[Escriba aqu]

Presentacin oficial! - PIC16C84/F84


El P1C16C84 est fabricado en tecnologa CMOS, consume baja potencia, y es
completamente esttico (si el reloj se detiene, los datos de la memoria no se
pierden). El 16F84 tiene las mismas caractersticas pero posee
memoria FLASH, esto hace que tenga menor consumo de energa, y como si fuera
poco tiene mayor capacidad de almacenamiento.
El encapsulado ms comn para estos microcontrolador es el DIP (Dual In line Pin)
de 18 pines, (el nuestro... ), y utiliza un reloj de 4 MHz (cristal de cuarzo). Sin
embargo, hay otros tipos de encapsulado, por ejemplo, el encapsulado tipo surface
mount (montaje superficial) es mucho + pequeo.

Terminales del microcontrolador y sus respectivas funciones:


sta sera la disposicin de sus terminales y sus respectivos nombres...

Encapsulado DIP - PIC16C84/F84

[Escriba aqu]

[Escriba aqu]

[Escriba aqu]

Patas 1, 2, 3, 17 y 18 (RA0-RA4/TOCKI): Es el PORT A. Corresponden a


5 lneas bidireccionales de E/S (definidas por programacin). Es capaz de
entregar niveles TTL cuando la alimentacin aplicada en VDD es de 5V
5%. El pin RA4/TOCKI como entrada puede programarse en funcionamiento
normal o como entrada del contador/temporizador TMR0. Cuando este pin se
programa como entrada digital, funciona como un disparador de Schmitt (Schmitt
trigger), puede reconocer seales un poco distorsionadas y llevarlas a niveles
lgicos (cero y cinco voltios). Cuando se usa como salida digital se comporta como
colector abierto; por lo tanto se debe poner una resistencia de pull-Up (resistencia
externa conectada a un nivel de cinco voltios, ...no te preocupes, mas abajo lo
entenders mejor). Como salida, la lgica es inversa: un "0" escrito al pin del
puerto entrega a la salida un "1" lgico. Este pin como salida no puede manejar
cargas como fuente, slo en el modo sumidero.
Pata 4 (MCLR / Vpp): Es una pata de mltiples aplicaciones, es la entrada de
Reset (master clear) si est a nivel bajo y tambin es la habilitacin de
la tensin de programacin cuando se est programando el dispositivo.
Cuando su tensin es la de VDD el PIC funciona normalmente.
Patas 5 y 14 (VSS y VDD): Son respectivamente las patas de masa y
alimentacin. La tensin de alimentacin de un PIC est comprendida entre
2V y 6V aunque se recomienda no sobrepasar los 5.5V.
Patas 6, 7, 8, 9, 10, 11, 12, 13 (RB0-RB7): Es el PORT B. Corresponden a ocho
lneas bidireccionales de E/S (definidas por programacin). Pueden manejar niveles
TTL cuando la tensin de alimentacin aplicada en VDD es de 5V 5%. RB0 puede
programarse adems como entrada de interrupciones externas INT. Los pines RB4
a RB7 pueden programarse para responder a interrupciones por cambio de estado.
Las patas RB6 y RB7 se corresponden con las lneas de entrada de reloj y entrada
de datos respectivamente, cuando est en modo programacin del integrado.
Patas 15 y 16 (OSC1/CLKIN y OSC2/CLKOUT): Corresponden a los pines
de la entrada externa de reloj y salida de oscilador a cristal respectivamente.
Ahora un poco de electrnica:
Esto comienza a ponerse interesante, no crees...?, ok sigamos... Como estos
dispositivos son de tecnologa CMOS, todos los pines deben estar conectados a
alguna parte, nunca dejarlos al aire porque se puede daar el integrado. Los pines
que no se estn usando se deben conectar a la fuente de alimentacin de +5V,
como se muestra en la siguiente figura...

[Escriba aqu]

[Escriba aqu]

[Escriba aqu]

Capacidad de corriente en los puertos


La mxima capacidad de corriente de cada uno de los pines de los puertos en
modo sumidero (sink) es de 25 mA y en modo fuente (source) es de 20 mA. La
mxima capacidad de corriente total de los puertos es:
PUERTO A PUERTO B
Modo Sumidero 80 mA
150 mA
Modo Fuente
50 mA
100 mA

As se vera la conexin para ambos modos de funcionamiento.

El oscilador externo
Es un circuito externo que le indica al micro la velocidad a la que debe trabajar.
Este circuito, que se conoce como oscilador o reloj, es muy simple pero de vital
importancia para el buen funcionamiento del sistema. El P1C16C84/F84 puede
utilizar cuatro tipos de reloj diferentes. Estos tipos son:
RC. Oscilador con resistencia y condensador.
XT. Cristal.
HS. Cristal de alta velocidad.

[Escriba aqu]

[Escriba aqu]

[Escriba aqu]

LP. Cristal para baja frecuencia y bajo consumo de potencia.


En el momento de programar o "quemar" el microcontrolador se debe
especificar que tipo de oscilador se usa. Esto se hace a travs de unos
fusibles llamados "fusibles de configuracin" o fuses.
Aqu utilizaremos el cristal de 4 MHz, porque garantiza mayor precisin y un buen
arranque del microcontrolador. Internamente esta frecuencia es dividida por cuatro,
lo que hace que la frecuencia efectiva de trabajo sea de
1 MHz, por lo que cada instruccin se ejecuta en un microsegundo. El cristal debe
ir acompaado de dos condensadores y el modo de conexin es el siguiente...

Si no requieres mucha precisin en el oscilador, puedes utilizar una resistencia y


un condensador, como se muestra en la figura. donde OSC2 queda libre
entregando una seal cuya frecuencia es la del OSC/4.

Segn las recomendaciones de Microchip R puede tomar valores entre 5k y


100k, y C superior a 20pf.
Reset
El PIC 16C84/F84 posee internamente un circuito temporizador conectado al pin de
reset que funciona cuando se da alimentacin al micro, se puede entonces conectar
el pin de MCLR a la fuente de alimentacin. Esto hace
que al encender el sistema el microcontrolador quede en estado de reset por un
tiempo mientras se estabilizan todas las seales del circuito (lo cual

[Escriba aqu]

[Escriba aqu]

es bastante bueno, por eso siempre se usara).

Este ltimo circuito, es por si deseas tener control sobre el reset del
sistema, slo le conectas un botn y listo...

[Escriba aqu]

Estructura interna del Microcontrolador


antes debemos saber donde alojar nuestro programa, como se va a ejecutar, y
como configurar sus puertos.
Arquitectura interna del PIC:
Hay dos arquitecturas conocidas; la clsica de von Neumann, y la
arquitectura Harvard, veamos como son...
Arquitectura Von Neumann Dispone de una sola memoria principal donde
se almacenan datos e instrucciones de forma indistinta. A dicha memoria se
accede a travs de un sistema de buses nico (direcciones, datos y control).

Arquitectura Harvard Dispone de dos memorias independientes, una que


contiene slo instrucciones, y otra que contiene slo datos. Ambas disponen de sus
respectivos sistemas de buses de acceso y es posible realizar operaciones de
acceso (lectura o escritura) simultneamente en ambas memorias, sta es la
estructura para los PIC's.

El procesador o UCP
Es el elemento ms importante del microcontrolador. Se encarga de direccionar la
memoria de instrucciones, recibir el cdigo OP de la instruccin en curso,
decodificarlo y ejecutarlo, tambin realiza la bsqueda de los operandos y
almacena el resultado.
Memoria de programa
Esta vendra a ser la memoria de instrucciones, aqu es donde almacenaremos
nuestro programa o cdigo que el micro debe ejecutar. No hay posibilidad de
utilizar memorias externas de ampliacin. Son 5 los tipos de memoria. pero slo
describir dos:
Memorias EEPROM. (Electrical Erasable Programmable Read Only
Memory - Memoria de slo lectura Programable y borrable elctricamente)
Comn en el PIC 16C84. sta tarea se hace a travs de un circuito
grabador y bajo el control de un PC. El nmero de veces que puede
grabarse y borrarse una memoria EEPROM es finito
aproximadamente 1000 veces, no es acaso suficiente...?. Este tipo de
memoria es relativamente lenta.
Memorias FLASH. Disponible en el PIC16F84. Posee las mismas
caractersticas que la EEPROM, pero sta tiene menor consumo de
energa y mayor capacidad de almacenamiento, por ello est
sustituyendo a la memoria EEPROM.
La memoria de programa se divide en pginas de 2,048 posiciones. El
PIC16F84A slo tiene implementadas 1K posiciones es decir de 0000h a
03FFh y el resto no est implementado. (es aquello que se ve en gris)

Cuando ocurre un Reset, el contador de programa (PC) apunta a la direccin


0000h, y el micro se inicia nuevamente. Por esta razn , en la primera direccin
del programa se debe escribir todo lo relacionado con la iniciacin del mismo (por
ejemplo, la configuracin de los puertos...).
Ahora, si ocurre una interrupcin el contador de programa (PC) apunta a la
direccin 0004h, entonces ah escribiremos la programacin necesaria para
atender dicha interrupcin.
Algo que se debe tener en cuenta es la pila o Stack, que consta de 8 posiciones (o
niveles), esto es como una pila de 8 platos el ltimo en poner es el primero en
sacar, si seguimos con este ejemplo, cada plato contiene la direccin y los datos de
la instruccin que se est ejecutando, as cuando se efecta una llamada (CALL) o
una interrupcin, el PC sabe donde debe regresar (mediante la instruccin RETURN,
RETLW o RETFIE, segn el caso) para continuar con la ejecucin del programa.

Es importante que tengas en claro las notaciones que debers tomar en


cuenta para poder interpretarlas, no son muchas.

NOTACION PARA NUMEROS

Decimal : D'100' .100


Hexadecimal : H'64' 0x64 64
Octal : O'144'
Binario : B'01101100'
ASCII : A'C' 'C'

NOTACION PARA REGISTROS Y LITERALES


w : Registro W, similar al acumulador, es el registro de trabajo.
f : Campo de 5 bits (fffff), contiene la direccin del banco de registros,
que ocupa el banco 0 del rea de datos. Direcciona uno de esos
registros.
k : Representa una constante de 8 bits.
d : Bit del cdigo OP de la instruccin. Selecciona el destino donde se
guarda el resultado de una operacin. Si d=0, el destino es W, y si d=1 el
destino es f.
b : Determina la posicin de un bit dentro de un registro de 8 bits, (o sea,
tomar valores entre 0 y 7)
SIMBOLOS

[] : Opciones.
() : Contenido.
=> : Se asigna a ...
<> : Campo de bits de un registro.
E : Pertenece al conjunto ...
Label : Nombre de la etiqueta.
TOS : Cima de la pila con 8 niveles en la gama media.
PC : Contador de programa que direcciona la memoria de
instrucciones.

FLAGS
Los Flags o banderas son marcadores, representados por bits dentro del registro
STATUS, y son:

Z : Flag de cero, se pone a 1 cuando una operacin lgica o aritmtica da


0 (cero)como resultado. En cualquier otro caso se pone a 0.
C : Flag de Carry, se pone a 1 cuando la operacin que le afecta
sobrepasa el nivel de representacin del procesador, en nuestro caso es de
8 BIT's , de esta manera si sumamos a 0b11111111 un
0b00000011 el resultado sera 0b00000010 y el BIT de Carry pasara a 1.
DC : Flag de carry del nibble inferior, este se comporta igual que el BIT de
Carry, solo que el lmite de representacin son los 4 bits inferiores, de
esta manera si tenemos 0b00001111 y sumamos
0b00000111, el resultado ser 0b00010110 y el BIT de DC se pone a
1, el BIT de Carry estar a 0 al no superarse los 8 bits y el de Z a 0 al ser
el nmero diferente de 0.

En este resumen las instrucciones estn clasificadas segn su operacin sea


orientada a registros, a bits, o a literales y de control:
Para que no confundirnos. En esta primera tabla aparecen W, f y d. Recuerda
que...
W : es el registro de trabajo y almacena datos de forma
momentnea
f : es la direccin de un registro, si es llamada apunta al contenido de
ese registro
d : es el destino donde se guarda el resultado de una operacin, si es
1 se guarda en el registro f, y si es 0 en W.
OPERACIONES ORIENTADAS A REGISTROS Nemotcnicos
Operacin
ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
INCF
INCFSZ
IORWF
MOVF
MOVWF
NOP
RLF
RRF

SUBWF
SWAPF
XORWF

f,d
f,d
f
f,d
f,d
f,d
f,d
f,d
f,d
f,d
f
f,d
f,d
f,d
f,d
f,d

Sumar W y f AND
entre W y f
Limpiar f
Limpiar W
Complementar f
Decrementar f
Decrementar f, saltar si cero
Incrementar f
Incrementar f, saltar si cero
OR entre W y f
Mover f Mover
W a F No
Operacin
Rotar a la izquierda a
travs del carry Rotar
a la derecha
a travs del carry Restar W
de f Intercambiar nibbles
de f OR exclusiva entre W y
f

Estados afectados
C,DC,Z
Z
Z
Z
Z
Z
Z
Z
Z

CC
C,DC,Z
Z

En este otro cuadro, a dems de f aparece b. que vendra a ser uno de los 8 bits
del registro f

OPERACIONES ORIENTADAS A BITS


Nemotcnicos
BCF
BSF
BTFSC
BTFSS

Operacin

Estados afectados

f,b
Limpiar bit b de f
f,b
Activar bit b de f
f,b
Probar bit b de f,
saltar si cero
f,b
Probar bit b de f,
saltar si uno

Por ltimo, aparece k que viene a ser una constante de 8 bit, es decir que k puede
tomar valores entre 0 y 255, stos inclusive, segn la instruccin a utilizar

OPERACIONES ORIENTADAS A LITERALES Y DE CONTROL


Nemotcnicos
ADDLW
ANDLW
CALL
CLRWDT
GOTO
IORLW
MOVLW
RETFIE
RETLW
RETURN
SLEEP
SUBLW
XORLW

k
k
k
K
K
K
K

K
K

Operacin
Sumar literal k a W
AND entre k y W
Llamar subrutina
Limpiar WDT
Salta a direccin k
OR entre k y W
Cargar W con literal k
Retornar de interrupcin
Retornar y cargar W con k
Retornar de subrutina
Ir al modo de bajo consumo
Restarle k a W
OR exclusiva entre k y W

Estados afectados
C,DC,Z
Z
-TO,-TD
Z

-TO,-TD
C,DC,Z
Z

LOS FUSES DEL PIC


Estas 4 "variables" del Pic16F84 (modelos superiores tienen ms), sirven para
configurar ciertos aspectos del microcontrolador. Cada FUSE activa o desactiva
una opcin de funcionamiento.

OSC (Oscilador):
Es el modo de oscilacin que va a usar el Pic.
Cada vez que el Pic recibe un pulso elctrico del oscilador da un paso para
ejecutar una instruccin (4 impulsos para completar una), por lo que podemos
decir que es una seal que le recuerda al Pic que tiene que seguir avanzando.
Segn esto, el pic puede usar 4 tipos de oscilador:

XT: Es un acrnimo que viene de XTAL (o cristal en


castellano). Este modo de funcionamiento implica que
tendremos que disponer de un cristal de cuarzo externo al
Pic y dos condensadores. El valor del cristal generalmente
ser de 4Mhz o 10Mhz, y los condensadores sern cermicos
de entre 27 y 33 nF. La
exactitud de este dispositivo es muy muy alta, por lo que lo
hace muy recomendable para casi todas las aplicaciones.
RC: Este es el sistema ms sencillo y econmico. Se basa
en un montaje con una resistencia y un condensador. La
velocidad a la que oscile el pic depender de los valores del
condensador y de la resistencia. En la hoja de caractersticas
del Pic estn los valores.
HS: Para cuando necesitemos aplicaciones de "alta
velocidad", entre 8 y 10Mhz. Se basa tambin en un
cristal de cuarzo, como el XT
LP: "Low Power" la velocidad mxima a la que
podemos poner el pic con este oscilador es de 200Khz. Al
igual que el XT y el HS, necesitaremos de un cristal de cuarzo y
unos
condensadores.

WDT (Watchdog Timer):


El famoso "perro" del pic. (perro guardin). Esta es una capacidad del pic
de autoresetearse. Es muy til, por ejemplo si un Pic, por un descuido de
programacin, se queda en un bucle infinito, esta "utilidad" lo sacar de l.
Su funcionamiento es sumamente sencillo. Simplemente es un registro que
debemos borrar cada cierto tiempo. Si transcurrido un cierto tiempo el
registro no ha sido borrado el pic se resetea. La instruccin para borrar el
registro es CLRWDT. Con poner un par de ellos a lo largo de nuestro cdigo
es suficiente para tener una garanta de que el pic no se quede "haciendo el
bobo" (como dijo alguien por ah...).
PWRT (Power Up Timer Reset):
Si activamos este FUSE, lo que conseguimos es que se genere un retardo
en la inicializacin del Pic. Esto se usa para que la tensin se estabilice,
por lo que se recomienda su uso.
CP (Code Protect):
Code Protection. Proteccin del cdigo. Lo nico que hace es impedir que
algun curioso se apropie de tu creacin no tiene efecto alguno en el
correcto funcionamiento del PIC, ni que no se pueda sobreescribir su
contenido. Lo nico que hace es eso, impedir su lectura. Por cierto, dicen
que puedes quitar la proteccin por medio de hardware.

Caractersticas especiales
Algunos elementos que forman parte de los PIC no se encuentran en microcontroladores de otros fabricantes, o simplemente representan alguna ventaja
o facilidad a la hora de hacer un diseo. Veamos una breve descripcin de las
ms significativas:
Circuito de vigilancia (Watchdog Timer )
Su funcin es restablecer el programa cuando ste se ha perdido por fallas en la
programacin o por alguna razn externa. Es muy til cuando se trabaja en
ambien- tes con mucha interferencia o ruido electromagntico. Est conformado
por un osci- lador RC que se encuentra dentro del microcontrolador.
Este oscilador corre de manera independiente al oscilador principal. Cuando se
habilita su funcionamiento, dicho circuito hace que el microcontrolador sufra un
reset cada determinado tiempo (que se puede programar entre 18 ms y 2
segundos). Este reset lo puede evitar el usuario mediante una instruccin especial
del microcontrola- dor (CLRWDT: borrar el conteo del watchdog), la cual se debe
ejecutar antes de que termine el perodo nominal de dicho temporizador. De esta
manera, si el programa se

ha salido de su flujo normal, por algn ruido o interferencia externa, el


sistema se reiniciar (cuando se acabe el tiempo programado y no se
haya borrado el contador) y el programa puede restablecerse para
continuar con su funcionamiento normal.
En las primeras prcticas no se utiliza el circuito de vigilancia para
facilitar el trabajo; por eso, en el momento de programar el
microcontrolador se debe seleccio- nar en los fusibles de configuracin
watchdog timer OFF. Ms adelante veremos algunos ejemplos que
ilustran su funcionamiento y la manera de utilizarlo.

Temporizador de encendido (Power-up Timer)


Este proporciona un reset al microcontrolador en el momento de
conectar la fuente de alimentacin, lo que garantiza un arranque
correcto del sistema. En el momento de grabar el micro se debe
habilitar el fusible de configuracin Power-up Timer, para ello se debe
seleccionar la opcin ON. Su tiempo de retardo es de 72 milisegundos.

Modo de bajo consumo (sleep)


Esta caracterstica permite que el microcontrolador entre en un estado
pasivo donde consume muy poca potencia. Cuando se entra en este
modo el oscilador principal se detiene, pero el temporizador del circuito
de vigilancia (watchdog) se reinicia y em- pieza su conteo nuevamente.

Se entra en ese estado por la ejecucin de una instruccin especial


(llamada SLEEP) y se sale de l por alguna de las siguientes causas:
cuando el microcontrolador sufre un reset por un pulso en el pin MCLR,
porque el watchdog hace que se reinicie el sistema o porque ocurre una
interrupcin al sistema.

Interrupciones
Este microcontrolador incluye el manejo de interrupciones, lo cual
representa gran- des ventajas. El PIC16F84 posee cuatro fuentes de
interrupcin a saber:
Interrupcin externa en el pin
RB0/INT
Finalizacin del temporizador/contador
TMRO
Finalizacin de escritura en la EEPROM de
datos
Cambio de nivel en los pines RB4 a
RB7
El registro 0Bh o INTCON contiene las banderas de las
interrupciones INT, cambio en el puerto B y finalizacin del conteo del
TMRO, al igual que el control para habilitar o deshabilitar cada una de
las fuentes de interrupcin, incluida la de escritura en memoria
EEPROM. Slo la bandera de finalizacin de la escritura resi- de en el
registro 88h (EECON1<4>).
Si el bit GIE (Global Interrupt Enable) se coloca en 0, deshabilita
todas las interrupciones. Cuando una interrupcin es atendida, el bit
GIE se coloca en 0 auto- mticamente para evitar interferencias con
otras interrupciones que se pudieran pre- sentar, la direccin de
retorno se coloca en la pila y el PC se carga con la direccin
04h. Una vez en la rutina de servicio, la fuente de la interrupcin se
puede determinar examinando las banderas de interrupcin. La bandera respectiva se
debe colo- car, por software, en cero antes de regresar de la
interrupcin, para evitar que se vuelva a detectar nuevamente la
misma interrupcin.

La instruccin RETFIE permite al usuario retornar de la interrupcin,


a la vez que habilita de nuevo las interrupciones, al colocar el bit GIE
en uno. Debe tenerse presente que solamente el contador de programa
es puesto en la pila al atenderse la interrupcin; por lo tanto, es
conveniente que el programador tenga cuidado con el registro de
estados y el de trabajo, ya que se pueden producir resultados
inesperados si dentro de ella se modifican.

Interrupcin externa. Acta sobre el pin RB0/INT y se puede


configurar para acti- varse con el flanco de subida o el de bajada, de
acuerdo al bit INTEDG (OPTION<6>). Cuando se presenta un flanco
vlido en el pin INT, la bandera INTF (INTCON<1>) se coloca en uno.
La interrupcin se puede deshabilitar colocando el bit de control INTE
(INTCON<4>) en cero. Cuando se atiende la interrupcin, a travs de la
rutina de servicio, INTF se debe colocar en cero antes de regresar al
programa principal. La interrupcin puede reactivar al microcontrolador
despus de la instruccin SLEEP, si previamente el bit INTE fue
habilitado.
Interrupcin por finalizacin de la temporizacin. La superacin
del conteo mxi- mo (0FFh) en el TMR0 colocar el bit TOIF en uno
(INTCON<2>). El bit de control respectivo es TOIE (INTCON<5>).
Interrupcin por cambio en el puerto RB. Un cambio en los pines
del puerto B
<7:4> colocar en uno el bit RBIF (INTCON<0>). El bit de control
respectivo es
RBIE
(INTCON<3>).
Interrupcin por finalizacin de la escritura. Cuando la escritura
de un dato en la EEPROM finaliza, se coloca en 1 el bit EEIF
(EECON1<4>). El bit de control res- pectivo es EEIE (INTCON<6>)
Memoria de datos EEPROM
El PIC16F84 tiene una memoria EEPROM de datos de 64 posiciones (0h
a 3Fh), de
8 bits cada una. Este bloque de memoria no se encuentra mapeado en
ningn banco, el acceso a esas posiciones se consigue a travs de dos
registros de la RAM:
- el registro EEADR (posicin 09), que debe contener la direccin de la
posicin de la EEPROM a ser accesada
- el registro EEDATA (posicin 08), que contiene el dato de 8 bits que
se va a escri- bir o el que se obtuvo de la ltima lectura.
Adicionalmente, existen dos registros de control: el EECON1 (88h),
que posee cinco bits que manejan las operaciones de lectura/escritura y
el EECON2 (89h), que aunque no es un registro fsico, es necesario para
realizar las operaciones de escritura.
La lectura toma un ciclo del reloj de instrucciones, mientras que la
escritura, por ser controlada por un temporizador incorporado, tiene un
tiempo nominal de 10 milisegundos, este tiempo puede variar con la
temperatura y el voltaje. Cuando se va a realizar una operacin de
escritura, automticamente se hace primero la opera- cin de borrado.
El nmero tpico de ciclos de borrado/escritura de la EEPROM de datos
es de 1.000.000.

Fusibles de configuracin

El PIC16F84 posee cinco fusibles, cada uno de los cuales es un bit.


Estos fusibles se pueden programar para seleccionar varias
configuraciones del dispositivo: tipo de oscilador, proteccin de cdigo,
habilitacin del circuito de vigilancia y el tempori- zador al encendido.
Los bits se localizan en la posicin de memoria 2007h, posicin a la
cual el usuario slo tiene acceso durante la programacin del
microcontrolador. Cuando se programa la proteccin de cdigo, el
contenido de cada posicin de la memoria no se puede leer
completamente, de tal manera que el cdigo del programa no se puede
reconstruir. Adicionalmente, todas las posiciones de memoria del programa se protegen contra la reprogramacin.

Una vez protegido el cdigo, el fusible de proteccin slo puede ser borrado
(puesto a 1) si se borra toda la memoria del programa y
la de datos.
Las pull-ups internas
Cada uno de los pines del puerto B tiene un dbil elemento pull-up
interno (250
A tpico); este elemento es automticamente
desconectado cuando el pin se configura como salida. Adicionalmente,
el bit RBPU (OPTION<7>) controla todos estos ele- mentos, los cuales
estn deshabilitados ante una condicin de reset. Estos elementos pullup son especialmente tiles cuando el microcontrolador va a colocarse
en el modo de bajo consumo, ya que ayudan a no tener las entradas
flotantes, significando una reduccin en el consumo de corriente.
El conjunto de Instrucciones
Estas se clasifican en orientadas a registros, orientadas al bit y
operaciones literales y de control. Cada instruccin es una palabra de 14
bits, dividida en un cdigo de operacin (el cual especifica la orden a
ejecutar) y uno o ms operandos sobre los que se acta. En el apndice
A se encuentra la lista completa de instrucciones, la cual incluye ejemplos
y explicaciones. Como se puede observar all, en total son 35, las cuales
tardan un ciclo de mquina, a excepcin de los saltos, que toman dos
ciclos.
Compatibilidad con otras familias
Quienes estn familiarizados con los PIC16C5X encontrarn
bsicamente las siguientes modificaciones:
La longitud de las instrucciones se increment a 14 bits.
Se puede omitir la paginacin de la memoria de programa.
La paginacin de la memoria de datos se ha redefinido ligeramente,
de tal manera que se elimina la necesidad de los bits PA2, PA1 y PA0
en el registro de estados.
Se cuenta con cuatro nuevas instrucciones: RETURN, RETFIE, ADDLW y

SUBLW.
La manera en que se configuraban los puertos (con la instruccin
TRIS) y se asig- naba el preescalador (con la instruccin OPTION) ha
sido modificada, de tal for- ma que los registros OPTION y TRIS ahora
son direccionables; an as, se conser- van dichas instrucciones para
mantener la compatibilidad con los PIC16C5X.
Se agregaron capacidades de interrupcin. El vector de interrupcin
es 0004h.
El tamao de la pila se increment a 8 niveles.
El vector de reset se modific a 0000h.
Reactivacin despus de la instruccin SLEEP a travs de
interrupciones.
El pin de entrada RTCC es ahora un pin del puerto A, llamado
RA4/TOCK1
El ancho del registro FSR se aument a 8 bits.
La posicin 07 no est implementada.
Programacin serial del microcontrolador.

MICROCONTROLADORES Y MICROPROCESADORES
Un microcontrolador difiere de un microprocesador de muchas maneras. Lo
primero y lo ms importante es su funcionalidad. Para que un microprocesador
sea usado, otros componentes como la memoria e interfaces, deben agregarse
para recibir y enviar datos. En resumen, el microprocesador es el corazn de
una computadora. Por otro lado, el microcontrolador fue diseado para ser todo
eso en un solo chip. Ningn otro componente externo se necesita para su
aplicacin, porque todos los perifricos necesarios ya se construyen en l. As,
nosotros ahorramos el tiempo y el espacio que se necesitan para construir los
dispositivos.

You might also like