Вы находитесь на странице: 1из 50

Microcontroladores PIC.

Teora

CAPITULO 1 Introduccin a los Microcontroladores:

1.1 1.2 1.3 1.4 1.5 1.6

Controlador y microcontrolador. Diferencia entre microprocesador y microcontrolador. Aplicaciones de los microcontroladores. Principales familias de microcontroladores. Arquitectura bsica. Recursos especiales.

CAPITULO 2 Los controladores PIC16F84:

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12

Caractersticas de la familia PIC16C(F)XX. Microcontroladores PIC16C(F)84. Hoja caracterstica de los PIC16C(F)84. Diagrama de pines del PIC16C(F)84. Organizacin de la memoria. Definicin de los registros de funciones especiales (SFR). Puertos del PIC16C(F)84. Frecuencia de funcionamiento. Temporizador/contador. Memoria EEPROM de datos. Interrupciones. Reset.

CAPITULO 3 Introduccin a la programacin :

3.1 3.2

Cdigo fuente. Normas.

CAPITULO 4 Programacin de los controladores PIC :

4.1 4.2 4.3

Introduccin. Primeros pasos con el MPLAB. 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 Pasos a seguir para la programacin. Solucin de problemas.

5.2 5.3

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.

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

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.

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.

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

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.

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. disquetes. 2.

No existen sistemas de almacenamiento masivo como disco duro o

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.

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.

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.

10

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 s acar 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.

11

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.

12

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.

13

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

14

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.

15

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.

16

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.

17

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.

18

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.

19

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.

20

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 Z DC R/W C bit0

IRP RP1 RP0 TO# PD# bit7

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.

21

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 0 0 1 1 RP0 0 1 0 1 Banco Banco 0 Banco 1 No Existe 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).

22

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.

23

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

24

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

25

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

26

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 bit7 U U EEIF WRWRR WREN WR RD 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.

27

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

28

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.

29

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:

30

Numeracin filas 0001 0002 0003 0004 0005 0006

campo etiquetas ;COMENTARIOS ;COMENTARIOS directivas-> directivas-> PTB_TSB PTA_TSA

campo instrucciones

campo datos

campo comentarios

LIST LIST EQU EQU

P=16F84 B=25 0x06 0X05

;Comentario ;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

31

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 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 etc. etc. Campo etiqueta ;-------------------;ejemplo ;xtal 4Mhz WDT- NO ;------------------LIST LIST ;--------------------PRTB_TSB ESTADO EQU EQU ORG GOTO ORG Inicio BSF P=16F84 C=132 ;micro 16F84 ;listado 132 Separacin para clarificar 0x06 ;direccin Pta B y TrisB 0x03 ;direccin Estado ;Direcciones de inicio y retorno 0x00 ;Vector Reset Inicio ;Comienzo programa 0x05 ;Posicin despus del ;vector de interrupcin ESTADO,5 ;Ir al Banco 1 Campo Campo instruccin datos Campo comentarios

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.

32

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 0013 0014 PORTA TRISA STATUS EQU EQU EQU 0x06 0x06 ;Direccin puerta B ;Direccin TRISA

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.

33

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.

ESCRITURA DEL CDIGO FUENTE ENSAMBLADO

SIMULACIN

ERRORES?

GRABACIN DEL CONTROLADOR

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.

34

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

35

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.

36

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:

37

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

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:

38

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:

39

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.

40

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.

41

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.

42

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:

Seleccionamos PORTB Y Add. Close para cerrar esta ventana

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:

43

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

Podemos seleccionar la entrada sobre la que actuar nuestro pulsador.

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

44

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.

45

Ajustes - Opciones

46

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

47

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.

48

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.

49

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.

50

Вам также может понравиться