Curso Básico de Microcontroladores PIC

download Curso Básico de Microcontroladores PIC

of 50

Transcript of Curso Básico de Microcontroladores PIC

  • Microcontroladores PIC. Teora

    CAPITULO 1 Introduccin a los Microcontroladores:

    1.1 Controlador y microcontrolador. 1.2 Diferencia entre microprocesador y microcontrolador. 1.3 Aplicaciones de los microcontroladores. 1.4 Principales familias de microcontroladores. 1.5 Arquitectura bsica. 1.6 Recursos especiales.

    CAPITULO 2 Los controladores PIC16F84:

    2.1 Caractersticas de la familia PIC16C(F)XX. 2.2 Microcontroladores PIC16C(F)84. 2.3 Hoja caracterstica de los PIC16C(F)84. 2.4 Diagrama de pines del PIC16C(F)84. 2.5 Organizacin de la memoria. 2.6 Definicin de los registros de funciones especiales (SFR). 2.7 Puertos del PIC16C(F)84. 2.8 Frecuencia de funcionamiento. 2.9 Temporizador/contador. 2.10 Memoria EEPROM de datos. 2.11 Interrupciones. 2.12 Reset.

    CAPITULO 3 Introduccin a la programacin :

    3.1 Cdigo fuente. 3.2 Normas.

    CAPITULO 4 Programacin de los controladores PIC :

    4.1 Introduccin. 4.2 Primeros pasos con el MPLAB. 4.3 El entorno de trabajo MPLAB.

    4.3.1 El ensamblador. 4.3.2 Creando un nuevo proyecto. 4.3.3 Ensamblado. 4.3.4 Simulacin bajo windows. 4.3.5 Otras opciones del MPLAB.

    CAPITULO 5 Programacin con el ICPROG :

    5.1 Configuracin para obtener el mejor rendimiento

    5.2 Pasos a seguir para la programacin. 5.3 Solucin de problemas.

  • 2

    1. INTRODUCCION A LOS MICROCONTROLADORES.

    Los microcontroladores estn conquistando el mundo. Estn presentes en nuestro trabajo,

    en nuestra casa y en nuestra vida, en general. Se pueden encontrar controlando el

    funcionamiento de los ratones y teclados de los computadores, en los telfonos, en los hornos

    microondas y los televisores de nuestro hogar. Pero la invasin acaba de comenzar y siglo XXI

    ser testigo de la conquista masiva de estos diminutos computadores, que gobernarn la mayor

    parte de los aparatos que fabricaremos y usamos los humanos.

    1.1 Controlador y microcontrolador.

    Recibe el nombre de controlador el dispositivo que se emplea para el gobierno de uno o

    varios procesos. Por ejemplo, el controlador que regula el funcionamiento de un horno dispone

    de un sensor que mide constantemente su temperatura interna y, cuando traspasa los lmites

    prefijados, genera las seales adecuadas que accionan los efectores que intentan llevar el valor

    de la temperatura dentro del rango estipulado.

    Aunque el concepto de controlador ha permanecido invariable a travs del tiempo, su

    implementacin fsica ha variado frecuentemente. Hace tres dcadas, los controladores se

    construan exclusivamente con componentes de lgica discreta, posteriormente se emplearon los

    microprocesadores, que se rodeaban con chips de memoria y E/S sobre una tarjeta de circuito

    impreso. En la actualidad, todos los elementos del controlador se han podido incluir en un chip,

    el cual recibe el nombre de microcontrolador. Realmente consiste en un sencillo pero completo

    computador contenido en el corazn (chip) de un circuito integrado.

    Un microcontrolador es un circuito integrado de alta escala de integracin que incorpora

    la mayor parte de los elementos que configuran un controlador.

    Un microcontrolador dispone normalmente de los siguientes componentes:

    Procesador o UCP (Unidad Central de Proceso).

    Memoria RAM para Contener los datos.

    Memoria para el programa tipo ROM/PROM/EPROM.

    Lneas de E/S para comunicarse con el exterior.

  • 3

    Diversos mdulos para el control de perifricos (temporizadores, Puertas Serie y

    Paralelo, CAD: Conversores Analgico/Digital, CDA: Conversores

    Digital/Analgico, etc.).

    Generador de impulsos de reloj que sincronizan el funcionamiento de todo el

    sistema.

    Los productos que para su regulacin incorporan un microcontrolador disponen de las

    siguientes ventajas:

    Aumento de prestaciones: un mayor control sobre un determinado elemento representa

    una mejora considerable en el mismo.

    Aumento de la fiabilidad: al reemplazar el microcontrolador por un elevado nmero de

    elementos disminuye el riesgo de averas y se precisan menos ajustes.

    Reduccin del tamao en el producto acabado: La integracin del microcontrolador en

    un chip disminuye el volumen, la mano de obra y los stocks.

    Mayor flexibilidad: las caractersticas de control estn programadas por lo que su

    modificacin slo necesita cambios en el programa de instrucciones.

    El microcontrolador es en definitiva un circuito integrado que incluye todos los

    componentes de un computador. Debido a su reducido tamao es posible montar el controlador

    en el propio dispositivo al que gobierna. En este caso el controlador recibe el nombre de

    controlador empotrado (embedded controller).

  • 4

    1.2 Diferencia entre microprocesador y microcontrolador.

    El microprocesador es un circuito integrado que contiene la Unidad Central de Proceso

    (UCP), tambin llamada procesador, de un computador. La UCP est formada por la Unidad de

    Control, que interpreta las instrucciones, y el Camino de Datos, que las ejecuta.

    Las patillas de un microprocesador sacan al exterior las lneas de sus buses de

    direcciones, datos y control, para permitir conectarle con la Memoria y los Mdulos de E/S y

    configurar un computador implementado por varios circuitos integrados. Se dice que un

    microprocesador es un sistema abierto porque su configuracin es variable de acuerdo con la

    aplicacin a la que se destine. (Figura 1.1.)

    Figura 1.1. Estructura de un sistema abierto basado en un microprocesador. La

    disponibilidad de los buses en el exterior permite que se configure a la medida de la aplicacin.

    Si slo se dispusiese de un modelo de microcontrolador, ste debera tener muy

    potenciados todos sus recursos para poderse adaptar a las exigencias de las diferentes

    aplicaciones. Esta potenciacin supondra en muchos casos un despilfarro. En la prctica cada

    fabricante de microcontroladores oferta un elevado nmero de modelos diferentes, desde los

    ms sencillos hasta los ms poderosos. Es posible seleccionar la capacidad de las memorias, el

    nmero de lneas de E/S, la cantidad y potencia de los elementos auxiliares, la velocidad de

    funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseo es la seleccin del

    microcontrolador a utilizar.

  • 5

    Figura 1.2. El microcontrolador es un sistema cerrado. Todas las partes del computador estn contenidas en su interior y slo salen al exterior las lneas que gobiernan los perifricos.

    1.3 Aplicaciones de los microcontroladores.

    Cada vez existen ms productos que incorporan un microcontrolador con el fin de

    aumentar sustancialmente sus prestaciones, reducir su tamao y coste, mejorar su fiabilidad y

    disminuir el consumo.

    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 utilizacin

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

  • 6

    1.4 Principales familias de microcontroladores.

    Los microcontroladores ms populares se encuentran, sin duda, entre las mejores

    elecciones:

    8048 (Intel). Es el padre de los microcontroladores actuales, el primero de todos. Su

    precio, disponibilidad y herramientas de desarrollo hacen que todava sea muy popular.

    8051 (Intel y otros). Es sin duda el microcontrolador ms popular. Fcil de programar,

    pero potente. Est bien documentado y posee cientos de variantes e incontables

    herramientas de desarrollo.

    80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los populares

    microprocesadores 8086 y 8088. Su principal ventaja es que permiten aprovechar las

    herramientas de desarrollo para PC.

    68HC11 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente y popular

    con gran cantidad de variantes.

    683xx (Motorola). Surgido a partir de la popular familia 68k, a la que se incorporan

    algunos perifricos. Son microcontroladores de altsimas prestaciones.

    PIC (MicroChip). Familia de microcontroladores que gana popularidad da a da.

    Fueron los primeros microcontroladores RISC.

    1.5 Arquitectura bsica

    Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clsica de

    von Neumann, en el momento presente se impone la arquitectura Harvard. La arquitectura de

    von Neumann se caracteriza por disponer 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).

  • 7

    La arquitectura Harvard dispone de dos memorias independientes una, que contiene slo

    instrucciones y otra, 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. Figura 1.3.

    Figura 1.3. La arquitectura Harvard dispone de dos memorias independientes para

    datos y para instrucciones, permitiendo accesos simultneos.

    Los microcontroladores PIC responden a la arquitectura Harvard.

    1.5.1 El procesador o UCP

    Es el elemento ms importante del microcontrolador y determina sus principales

    caractersticas, tanto a nivel hardware como software.

    Se encarga de direccionar la memoria de instrucciones, recibir el cdigo OP de la

    instruccin en curso, su decodificacin y la ejecucin de la operacin que implica la instruccin,

    as como la bsqueda de los operandos y el almacenamiento del resultado.

    Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores

    actuales.

    CISC: Un gran nmero de procesadores usados en los microcontroladores estn basados en la

    filosofa CISC (Computadores de Juego de Instrucciones Complejo). Disponen de ms de 80

    instrucciones mquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes,

    requiriendo muchos ciclos para su ejecucin.

    Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas

    que actan como macros.

  • 8

    RISC: Tanto la industria de los computadores comerciales como la de los microcontroladores

    estn decantndose hacia la filosofa RISC (Computadores de Juego de Instrucciones

    Reducido). En estos procesadores el repertorio de instrucciones mquina es muy reducido y

    las instrucciones son simples y, generalmente, se ejecutan en un ciclo.

    La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del

    procesador.

    SISC: En los microcontroladores destinados a aplicaciones muy concretas, el juego de

    instrucciones, adems de ser reducido, es especfico, o sea, las instrucciones se adaptan a

    las necesidades de la aplicacin prevista. Esta filosofa se ha bautizado con el nombre de

    SISC (Computadores de Juego de Instrucciones Especfico).

    1.5.2 Memoria

    En los microcontroladores la memoria de instrucciones y datos est integrada en el propio

    chip. Una parte debe ser no voltil, tipo ROM, y se destina a contener el programa de

    instrucciones que gobierna la aplicacin. Otra parte de memoria ser tipo RAM, voltil, y se

    destina a guardar las variables y los datos.

    Hay dos peculiaridades que diferencian a los microcontroladores de los computadores

    personales:

    1. No existen sistemas de almacenamiento masivo como disco duro o

    disquetes.

    2. Como el microcontrolador slo se destina a una tarea en la memoria

    ROM, slo hay que almacenar un nico programa de trabajo.

    La RAM en estos dispositivos es de poca capacidad pues slo debe contener las variables

    y los cambios de informacin que se produzcan en el transcurso del programa. Por otra parte,

    como slo existe un programa activo, no se requiere guardar una copia del mismo en la RAM

    pues se ejecuta directamente desde la ROM.

    Los usuarios de computadores personales estn habituados a manejar Megabytes de

    memoria, pero, los diseadores con microcontroladores trabajan con capacidades de ROM

    comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512 bytes.

  • 9

    Segn el tipo de memoria ROM que dispongan los microcontroladores, la aplicacin y

    utilizacin de los mismos es diferente. Se describen las cinco versiones de memoria no voltil

    que se pueden encontrar en los microcontroladores del mercado.

    1. ROM con mscara

    Es una memoria no voltil de slo lectura cuyo contenido se graba durante la fabricacin

    del chip. El elevado coste del diseo de la mscara slo hace aconsejable el empleo de los

    microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios

    miles de unidades.

    2. OTP

    El microcontrolador contiene una memoria no voltil de slo lectura programable una sola

    vez por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir el

    programa en el chip mediante un sencillo grabador controlado por un programa desde un PC.

    La versin OTP es recomendable cuando es muy corto el ciclo de diseo del producto, o

    bien, en la construccin de prototipos y series muy pequeas.

    Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptacin mediante

    fusibles para proteger el cdigo contenido.

    3 EPROM

    Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read

    OnIy Memory) pueden borrarse y grabarse muchas veces. La grabacin se realiza, como en el

    caso de los OTP, con un grabador gobernado desde un PC. Si, posteriormente, se desea borrar el

    contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM

    a rayos ultravioleta durante varios minutos. Las cpsulas son de material cermico y son ms

    caros que los microcontroladores con memoria OTP que estn hechos con material plstico.

  • 10

    4 EEPROM

    Se trata de memorias de slo lectura, programables y borrables elctricamente EEPROM

    (Electrical Erasable Programmable Read OnIy Memory). Tanto la programacin como el

    borrado, se realizan elctricamente desde el propio grabador y bajo el control programado de un

    PC. Es muy cmoda y rpida la operacin de grabado y la de borrado. No disponen de ventana

    de cristal en la superficie.

    Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito,

    pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello

    se usan grabadores en circuito que confieren una gran flexibilidad y rapidez a la hora de

    realizar modificaciones en el programa de trabajo.

    El nmero de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo

    que no es recomendable una reprogramacin continua. Son muy idneos para la enseanza y la

    Ingeniera de diseo.

    Se va extendiendo en los fabricantes la tendencia de incluir una pequea zona de memoria

    EEPROM en los circuitos programables para guardar y modificar cmodamente una serie de

    parmetros que adecuan el dispositivo a las condiciones del entorno.

    Este tipo de memoria es relativamente lenta.

    5 FLASH

    Se trata de una memoria no voltil, de bajo consumo, que se puede escribir y borrar.

    Funciona como una ROM y una RAM pero consume menos y es ms pequea.

    A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es ms rpida y

    de mayor densidad que la EEPROM.

    La alternativa FLASH est recomendada frente a la EEPROM cuando se precisa gran

    cantidad de memoria de programa no voltil. Es ms veloz y tolera ms ciclos de

    escritura/borrado.

  • 11

    Las memorias EEPROM y FLASH 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

    compresin, la instalacin de nuevas piezas, etc. La reprogramacin del microcontrolador puede

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

    1.5.4 Puertas de Entrada y Salida

    La principal utilidad de las patitas que posee la cpsula que contiene un microcontrolador

    es soportar las lneas de E/S que comunican al computador interno con los perifricos

    exteriores.

    Segn los controladores de perifricos que posea cada modelo de microcontrolador, las

    lneas de E/S se destinan a proporcionar el soporte a las seales de entrada, salida y control.

    1.5.5 Reloj principal

    Todos los microcontroladores disponen de un circuito oscilador que genera una onda

    cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronizacin de

    todas las operaciones del sistema.

    Generalmente, el circuito de reloj est incorporado en el microcontrolador y slo se

    necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de

    trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o

    bien un resonador cermico o una red R-C.

    Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las

    instrucciones pero lleva aparejado un incremento del consumo de energa.

    1.6 RECURSOS ESPECIALES

    Cada fabricante oferta numerosas versiones de una arquitectura bsica de

    microcontrolador. En algunas ampla las capacidades de las memorias, en otras incorpora

    nuevos recursos, en otras reduce las prestaciones al mnimo para aplicaciones muy simples, etc.

    La labor del diseador es encontrar el modelo mnimo que satisfaga todos los requerimientos de

    su aplicacin. De esta forma, minimizar el coste, el hardware y el software.

  • 12

    Los principales recursos especficos que incorporan los microcontroladores son:

    Temporizadores o Timers.

    Perro guardin o Watchdog.

    Proteccin ante fallo de alimentacin o Brownout.

    Estado de reposo o de bajo consumo.

    Conversor A/D.

    Conversor D/A.

    Comparador analgico.

    Modulador de anchura de impulsos o PWM.

    Puertas de E/S digitales.

    Puertas de comunicacin.

    1.6.1 Temporizadores o Timers

    Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de

    acontecimientos que suceden en el exterior (contadores).

    Para la medida de tiempos se carga un registro con el valor adecuado y a continuacin

    dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algn

    mltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso.

    Cuando se desean contar acontecimientos que se materializan por cambios de nivel o

    flancos en alguna de las patitas del microcontrolador, el mencionado registro se va

    incrementando o decrementando al ritmo de dichos impulsos.

  • 13

    1.6.2 Perro guardin o Watchdog

    Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa

    el botn del reset y se reinicializa el sistema. Pero un microcontrolador funciona sin el control

    de un supervisor y de forma continuada las 24 horas del da. El Perro guardin consiste en un

    temporizador que, cuando se desborda y pasa por 0, provoca un reset automticamente en el

    sistema.

    Se debe disear el programa de trabajo que controla la tarea de forma que refresque o

    inicialice al Perro guardin antes de que provoque el reset. Si falla el programa o se bloquea, no

    se refrescar al Perro guardin y, al completar su temporizacin, ladrar y ladrar hasta

    provocar el reset.

    1.6.3 Proteccin ante fallo de alimentacin o Brownout

    Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentacin

    (VDD) es inferior a un voltaje mnimo (brownout). Mientras el voltaje de alimentacin sea

    inferior al de brownout el dispositivo se mantiene reseteado, comenzando a funcionar

    normalmente cuando sobrepasa dicho valor.

    1.6.4 Estado de reposo de bajo consumo

    Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar,

    sin hacer nada, a que se produzca algn acontecimiento externo que le ponga de nuevo en

    funcionamiento. Para ahorrar energa, (factor clave en los aparatos porttiles), los

    microcontroladores disponen de una instruccin especial (SLEEP en los PIC), que les pasa al

    estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mnimos. En

    dicho estado se detiene el reloj principal y se congelan sus circuitos asociados, quedando

    sumido en un profundo sueo el microcontrolador. Al activarse una interrupcin ocasionada

    por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo.

    1.6.5 Conversor A/D (CAD)

    Los microcontroladores que incorporan un Conversor A/D (Analgico/Digital) pueden

    procesar seales analgicas, tan abundantes en las aplicaciones. Suelen disponer de un

    multiplexor que permite aplicar a la entrada del CAD diversas seales analgicas desde las

    patitas del circuito integrado.

  • 14

    1.6.6 Conversor D/A (CDA)

    Transforma los datos digitales obtenidos del procesamiento del computador en su

    correspondiente seal analgica que saca al exterior por una de las patitas de la cpsula. Existen

    muchos efectores que trabajan con seales analgicas.

    1.6.7 Comparador analgico

    Algunos modelos de microcontroladores disponen internamente de un Amplificador

    Operacional que acta como comparador entre una seal fija de referencia y otra variable que se

    aplica por una de las patitas de la cpsula. La salida del comparador proporciona un nivel lgico

    1 0 segn una seal sea mayor o menor que la otra.

    Tambin hay modelos de microcontroladores con un mdulo de tensin de referencia que

    proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores.

    1.6.8 Modulador de anchura de impulsos o PWM

    Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen

    al exterior a travs de las patitas del encapsulado.

    1.6.9 Puertas de E/S digitales

    Todos los microcontroladores destinan algunas de sus patitas a soportar lneas de E/S

    digitales. Por lo general, estas lneas se agrupan de ocho en ocho formando Puertas.

    Las lneas digitales de las Puertas pueden configurarse como Entrada o como Salida

    cargando un 1 un 0 en el bit correspondiente de un registro destinado a su configuracin.

    1.6.10 Puertas de comunicacin

    Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros

    dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y

  • 15

    poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos

    disponen de recursos que permiten directamente esta tarea, entre los que destacan:

    UART, adaptador de comunicacin serie asncrona.

    USART, adaptador de comunicacin serie sncrona y asncrona

    Puerta paralela esclava para poder conectarse con los buses de otros microprocesadores.

    USB (Universal Serial Bus), que es un moderno bus serie para los PC.

    Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.

    CAN (Controller Area Network), para permitir la adaptacin con redes de

    conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el

    cableado de dispositivos en automviles. En EE.UU. se usa el J185O.

  • 16

    2. LOS CONTROLADORES PIC16F84

    2.1 CARACTERISTICAS DE LA FAMILIA PIC16C(F)XX

    Un microcontrolador es un circuito integrado que posee todas las caractersticas de un

    computador completo. Puede ser programado para que cumpla una tarea determinada a muy

    bajo costo. Un ejemplo de ellos es el famoso PIC16F84 de la familia PIC16F8X.

    El PIC16F8X es un grupo en la familia PIC16CXX de bajo costo, alto rendimiento,

    CMOS de 8 bit entre otras cosas. Este grupo de PIC consta de los siguientes dispositivos:

    PIC16F83, PIC16F84, PIC16CR83 y el PIC16CR84. Todos los microcontroladores emplean

    una avanzada arquitectura RISC.

    Los dispositivos con memoria de programa permiten usar el mismo paquete (software)

    del dispositivo para el prototipo del circuito y para la produccin. El PIC en modo de

    reprogramacin del circuito permite que el cdigo de programa pueda ser puesto al da. Esto es

    til en el desarrollo de muchas aplicaciones donde el dispositivo no puede ser fcilmente

    accesible.

    Al elegir un microcontrolador, es mejor decidirse por el PIC16F8X, el cual posee un

    sistema de identificacin de producto de la siguiente manera:

    1. - F, como en el PIC16F84. Estos dispositivos tienen memoria de programa Flash y operan

    encima del rango de voltaje normal.

    2. - LF, como en el PIC16LF84. Estos dispositivos tienen memoria de programa Flash y operan

    encima de un rango de voltaje extendido.

    3. - CR, como en el PIC16CR83. Estos dispositivos tienen memoria de programa ROM y

    operan encima del rango de voltaje normal.

    4. - LCR, como en el PIC16LCR84. Estos dispositivos tienen memoria de programa ROM y

    operan encima de un rango de voltaje extendido.

    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:

    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 puede ser de 12 o 14 bits y su set de instrucciones es de

    33 o 35 instrucciones respectivamente.

    Gama Baja: PIC16C5X de 18 y 28 pines, con instrucciones de 12 bits. Estos PIC, pueden alimentarse a partir de una tensin de 2,5 V, 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.

    Gama media: PIC16CXXX de 18 hasta 68 pines, Es una gama muy variada y completa, donde se encuentra el PIC mas usado que es el PIC16C(F)84; (C = Memoria EEPROM; F =

    Memoria FLASH). 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.

  • 17

    Esta gama se clasifica en las siguientes subfamilias:

    a) Gama media estndar (PIC16C55X)

    b) Gama media con comparador analgico (PIC 16C62x/64X/66X)

    c) Gama media con mdulos de captura (CCP), modulacin de anchura de impulsos (PWM) y

    puerto serial (PIC16C6X)

    d) Gama media con ADC de 8 bits (PIC16C7X)

    e) Gama media con memoria Flash y EEPROM ( PIC 16X8X)

    f) Gama media con driver LCD (PIC 16C92X)

    g) Gama media PIC 14C000, soporta el diseo de controladores inteligentes para cargadores de

    bateras, bateras pequeas, fuentes de alimentacin ininterrumpibles y cualquier sistema de

    adquisicin y procesamiento de seales que requieran gestin de la energa de alimentacin.

    Gama alta: PIC17CXXX, los hay de 40 hasta 68 pines, alcanzan las 58 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.

    La caracterstica ms destacable de estos microcontroladores es su arquitectura abierta,

    que consiste en la posibilidad de ampliacin con elementos externos. Para tal fin, los pines

    sacan al exterior las lneas de los buses de datos, direcciones y control, a las que se conectan

    memorias o controladores perifricos. Esta filosofa de construccin del sistema es la que se

    emplea en los Microprocesadores y no suele ser habitual cuando se emplean

    microcontroladores.

    2.2 MICROCONTROLADOR PIC16C(F)84

    Es un microcontrolador de 18 pines, de 8 bits con tecnologa CMOS. La razn porque

    se ha elegido este tipo de microcontrolador se debe al tipo de memoria de programa que posee.

    En el caso del PIC 16F84 se trata de una memoria EEPROM de 1K palabras de 14 bits cada

    una. El PIC 16F84 tiene la misma capacidad de memoria de instrucciones, pero de tipo flash.

    Ambos disponen de 64 bytes de EEPROM como memoria de datos auxiliar y opcional.

    La memoria EEPROM y la Flash son elctricamente gravables, lo que permite escribir y borrar el programa bajo prueba manteniendo el microcontrolador en el mismo zcalo y usando el mismo dispositivo para grabar y borrar. Esta caracterstica supone una gran ventaja con la

    mayora de los microcontroladores, que tienen como memoria de programa reescribible una tipo

    EPROM. Estas se graban elctricamente, pero para borrarlas hay que someterlas durante cierto

    tiempo a rayos ultravioleta, lo que implica sacar del zcalo el circuito integrado y colocarlo en

    un borrador de EPROM. El hecho de utilizar una memoria flash es porque tiene mayores

    posibilidades de aumentar su capacidad con relacin a la EEPROM. Tambin por su mayor

    velocidad y menor consumo. La memoria EEPROM es capaz de soportar 1.000.000 de ciclos de

    escritura / borrado, frente a los 1.000 de la Flash.

  • 18

    2.3 HOJA CARACTERSTICA DE LOS PIC16C(F)84:

    - MEMORIA DE PROGRAMA: 1K x 14, EEPROM (16C84) Y Flash (16F84)

    - MEMORIA DE DATOS RAM: 36 Byte (16C84) y 68 Byte (16F84)

    - MEMORIA DE DATOS EEPROM: 64 Byte para ambos modelos

    - PILA (STACK): De 8 niveles

    - INTERRUPCIONES: 4 tipos diferentes

    - SET DE INSTRUCCIONES: 35

    - ENCAPSULADO: 18 PINES

    - FRECUENCIA DE TRABAJO: 10 Mhz mxima

    - TEMPORIZADORES: TMR0 y WDT

    - LINEAS DE E/S DIGITALES: 13 (5 Puerto A y 8 Puerto B)

    - CORRIENTE MXIMA ABSORBIDA: 80 mA Puerto A y 150 mA Puerto B

    - CORRIENTE MXIMA SUMINISTRADA: 50 mA Puerto A y 100 mA Puerto B

    - CORRIENTE MXIMA ABSORBIDA POR LINEA: 25 mA

    - CORRIENTE MXIMA SUMINISTRADA POR LINEA: 20 mA

    - VOLTAJE DE ALIMENTACIN (Vdd): De 2 a 6V DC

    - VOLTAJE DE GRABACIN (Vpp): De 12 a 14V DC

    2.4 DIAGRAMA DE PINES DEL PIC16C(F)84:

    Vdd: Pin por el cual se aplica la tensin positiva de Alimentacin

    Vss: Pin utilizado para la conexin de tierra

    OSC1 / CLKIN: Pin por el cual se aplica la entrada del circuito oscilador externo que proporciona la frecuencia de trabajo al Microcontrolador

    OSC2 / CLKOUT: 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

    hay que colocarle una resistencia a Vcc (5V DC).

    El pin 3 adems de ser el bit mas significativo del Puerto A, Multiplexa otra funcin

    expresada por TOCKI. En este caso sirve para recibir una frecuencia externa para alimentar al

    temporizador interno TMR0.

  • 19

    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.

    2.5 ORGANIZACIN DE LA MEMORIA DEL PIC16C(F)84

    En este Microcontrolador hay dos bloques 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. La Memoria de datos (RAM) se

    divide en registros de propsito general (GPR) y registros de Funciones especiales (SFR). Los

    registros SFR tienen como operacin principal controlar el ncleo del microcontrolador y

    mdulos perifricos y los de Propsito General (GPR) son registros que el programador declara

    a su conveniencia para utilizarlos en alguna parte de un programa.

    La Memoria de Programa es de 1K x 14 bits de tipo EEPROM para el PIC16C84 y de tipo Flash

    para el PIC16F84. Adems el PIC16C84 tiene 36 Bytes disponibles en la memoria de datos

    RAM en la zona de los registros de propsito general y el PIC16F84 tiene 68 Bytes.

    MEMORIA DE PROGRAMA

    Los microcontroladores PIC16C84 y PIC16F84, admiten un mapa de memoria de

    programa capaz de contener 8.192 instrucciones de 14 bits cada una. Este mapa se divide en

    pginas de 2.048 posiciones. Para direccionar 8 K posiciones se necesitan 13 bits, que es la

    longitud del Contador de Programa de estos dos microcontroladores (PC). Sin embargo, el

    PIC16C84 slo tiene implementadas 1K posiciones, por lo que ignora los 3 bits de ms peso del

    PC. Esto es debido a: 1K=1024 Byte= 2 . Por lo tanto solo se tienen 10 lneas de direccin para

    acceder a una palabra de memoria.

    La direccin 0000H esta reservada para el vector de Reset y la 0004H para el vector de

    interrupcin. Adems posee una pila de 8 niveles que permiten el anidamiento de subrutinas.

    Es importante destacar que cada Microcontrolador posee una memoria de Programa especifica.

  • 20

    MEMORIA DE DATOS DEL PIC16C(F)84

    Esta memoria dispone de dos zonas diferentes las cuales son:

    rea de RAM esttica o SRAM: Es aquella donde residen los registros de funciones especificas

    (SFR) y los registros de propsito general (GPR). El primero tiene 24 posiciones de 1 byte cada

    una, aunque dos de ellas no son operativas, y el segundo 36 en el caso del PIC16C84 y 68 en el

    PIC16F84.

    rea EEPROM de 64 bytes: Esta se utiliza opcionalmente cuando se necesitan almacenar datos

    que deben mantenerse cuando la alimentacin se desconecte.

    La Memoria SRAM se divide en dos bancos (banco 0 y banco 1) en el caso de los

    microcontroladores PIC16C(F)84 de 128 bytes cada uno. En el PIC16C84 slo se hallan implementadas fsicamente las 48 primeras posiciones de cada banco, de las cuales las 12

    primeras estn reservadas para los registros SFR, que son los encargados del control del

    procesador y sus recursos. Algunos de dichos registros se hallan repetidos en la misma direccin

    de los dos bancos, para simplificar su acceso (INDF, ESTADO(STATUS), FSR, PCLATH E

    INTCON). Los 36 registros restantes en el caso del PIC16C84 y los 68 en el PIC16F84 de cada

    banco estn destinados a los registros GPR y en general solo son operativos los 36 o 68 del

    banco 0 porque los del banco 1 se mapean sobre el banco 0, es decir, cuando se apunta a un

    registro general del banco 1, se accede al mismo del banco 0.

  • 21

    2.6 DEFINICIN DE LOS REGISTROS DE FUNCIONES ESPECIALES (SFR):

    - STATUS: Es el registro ms usado y ocupa la direccin 3 tanto del banco 0 como del banco 1

    de la memoria de datos RAM, en el caso de los microcontroladores PIC16C(F)84. Sus bits

    tienen tres misiones distintas como lo son: Avisar las incidencias del resultado de la ALU (C,

    DC y Z), indicar estado de Reset ( y ) y seleccionar el banco a acceder en la memoria de datos

    (IRP, RP0 y RP1).

    En la siguiente figura se muestra el diagrama de distribucin de los bits del registro de Estado.

    R/W R/W R/W R R R/W R/W R/W

    IRP RP1 RP0 TO# PD# Z DC C

    bit7 bit0

    Direccin: 03h

    bit 7:.............IRP: Seccin del banco en direccionamiento indirecto. En el PIC16X84 no se usa

    este bit y debe programarse como 0.

    ....................0 = Banco 0, 1 (00h - FFh)

    ....................1 = Banco 2, 3 (100h - 1FFh)

    bit 6-5:..........RP1-RP0: Seleccin de banco en direccionamiento directo. Como el PIC16X84

    slo tiene dos.bancos solamente usamos el bit RP0.

    ....................00 = Banco 0 (00h - 7Fh)

    ....................01 = Banco 1 (80h - FFh)

    ....................10 = Banco 2 (100h - 17Fh)

    ....................11 = Banco 3 (180h - 1FFh)

    bit 4:.............TO#: Time Out

    ....................1 = Se pone a 1 despus de la conexin de la fuente de poder o al ejecutarse las

    instrucciones.clrwdt y sleep.

    ....................0 = Ocurre cuando el Perro Guardin (Watchdog) se desborda.

    bit 3:.............PD#: Power Down

    ....................1 = Cuando se conecta la alimentacin se pone a 1, o al ejecutar clrwdt.

    ....................0 = Cuando se ejecuta la instruccin Sleep se pone a 0.

  • 22

    bit 2:............Z: Cero

    ....................1 = Cuando el resultado de una instruccin lgico-aritmtica ha sido cero.

    ....................0 = Cuando el resultado de una instruccin lgico-aritmtica no ha sido cero.

    bit 1:.............DC: Acarreo Llevada en el cuarto bit.

    ....................1 = Indica que se ha producido un acarreo pero refirindose al cuarto bit.

    ....................0 = No se ha producido ningn acarreo.

    bit 0: ...........C : Acarreo en el bit de ms peso.

    ....................1 = Indica que se ha producido un acarreo en el bit de ms peso al ejecutar addwf y

    addlw.

    ....................0 = No se ha producido ningn acarreo.

    IRP: Seleccin de Banco en direccionamiento indirecto

    Este bit junto con el de ms peso del registro FSR sirve para determinar el banco de la memoria

    de datos seleccionado. El PIC16C(F)84 al disponer de dos bancos no se utiliza este bit y debe

    programarse como cero.

    RP1-RP0: Seleccin de banco en direccionamiento directo Como el PIC16C(F)84 solo tiene dos bancos emplea el bit RP0 de la forma siguiente:

    1: Cuando RP0 es 1 se accede al Banco 1

    0: Cuando vale 0 se accede al Banco 0

    Despus de un RESET RP0 es igual a cero.

    RP1 RP0 Banco

    0 0 Banco 0

    0 1 Banco 1

    1 0 No Existe

    1 1 No Existe

    Como se puede apreciar en la tabla, RP1 siempre es cero en estos Microcontroladores.

    PD: Power Down 1: Se pone automticamente a 1 despus de la conexin de la alimentacin al microcontrolador

    o al ejecutar la instruccin de limpiado del WDT.

    0: : Se pone automticamente a 0 mediante la ejecucin de la instruccin que deja en stanbay al

    microcontrolador (SLEEP).

  • 23

    TO: Time Out 1: Se pone automticamente a 1 despus de la conexin de la alimentacin al microcontrolador

    o al ejecutar la instruccin de limpiado del WDT o al colocar al microcontrolador en Stanbay,

    mediante la instruccin SLEEP.

    0: Se pone automticamente a 0 cuando se produce el desbordamiento del

    WDT.

    Z: Cero 1: Indica que el resultado de una operacin aritmtica o lgica ha sido cero

    0: Indica que el resultado de una operacin aritmtica o lgica no ha sido cero

    DC: Acarreo llevado en el cuarto bit

    Funciona igual que C, pero refirindose al cuarto bit, de inters en operaciones en BCD.

    C: Acarreo llevado en el bit de mas peso 1: Cuando esta bandera vale 1 indica que se ha producido un acarreo en el bit de mas peso del

    resultado de una operacin aritmtica o lgica, tambin sirve para indicarnos cuando se ha

    producido un prstamo en el caso de una resta.

    0: Indica que no hay acarreo o prstamo en el caso de la resta.

    2.7 PUERTOS DEL MICROCONTROLADOR PIC16C(F)84:

    Los microcontroladores PIC16C(F)84 solo poseen dos Puertos de E/S, denominados

    Puerto A y Puerto B, estos permiten la comunicacin con el mundo exterior, en ellos podremos

    conectar los perifricos o circuitos necesarios como por ejemplo los Mdulos LCD, motores

    elctricos, etc; pero estas conexiones no se podrn realizar arbitrariamente; es decir, existen

    unas reglas bsicas que debern cumplirse para que el microcontrolador no sufra daos o se

    destruya. Todo el truco esta en Configurar los Puertos lo cual consiste en indicarle al

    microcontrolador que bit de estos, van a ser entrada y cuales van a ser salida, adems de conocer

    los limites de corriente que puede manejar el microcontrolador.

    Cada lnea de E/S puede configurarse independientemente como entrada o como salida,

    segn se ponga a 1 o a 0, respectivamente, el bit asociado del registro de configuracin de cada

    puerto los cuales son (TRISA Y TRISB).

    Se llaman PUERTO A y PUERTO B, a los registros que guardan la informacin que entra o

    sale por el Puerto y ocupan las direcciones 5 y 6 del Banco 0 de la memoria de datos.

    Los Registros de configuracin TRISA y TRISB ocupan las mismas direcciones que

    los Puertos pero en el banco 1, en el caso de los microcontroladores PIC16C(F)84. Esto se

    ilustra en la memoria de datos. Estos registros se utilizan para guardar el valor de la

    configuracin.

    Al reinicializarse el PIC todos los bits de los registros TRIS quedan a 1, con lo que los

    bits de los Puertos quedan configurados como entradas.

    En el caso del Puerto B, todos sus bits permiten conectarse con una resistencia Pull - Up

    de elevado valor con el positivo de la alimentacin. Esto es programado con un registro que se

    explicara mas adelante llamado OPTION, cuando se aplica un RESET se desactivan las

    resistencias Pull - Up.

  • 24

    PUERTO A Y TRISA: 1 = Entrada 0 = Salida

    Ejemplo:

    Si TRISA = 11001, indica que el bit menos significativo y los dos ltimos del Puerto A sern

    entradas y los otros dos como estn en cero sern salidas

    PUERTO B Y TRIS B:

    1 = Entrada 0 = Salida

    Ejemplo:

    Si TRISB= 11100001, indica que el bit menos significativo y los tres ltimos del Puerto B sern

    entradas y los otros cuatro como estn en cero sern salidas.

    2.8 FRECUENCIA DE FUNCIONAMIENTO (RELOJ):

    La frecuencia de funcionamiento es aquella que establece la velocidad a la cual se

    realizaran las instrucciones (fosc). La mxima frecuencia utilizable de un PIC16C(F)84 es de 10

    MHz, por lo tanto le corresponde un ciclo de instruccin de 400 nsg. Esto debido a que cada

    instruccin tarda en ejecutarse cuatro periodos de reloj, es decir 4 x 100 nsg = 400 nsg. Todas

    las instrucciones del PIC se realizan en un ciclo de instruccin, menos las de salto, que tardan el

    doble.

    Los impulsos de reloj entran por el pin OSC1 / CLKIN y se dividen por cuatro

    internamente, dando lugar a las seales Q1,Q2,Q3 y Q4, (fosc/4).

    Durante un ciclo de instrucciones que comprende las cuatro seales antes mencionadas se

    desarrollan las siguientes operaciones:

    Q1: Durante este pulso se incrementa el contador de programa

    Q2: Durante este impulso se busca el cdigo de la instruccin en la memoria de programa y se

    carga en el registro de instrucciones.

    Q3: Decodificacin de la instruccin

    Q4: Ejecucin de la instruccin.

    2.9 TMR0 (TEMPORIZADOR / CONTADOR):

    En los Microcontroladores el temporizador "timer" consiste en un contador ascendente

    que se le carga con un valor determinado y produce un desbordamiento cuando pasa por cero.

    Evidentemente el tiempo transcurrido desde que se le cargo un valor, hasta que se produce el

    desbordamiento, es inversamente proporcional al valor cargado debido a que el contador ira

    incrementando su valor hasta llegar a cero.

    Los PIC16C(F)84 disponen de un temporizador / Contador de 8 bits llamado TMR0,

    que se encuentra en la posicin 01h del banco 0, el cual sirve para determinar intervalos

    concretos de tiempo (temporizador) o para contar los impulsos que se producen en el exterior

    del sistema (contador).

  • 25

    Cuando TMR0 funciona como contador de sucesos, este se incrementa por los impulsos

    aplicados al pin RA4/TOCKI. Al llegar el valor a FFh se desborda el contador y con el siguiente

    impulso pasa a 00H, advirtiendo esta circunstancia, activando un sealizador y/o provocando

    una interrupcin.

    Como temporizador TMR0, se incrementa con cada ciclo de instruccin (Fosc/4) hasta que se

    desborda. activando un sealizador y/o provocando una interrupcin.

    Debido a que TMR0, cuando actua como temporizador necesita controlar largos

    intervalos de tiempo, necesita aumentar la duracin de los impulsos de reloj que les incrementa.

    Para cubrir este requisito el PIC16C(F)84 dispone de un circuito denominado Divisor de

    Frecuencia, que divide la frecuencia utilizada por diversos rangos.

    Para programar el comportamiento del TMR0 y el Divisor de frecuencia se utilizan

    algunos bits del registro OPTION. El divisor de Frecuencia puede usarse con el TMR0 actuando

    como pre-divisor, es decir los impulsos pasan primero por el divisor y luego por el TMR0 una vez aumentada su duracin.

    Para calcular los tiempos a controlar con TMR0 se utilizan las siguientes formulas practicas:

    Temporizacin = 4 x Tosc x ( Valor en TMR0) x Rango del divisor

    Valor en TMR0 = Temporizacin / 4 x Tosc x Rango del divisor.

    Tosc = Tiempo del oscilador = 1 / Fosc.

    -OPTION

    Este registro controla TMR0 y el Divisor de frecuencia, ocupa la posicin 81h de la memoria de

    datos que equivale a la direccin 01h del banco 1.

    RBPO# INTEDG TOCS TOSE PSA PS2 PS1 PS0

    bit7 bit0

    Direccin: 81h

    bit 7:.............RBPO#: Resistencias Pull-Up Puerto B

    ....................0 = Activadas

    ....................1 = Desactivadas

    bit 6:.............INTEDG: Flanco activo de interrupcin externa.

    ....................0 = Flanco Descendente

    ....................1 = Flanco Ascendente

    bit 5:.............TOCS: Tipo de reloj para el TMR0

    ....................1 = Pulsos introducidos a travs de TOCKI (contador)

    ....................0 = Pulsos de reloj interno Fosc/4 (temporizador)

    bit 4:.............TOSE: Tipo de Flanco en TOCKI

  • 26

    ....................1 = Incremento de TMR0 cada flanco descendente.

    ....................0 = Incremento de TMR0 cada flanco ascendente..

    bit 3:............ PSA: Asignacin del divisor de frecuencias.

    ....................1 = El divisor de frecuencias se le asigna al WDT.

    ....................0 = El divisor de frecuencias se le asigna al TMR0.

    bit 2 - bit 0:...PS2 - PS0: Valor con el que acta el Divisor de frecuencia.

    PS2...........PS1............PS0......................Divisin del TMR0.................Divisin del WDT

    ..0...............0.................0..................................1:2......................................1:1

    ..0...............0.................1..................................1:4......................................1:2

    ..0...............1.................0..................................1:8......................................1:4

    ..0...............1.................1..................................1:16....................................1:8

    ..1...............0.................0..................................1:32....................................1:16

    ..1...............0.................1..................................1:64....................................1:32

    ..1...............1.................0..................................1:128..................................1:64

    ..1...............1.................1..................................1:256..................................1:128

    2.10 MEMORIA EEPROM DE DATOS

    Los PIC16C(F)84 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 1.000.000 de ciclos de escritura / borrado y es capaz de guardar

    la informacin si alterarla ms de 40 aos.

    Este bloque de memoria no se encuentra mapeado en ningun banco, el acceso a esas

    posiciones se consigue a travs de dos registros SFR de la RAM.

    - EEADR: Contiene la direccin de la posicin de la EEPROM a ser accesada, esta ubicado en

    la posicin 9 del banco 0, los dos bits de mas peso de este registro siempre valen 0.

    - EEDATA: Contiene el dato de 8 bits que se va a escribir o el que se obtuvo de la ultima

    lectura, esta ubicado en la posicin 8 del banco 0.

    Existen adems dos registros de control EECON1 que maneja las operaciones de lectura y

    escritura y posee 5 bits, este se ubica en la direccin 88h de la memoria de datos o la direccin 8

    del banco 1.

  • 27

    EECON2 que aunque no es un registro fsico es necesario para realizar las operaciones de

    escritura. Al leerlo todos sus bits son 0. Solo se emplea como un dispositivo de seguridad

    durante el proceso de escritura de la EEPROM, para evitar las interferencias en el largo

    intervalo que precisa su desarrollo.

    La lectura toma un ciclo de reloj de instrucciones (1 micro segundo, con un oscilador de

    4 Mhz), mientras que la escritura por ser controlada por un temporizador incorporado, tiene un

    tiempo nominal de 10 msg, esto resulta muy largo para la velocidad del procesador. Debido a esto existen varios bits en el registro EECON1 para supervisar esta tarea.

    Cuando se va a utilizar una operacin de escritura se hace primero la operacin de borrado.

    U U U EEIF WRWRR WREN WR RD

    bit7 bit0

    Direccin: 88h

    bit 7 - bit 5.....No implementadas. Estos bits se leen como cero.

    bit 4:.............EEIF: Bandera de finalizacin de la escritura.

    bit 3:............ WRWRR: Bandera de error de escritura.

    ....................Se coloca en uno cuando la operacin de escritura termina prematuramente,

    ....................debido a cualquier condicin de reset.

    bit 2:... ........ WREN: Habilitacin de escritura.

    ....................Si se coloca en cero no permite las operaciones de escritura, en "1" habilita.

    bit 1:... ........ WR: Control de escritura.

    ................... Al colocarse en "1" inicia un ciclo de escritura.

    ....................El bit es slo puesto a cero por hardware, una vez la escritura termina.

    bit 0:... ........ RD: Control de Lectura.

    ....................Al colocarse en "1" se inicia una lectura de la EEPROM de datos, la cual toma un

    ciclo de reloj de instrucciones.

    2.11 INTERRUPCIONES

    Son desviaciones del flujo de control del programa originadas Asincrnicamente por diversos sucesos de mayor prioridad, que no se hallan bajo la supervisin de las instrucciones.

  • 28

    Estos sucesos pueden ser externos al sistema, como la generacin de un flanco activo en un pin

    del microcontrolador, o bien internos, como el desbordamiento de un contador.

    El Microcontrolador ante las interrupciones detiene la ejecucin del programa en curso,

    salva la direccin actual del PC en la pila y se carga al PC con una direccin, que en este caso es

    una direccin reservada de la memoria de Programa llamada vector de interrupcin.

    En Dicho vector se suele colocar una instruccin de salto incondicional (Goto) que

    traslada el flujo de control a la zona de la memoria de Programa destinada a contener la rutina

    de servicio a la interrupcin.

    Una de las operaciones principales de la rutina de servicio de interrupcin, es averiguar

    cual es la causa de la interrupcin en curso. Para ello se exploran los sealizadotes de las fuentes

    de interrupcin que se encuentran en el registro INTCON. Adems este registro en los PIC16C(F)84 posee un bit llamado GIE (Global Interrupt Enable) que cuando vale 0 prohibe todas las interrupciones. Una vez activado la Rutina de servicio de interrupcin el bit GIE se

    pone automticamente a 0 para no atender nuevas interrupciones, hasta que termine la que ha

    comenzado.

    Antes del retorno conviene borrar el sealizador de la causa de interrupcin, que se ha

    atendido ya que aunque los sealizadores se ponen a 1 automticamente, en cuanto se produce

    la causa que indican la puesta a 0 se debe hacer por software.

    CAUSAS DE INTERRUPCION

    Los PIC16C(F)84 tienen cuatro causas o fuentes de interrupcin

    1 Activacin del pin RB0 / INT

    2 Desbordamiento del Temporizador TMR0

    3 Cambio de estado en uno de los pines de mas peso (RB7 - RB4) del Puerto B.

    4 Finalizacin de la escritura en la EEPROM de datos.

    - INTCON Es aquel que contiene la mayor parte de los sealizadores y bits de permiso de las fuentes de

    interrupcin, ocupa la direccin 0bh del banco 0, duplicndose en el banco 1.

    GIE EEIE TOIE INTE RBIE TOIF INTF RBIF

    bit7 bit0

    Direccin: 0Bh

    bit 7:.............GIE: Habilitador general de interrupciones.

    ....................0 = Deshabilita todas las interrupciones

    ....................1 = Habilita las interrupciones

    bit 6:.............EEIE: Habilitacin de interrupcin por escritura de la EEPROM.

    ....................0 = La deshabilita .1 = La habilita

  • 29

    bit 5:.............TOIE: Habilitacin de la interrupcin del temporizador TMR0.

    ....................0 = Deshabilita

    ....................1 = Habilita

    bit 4:.............INTE: Habilita la interrupcin INT

    ....................0 = Deshabilita

    ....................1 = Habilita

    bit 3:............ RBIE: Habilitacin de la interrupcin RBIF.

    ....................0 = Deshabilita.

    ....................1 = Habilita

    bit 2:... ........ TOIF: Bandera de interrupcin por sobrepasamiento del TMR0.

    ....................Se coloca en 1 cuando TMR0 pasa de 0FFh a 00H, sta debe ser puesta en cero por

    el programa.

    bit 1:... ........ INTF: Bandera de interrupcin INT.

    ....................Se coloca en 1 cuando la interrupcin INT (RB0) ocurre; sta debe ser puesta en

    cero por el programa.

    bit 0:... ........ RBIF: Bandera de interrupcin por el cambio en el puerto RB.

    ....................Se coloca en 1 cuando una de las entradas RB(4:7) cambia, sta debe ser puesta en

    cero por el programa.

    2.12 RESET

    Los PIC16C(F)84 tienen cinco causas que provocan el reset del sistema. Dicho reset consiste en

    cargar al PC con la posicin del Vector de Reset y poner el estado de los bits de los registros

    SFR con un valor conocido.

    CAUSAS DE RESET

    1 Conexin de la alimentacin POR (Power On Reset)

    2 Activacin del Pin MCLR# (# significa complementado) en funcionamiento normal.

    3 Activacin del pin MCLR# en estado de reposo.

    4 Desbordamiento del perro Guardin en funcin normal.

    5 Desbordamiento del perro Guardin en estado de reposo.

  • 30

    3. INTRODUCCIN A LA PROGRAMACIN

    Antes de realizar cualquier programa para un microcontrolador hay que tener al menos

    unas ligeras nociones de que estamos haciendo.

    Debemos seguir una pequea serie de rutinas hasta que el programa que pretendemos

    crear se transforma en un programa ejecutable en formato .hex que pueda ser cargado en el

    micro.

    Lo primero es dibujar el programa en una hoja en blanco trazando con lneas y cuadros de dialogo las rutinas, ordenes, tiempos, lgicas, etc. que tendr el programa.

    Dibujar el programa antes de escribir ni una sola lnea de cdigo, dibujar hasta los componentes perifricos que se acoplaran al micro, trazar fsicamente las lneas de unin y las

    rutinas lgicas (si/no) y los cuadros de dialogo de los perifricos y de las memorias del micro.

    Depurar este paso hasta la saciedad. Todo el tiempo que utilicemos en disear correctamente el programa nos lo ahorraremos luego en tiempo de programacin, y en errores.

    Bueno ya tenemos el diseo en papel de lo que queremos hacer, para seguir ahora

    necesitamos una herramienta muy practica que suministra Microchip en su pagina WEB este

    producto es el MPLAB que es un editor de programas que permite su ejecucin y finalmente la

    confeccin del programa en fichero ejecutable en formato Intel Hex que se puede cargar en la

    memoria del micro.

    3.1 Cdigo Fuente:

    Entremos directamente en el programa, cuando se edite el programa nos encontraremos

    con comentarios, directivas y el programa propiamente dicho, todo ello en cinco columnas, estas

    son:

    COMENTARIOS

    DIRECTIVAS

    CINCO COLUMNAS:

    1) Numeracin de las filas

    2) Campo de etiquetas

    3) Campo de instrucciones

    4) Campo de datos

    5) Campo de comentarios

    Esquemticamente quedara as:

  • 31

    Numeracin

    filas

    campo etiquetas campo

    instrucciones

    campo datos campo

    comentarios

    0001 ;COMENTARIOS

    0002 ;COMENTARIOS

    0003 directivas-> LIST P=16F84

    0004 directivas-> LIST B=25

    0005 PTB_TSB EQU 0x06 ;Comentario

    0006 PTA_TSA EQU 0X05 ;Comentario

    Primero colocaremos los COMENTARIOS oportunos al programa, indicando todos

    aquellos datos que consideremos dignos de resaltar en relacin al programa que seguir, estos

    datos que no afectan al programa deben de ir presididos cada lnea por el signo punto y raya (;),

    este signo le dice al programa que lo que sigue no es ejecutable y no forma parte alguna de las

    instrucciones.

    Luego siguen una serie de DIRECTIVAS que dan instrucciones al ensamblador, cada

    ensamblador tiene sus propias directivas y se deben de tener en cuenta al programar. La

    expresin tpica empieza por la expresin LIST esta expresin se considera como un Campo de

    instruccin y esta en la columna 3 y sus variables estn en el Campo de datos o columna 4.

    Algunas de estas directivas son:

    B= tamao de los tabuladores

    C= numero de caracteres por lnea

    P= tipo de procesador a emplear

    R= Base de numeracin

    W= Mensajes de salida

    Columnas:

    La primera columna o de numeracin de filas no es mas que un simple listado

    correlativo de la posicin que ocupa la fila en el programa,

    La segunda columna o Campo de etiquetas van los nombres las variables definidas y los

    nombres de los distintos subprogramas que conforman el programa definitivo. Se puede utilizar

    cualquier tipo de caracteres alfanumricos y emplear el carcter de subrayado (_) ejemplo:

    Bucle_1

    La tercera columna o Campo de instrucciones debe de ir una instruccin del micro o

    mnemnico.

    La cuarta columna o Campo de datos contiene los operandos para el campo de

    instrucciones, algunas instrucciones pueden no llevar datos, por ejemplo la instruccin "nop".Si

    es un numero puede estar definido de diversas formas segn la base en la que se exprese, cada

    tipo de base en el cual se expresa este dato tiene su correspondiente clave en el momento de la

  • 32

    escritura, tambin algunas instrucciones pueden necesitar varios datos en este caso los datos se

    separan por coma (,).

    La quinta columna o Campo de Comentarios, como al inicio este campo esta despus

    de las instrucciones y empiezan por punto y coma. Pueden tener varias filas aunque siempre en

    cada fila deben empezar por punto y coma y es aconsejable que aunque no hay nada delante de

    la columna este campo este en la columna correspondiente a los comentarios.

    Ejemplo de todo lo anterior en un programa.

    Campo

    numeracin Campo etiqueta

    Campo

    instruccin

    Campo

    datos Campo comentarios

    0001 ;--------------------

    0002 ;ejemplo

    0003 ;xtal 4Mhz WDT- NO

    0004 ;-------------------

    0005

    0006 LIST P=16F84 ;micro 16F84

    0007 LIST C=132 ;listado 132

    0008 ;--------------------- Separacin para clarificar

    0009 PRTB_TSB EQU 0x06 ;direccin Pta B y TrisB

    0010 ESTADO EQU 0x03 ;direccin Estado

    0011 ;Direcciones de inicio y retorno

    0012 ORG 0x00 ;Vector Reset

    0013 GOTO Inicio ;Comienzo programa

    0014 ORG 0x05 ;Posicin despus del

    0015 ;vector de interrupcin

    0016 Inicio BSF ESTADO,5 ;Ir al Banco 1

    0017

    etc. etc.

    Los comentarios en los programas son muy importantes dado que ayudan al

    programador a seguir los pasos que ha dado en su programa, aclara el sentido de las

    instrucciones y con el tiempo facilita la posibilidad de correcciones y modificaciones que

    mejoren el programa.

    3.2 Normas

    En este tipo de programas para que puedan ser entendido por cualquiera deben de existir

    una serie de normas que se deben respetar, tanto en el nombre de los archivos que se crean

    como en la forma de escribir el programa y de verlo fsicamente en el papel.

    Se deben de respetar las columnas

    Las instrucciones o mnemnicos se deben de escribir en maysculas.

  • 33

    Cuando trabajemos con datos que son iguales en cualquiera de los dos bancos (0 o 1)

    ejemplo la Puerta A y la Trisa A en el caso de que hiciramos la siguiente pauta de programa:

    0012 PORTA EQU 0x06 ;Direccin puerta B

    0013 TRISA EQU 0x06 ;Direccin TRISA

    0014 STATUS EQU 0X03 ;Direccin registro Estado

    cuando quisiramos traducir esto en un programa ejecutable nos dara error por duplicacin de posiciones de memoria, para ello la solucin seria:

    0012 PTA_TRSA EQU 0x06 ;Direccin PuertaA y TrisaA

    as no se produce error y cuando se utilice la PuertaA o la TrisA se utilizara el mismo

    registro.

    Utilizar prrafos de comentarios con sus correspondientes punto y coma con todo tipo

    de explicaciones ejemplo:

    ;--------------------

    ;explicacin general de cualquier

    ;cosa que queramos explicar

    ;referente a la prxima tanda de

    ;instrucciones, adems de las

    ;comentarios por lnea

    ;--------------------

    Cuando tengamos que poner nombre a etiquetas utilizar nombres que sean reales y

    referidos al programa usando el subrayado para aclarar textos, es mas fcil de leer Bucle_1 que

    Bucle1, o mas fcil Ra_es_0 que Raes0.

  • 34

    4. PROGRAMACIN DE LOS CONTROLADORES PIC

    4.1 Introduccin

    Nos centraremos directamente en la programacin de los controladores que nos ocupan,

    los PIC.

    A continuacin podemos observar un organigrama con las distintas fases de

    implementacin, en las que, tras una fase de estudio del problema, se ha elegido ya el mejor

    controlador, as como decidido el sistema de conexin de patillas de E/S correcto.

    INICIO

    Se har en formato de texto DOS o ASCII con cualquier editor, como, por ejemplo, el EDIT. Tambin es posible usar

    el entorno WIN95-98 respetando este formato de grabacin.

    Nosotros emplearemos el MPLAB como editor.

    Para el lenguaje ensamblador emplearemos el MPASM,

    habiendo tambin herramientas para trabajar en C. Nosotros

    lo elegiremos por defecto como ensamblador en el MPLAB.

    La herramienta de simulacin en DOS es MPSIM, pero

    el entorno grfico MPLAB tiene su propio sistema, que

    utilizaremos.

    ERRORES?

    Cada grabador tiene su software especfico, y es posible encontrar mltiples circuitos y programas en Internet.

    Microchip vende sus propios equipos, as como micros

    programados de fbrica.

    FIN

    Las herramientas MPLAB, MPASM y MPSIM se pueden encontrar y bajar

    gratuitamente de internet en la direccin www.microchip.com.

    ESCRITURA

    DEL CDIGO

    FUENTE

    ENSAMBLADO

    SIMULACIN

    GRABACIN DEL

    CONTROLADOR

  • 35

    4.2.- PRIMEROS PASOS CON EL MPLAB

    Este entorno, que a continuacin pasaremos a describir, funciona tipo Container, es decir, sus

    distintas opciones son asociadas a programas, que sern ejecutados cuando se las pulse. De este

    modo bastar con definirle un ensamblador, un emulador o un grabador distinto a los que lleva

    por defecto para incorporarlo inmediatamente al entorno.

    Para ayudarnos emplearemos el sencillo programa inte.asm, el cual, simplemente, nos

    permite encender un led intermitentemente, situndolo en el pin RB0 del PORTB.

    El modo de abrir una ventana con un archivo con extensin .asm (ensamblador) ya

    existente es, a travs del men FILE, seguido de OPEN, o con el icono tpico, que encabeza

    este prrafo (en amarillo, no en verde).

  • 36

    4.3 El entorno de trabajo MPLAB

    4.3.1 El ensamblador

    El ensamblador que utiliza por defecto el MPLAB es el MPASM, que conserva de sus

    tiempos bajo MS-DOS.

    Es importante definir que tipo de microcontrolador vamos a utilizar, puesto que con ello

    definimos el procesador a utilizar durante todos los procesos (ensamblado, emulacin,

    grabacin). En nuestro caso utilizaremos el PIC16F84.

    La directiva ORG, seguida de una posicin de memoria, indica al ensamblador dnde

    debe situar en la misma el siguiente fragmento de cdigo, siendo tambin recomendable

    incluirla en todo programa, como mnimo, antes de la primera instruccin. Los casos de

    direcciones especiales sern tambin descritos ms adelante en el presente texto.

    La directiva END es imprescindible e indica al ensamblador el final del programa.

    El ; es empleado a modo de comando REM, es decir, se sobreentiende que lo que le sigue

    es un comentario.

    El ensamblador exige una cierta tabulacin mnima de sus distintos elementos. De este

    modo la definicin de variables podr escribirse en la 1 columna de cualquier lnea, mientras

    que las directivas e instrucciones debern ir en la 2 columna, como mnimo. Las tabulaciones

    caractersticas son las empleadas por nosotros, ya que, aunque no son imprescindibles, clarifican

    la lectura del programa.

    El uso de las maysculas y minsculas en este cdigo obedece a una serie de reglas o

    normas de estilo, comunes entre los programadores en ensamblador, que, aunque no son

    obligatorias, facilitan la lectura del cdigo fuente. Un resumen de las reglas empleadas es el

    siguiente:

    - Directivas del compilador en maysculas.

    - Nombres de variables en minsculas

    - Nemnicos (instrucciones) en maysculas

    - Programa bien tabulado.

  • 37

    4.3.2 Creando un nuevo proyecto

    En MPLAB es posible abrir un fichero en ensamblador (*.asm) y ensamblarlo para poder

    obtener el fichero de entrada de un grabador (*.hex), pero tambin es posible el uso de

    proyectos que utilicen varios *.asm, permitiendo as reutilizar cdigo con mayor facilidad, al ser

    este ms modular.

    Es, pues, muy conveniente saber crear un proyecto, el cul se abrir gracias al men

    Proyect, mediante su opcin Open Proyect..., muy similar a Open File.

    Tambin ser posible buscar el icono adecuado cambiando la barra de iconos, para

    lo cul emplearemos el que antecede estas lneas.

    Existen 4 barras, Edit, Debug, Proj y User, cuyo nombre aparece en el registro ms a la

    izquierda de la barra de informacin (en la parte inferior de la ventana). Tanto en User como en

    Proj existen iconos capaces tambin de abrir un proyecto (una carpeta verde).

    Comprobar en esta barra (Proj) a qu opcin corresponde cada icono situndose sobre l

    y mirando seguidamente la barra de informacin (parte inferior de la ventana).

    Esta barra (User) es una seleccin de iconos de las otras tres.

    Escoger la opcin Projet/ New Proyect... y aignarle el nombre inte.pjt. Llegaremos

    entonces a una ventana como la que se muestra en la pgina siguiente:

  • 38

    Seleccionar inte [.hex] en el frame Proyect Files y se le facilitar la opcin Node

    Properties. Seleccionar tambin dicha opcin. Obtenemos entonces esta nueva ventana:

    El botn Change sirve para cambiar el tipo de microcontrolador y otras

    opciones de configuracin, en nuestro

    caso marcar MPLAB-SIM y el

    microcontrolador PIC16F84

  • 39

    Seleccionar el Hex Format deseado (de momento INHX8M), es decir, el tipo de fichero

    en el que el ensamblador deber convertir los *.asm. Todos los formatos suelen ser aceptados

    por los grabadores, a quienes van destinados. Ya podemos darle a OK.

    El proyecto sigue estando vaco, y habr que crear nuestro programa (inte.asm) para que

    pueda ensamblarse y probarse. Esto slo ser posible si proyecto y programa estn en la misma

    carpeta. Si el archivo *.asm ya existe porque lo hemos creado, bien con este programa o con

    otro, seleccionaremos la opcin Add Node del frame Project Files, seleccionando despus el

    archivo *.asm que queremos abrir.

    En este caso vamos a crear uno nuevo llamado inte.asm, para ello seleccionamos la

    opcin File/ New y vemos que aparece una ventana vacia esperando para escribir nuestro

    programa en ensamblador. Copiamos dentro de esta ventana el programa siguiente:

  • 40

    Ahora tenemos que guardar este programa con el nombre inte.asm para lo cual

    seleccionamos File/ Save as, e indicamos el directorio (recordar que debe ser el mismo que el del proyecto).

    A continuacin debemos abrirlo para que forme parte de nuestro proyecto inte.Pjt.

    Recordamos: Projet/ Edit Projet., y aparece:

    Pulsamos Add Node, y ya podemos seleccionar el archivo inte.asm.

  • 41

    Par terminar este apartado, guardamos el proyecto: Projet/ Save Projet..

    4.3.3 Ensamblando

    El proceso de ensamblado es muy sencillo. Bastar con, sobre el men Proyect,

    pulsar la opcin Build Node, que ensamblara slo la ventana activa, o la opcin Build All, que

    ensamblara todos los nodos del proyecto. Por ltimo la opcin Make Project ensamblara

    todos los nodos de un proyecto y los unificara en un nico *.hex. Los pulsadores dibujados en

    este prrafo, de la barra Proj, contienen todas estas opciones.

    Y el resultado es una ventana como esta, con mensajes, errores y warnings.

    Corrigiendo los errores que marque el ensamblador, el programa ser sintcticamente

    correcto. Un nmero situado tras el nombre del programa indica la lnea exacta a que est

    asociado el mensaje. Este botn de la barra Edit numerar las lneas automticamente si su

    listado es largo.

  • 42

    4.3.4 Simulacin bajo windows

    Una vez corregidos todos los errores el programa ya est listo para ser grabado en el

    PIC y probado sobre el terreno, pero resulta ms prctico (normalmente), y ms fiable, si

    antes se lleva a cabo una simulacin por software. MPLAB tiene una herramienta de

    simulacin software, el MPLAB-SIM (mire la barra y el men Debug).

    Notars algo de incomodidad debida a la escasa automatizacin de algunas tareas: por

    ejemplo, la simulacin comienza mediante la opcin Run (semforo verde), y se detiene con

    Halt (semforo rojo), pero no comenzar a correr si no hace un Reset mediante la pulsacin

    de:

    Este icono es Step, ejecucin paso a paso, y avanzar una lnea de programa cada

    vez que se pulse.

    Este icono es Change Program Counter, y es utilizado para cambiar el contador de

    programa (salto a otra lnea de memoria de programa en ejecucin, para, por ejemplo, probar

    slo una rutina especfica si el resto ya lo sabemos correcto).

    Este icono Create a New Watch Window permite editar variables para ver su valor

    durante la ejecucin.

    Este comando permite cambiar el valor de direcciones de memoria en tiempo de

    simulacin y en cualquiera de sus reas (datos, programa, E2PROM, pila) directamente (por

    su nmero) o a travs de su nombre (mnemotcnico definido en el ensamblador, como lo es

    en el ejemplo OPERANDO1). Es muy til, combinada con las dos anteriores, para probar

    fcilmente todas las variantes de una rutina o zona de cdigo determinada sin tener que

    ejecutar para cada una de nuevo todo el cdigo.

  • 43

    Con este comando se pueden definir puntos de parada (Breaks) en la ejecucin para,

    mediante Run, no necesitar recorrer lnea a lnea todo el programa si deseamos ejecutar todo

    un proceso de golpe hasta esa lnea.

    Define condiciones de parada (Conditional Breaks), es decir, valores de variables o

    pines (E/S) ante las que parar si se producen.

    Vamos a simular el funcionamiento de nuestro proyecto (inte.Pjt):

    1. Pulsamos sobre el icono y aparecer:

    2. Pulsamos el botn para resetear.

    3. Seleccionamos del men principal Debug/ Run/ Animate, o pulsamos Control + F9.

    Ya podemos observar como el PORTB cambia cclicamente de 00 a 01. Esto indica

    que la salida RB0 de PORTB est intermitente. Podemos tambin simular paso a paso.

    4. Parar la simulacin mediante el botn

    Para simular un pulsador externo lo haremos mediante Debug/ Simulator stimulus/

    Asynchronus Stimulus:

    Seleccionamos PORTB Y Add.

    Close para cerrar esta ventana

  • 44

    Si pulsamos con el botn derecho del ratn sobre un botn y elegimos assign Pin

    4.3.5 Otras opciones del MPLAB

    Es interesante tambin comprobar qu opciones contiene el men Options. Por

    ejemplo, con su comando Development mode..., en el que es posible elegir el tipo de

    microprocesador sobre el que simular y activar el modo de simulacin (MPLAB-SIM

    simulator), no siempre activo por defecto. Si hemos tenido problemas con la simulacin en

    el apartado anterior, seguramente no estar activa an esta opcin.

    Con Default Editor Modes y sus Current Editor Modes podr cambiar las

    condiciones generales del editor (por ejemplo, cambiar de ensamblador a C, si tenemos el C),

    incluso diferenciando cul se debe emplear en cada nodo del proyecto.

    Con el submen Processor Setup podremos cambiar cosas como la velocidad del

    reloj (para controlar el tiempo de ejecucin) o la activacin del WatchDog.

    A travs del men Window, podemos ver la memoria de programa (submen

    Program Memory) y la de la EEPROM (si se desea y se va a utilizar; submen EEPROM

    Memory).

    Podemos seleccionar la entrada

    sobre la que actuar nuestro

    pulsador.

  • 45

    5. PROGRAMACIN CON EL ICPROG

    Para programar el PIC16F84 mediante el programador TE20 podemos

    utilzar el ICPROG. Este nos permitir transferir el programa que hemos creado en formato .HEX al microcontrolador, desde el ordenador.

    5.1 Configuracin del ICPROG para obtener el mejor rendimiento.

    Settings - Options

    Ajustes - Tipo Hardware

    MUY IMPORTANTE: Deberemos indicar correctamente el puerto COM al que vamos a conectar el cable. Ten en cuenta que si indicamos COM1 en ICPROG y conectamos el cable al COM2 no funcionar. En algunos ordenadores con mdem interno, puede darse el caso que est ocupando el COM1, y los puertos del ordenador sean el COM2 y el COM3.

    En caso de errores en la grabacin, se puede ir probando, bajando el valor de Retardo I/O. Aconsejamos entre 4 - 7.

  • 46

    Ajustes - Opciones

  • 47

    5.2 Pasos a seguir para la programacin

    Vamos a simplificar al mximo los pasos necesarios.

    Necesitas tener una circuito impreso, junto con sus correspondientes circuitos integrados, un programador como el TE20 Y el programa ICPROG.

    Conectamos el cable serie, por un lado al programador y por el otro a un puerto COM libre del ordenador.

    Ahora ejecutamos el programa ICPROG que ya deberemos tener bien configurado.

    Indicamos que vamos a grabar el primero de los dos chips, el PIC16F84, con los siguientes pasos:

    Ajustes - Dispositivo - Microchip Pic - Mas - PIC16F84

  • 48

    Ahora cargaremos el archivo que se va a grabar en el PIC, estos son los pasos:

    Archivo - Abrir Datos - *.hex, (de los dos archivos hay que abrir el que tiene extensin .HEX puesto que el .BIN es para grabar el otro chip).

    Una vez abierto, deberemos colocar las opciones Oscilador en XT y desactivar las opciones Bits configuracin.

  • 49

    Ahora pasamos a programarlo:

    Comando - Programar todo.

    Empezara a grabarse el PIC, esperamos unos segundos y ya est.

    Desconectamos el programador, sacamos el chip y los ponemos en el circuito donde deber realizar su funcin.

    5.3 Solucin de Problemas

    Si usando el programador no lee, no programa o genera errores de verificacin (error de verificacin en 0000H), se puede solucionar el problema en la mayora de las ocasiones revisando los siguientes puntos:

    El programador debe utilizarse desde un ordenador con Windows ME - 98 - 95. La familia Windows 2000 no soporta ICPROG.

    Probar con un slo elemento a programar o leer, en el zcalo correspondiente, es decir un PIC una EEPROM.

    Probar con un slo elemento a programar o leer, en el zcalo correspondiente, es decir un PIC una EEPROM.

    Comprobar que la PIC o la EEPROM son los correctos, y han sido insertados con su muesca coincidiendo con la muesca del zcalo de programacin, y que a su vez coincide con el PIN 1 en la serigrafa de la placa, marcado con un 1.

    Comprobar que la PIC o la EEPROM se encuentra completamente insertado en su zcalo.

    Comprobar que ha sido seleccionado en el men el elemento que est programando en ese momento, es decir si se procede a programar un PIC16F876, el elemento seleccionado deber ser el PIC16F876. En los anteriores pasos hemos indicado como seleccionarlo.

    Comprobar que el men Ajustes/Tipo Hardware (F3) se encuentra bien configurado.

  • 50

    La PIC y la EEPROM necesitan ser programados despacio, si su puerto est configurado a mucha velocidad esto puede originar fallos en la programacin y verificacin del mismo. Para reducir la velocidad de su puerto siga la siguiente secuencia de comandos con el ratn:

    Mi PC - Panel de control - Sistema - Administrador de dispositivos - Puertos COM y LPT - Puertos de comunicacin COM1 COM2 - Configuracin del puerto.

    El puerto debe estar configurado de la siguiente manera:

    Bits por segundo: 9600 ( menos en caso de errores) Bits de datos: 8 Paridad: Ninguna Bits de paridad: 1 Control de flujo: Xon/Xoff

    Al programar la PIC o la EEPROM, comprobar que el programa cargado y que se pretende programar en el integrado, tiene la extensin correcta, siendo generalmente *.HEX o *.BIN. Comprobar que el programa a programar en la PIC es el correcto y es el correspondiente al mismo, si intenta programar un programa de mayor tamao a la capacidad del PIC, se producir un mensaje de error.

    Probar a utilizar en otro ordenador, ya que los programadores que se alimentan del puerto serie, son muy sensibles a la tensin que reciben desde el mismo y no todos los ordenadores son capaces de mantener la misma tensin durante el proceso de grabacin.