TUTORIAL MICROCONTROLADORES PIC

´ ´ — INICIACION RAPIDA —
MIGUEL TORRES TORRITI

Contenidos Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. 1.1. 1.2. 1.3. 2. 2.1. 2.2. 2.3. 2.4. 2.5. 3. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 4. 4.1. 4.2. 4.3. 4.4. 4.5. 4.6. Microcontroladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Caracter´ ısticas de los Microcontroladores . . . . . . . . . . . . . . . . . . . . . . Proceso de Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PIC16F84 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Desarollo de Software para el PIC16F84 . . . . . . . . . . . . . . . . . . . . . . Programaci´n del µC PIC16F84 . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2 3 3 3 4 7 7 7 9

Circuito Base para Operaci´n Regular . . . . . . . . . . . . . . . . . . . . . . . 13 o T´cnicas Avanzadas: Programaci´n Mediante Bootloaders . . . . . . . . . . . . 14 e o Ejemplo 1: Programaci´n en JAL . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 o Descripci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 o Paso 1: Instalaci´n y Configuraci´n del Compilador JAL . . . . . . . . . . . . . 15 o o Paso 2: Creaci´n del Programa en JAL . . . . . . . . . . . . . . . . . . . . . . . 15 o Paso 3: Compilaci´n del Programa en JAL . . . . . . . . . . . . . . . . . . . . . 16 o Paso 4: Programaci´n del µC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 o Circuito del Ejemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Ejemplo 2: Programaci´n en PICC Lite . . . . . . . . . . . . . . . . . . . . . . . 17 o Descripci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 o Paso 1: Instalaci´n y Configuraci´n del Compilador PICC Lite . . . . . . . . . 17 o o Paso 2: Creaci´n del Proyecto en MPLAB IDE . . . . . . . . . . . . . . . . . . 18 o Paso 3: Compilaci´n del Proyecto con PICC Lite . . . . . . . . . . . . . . . . . 22 o Paso 4: Programaci´n del µC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 o Circuito del Ejemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Version 1.0 – 26 Abril 2007 – http://www.ing.puc.cl/∼ mtorrest/publicaciones.htm.
1

2

MIGUEL TORRES TORRITI

5. 5.1. 5.2.

Desarrollos m´s all´ de este Documento . . . . . . . . . . . . . . . . . . . . . . . 25 a a PIC16F87x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Freescale MC68HC08 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 . . . . . . . . . . . . . . . . . 26

Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Ap´ndice A. Lista de Componentes del Programador e Ap´ndice B. Lista de Componentes para los Ejemplos . . . . . . . . . . . . . . . . . 26 e Ap´ndice C. Configuraci´n del PROG84 . . . . . . . . . . . . . . . . . . . . . . . . . 26 e o Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Objetivos
Mediante explicaciones paso a paso, este documento busca iniciar r´pida y econ´micamente a o al lector en el desarrollo de circuitos basados en microcontroladores. Para dicho prop´sito se o emplear´ el popular microcontrolador PIC16F84, el cual por su simplicidad permite implea mentar circuitos con componentes de bajo costo disponibles comercialmente, y sin requerir de instrumentaci´n de laboratorio complejo. Tambi´n las herramientas de software de desarrollo o e que se presentan son de libre distribuci´n y pueden conseguirse f´cilmente sin costo. o a Los pasos que deber´ completar en este tutorial para desarrollar una aplicaci´n basada en a o microcontroladores se resumen en: (1) Selecci´n del microcontrolador: En este tutorial se utilizar´ el PIC16F84x por simplio e cidad y costo. Para aplicaciones m´s avanzadas se recomiendan el PIC16F87x o el a PIC18F452. (2) Selecci´n/Instalaci´n del compilador/ensamblador: Se emplear´ el compilador PICC o o a Lite de la empresa HI-TECH Software LLC. [3], junto con el software de desarrollo MPLAB IDE de Microchip Technology Inc. [1]. Obtenga estos software de los sitios webs que se indican en las referencias e inst´lelos. a (3) Selecci´n/Instalaci´n del software programador: En este tutorial se utilizar´ el softo o a ware programador PROG84. Obtenga el software programador PROG84 de las referencias que se indican en la secci´n 2.3 o 2.3.1. Para aplicaciones m´s avanzadas se o a recomiendan el IC-Prog o el WinPIC. (4) Construcci´n del circuito programador: En este tutorial se emplear´ el circuito prograo a mador JDM PIC Programmer 2 (JDM2). La construcci´n del circuito programador o JDM2 se explica en la secci´n 2.3.2 o en las referencias de la secci´n 2.3. El JDM2 es o o un programador simple y vers´til para aplicaciones avanzadas. Alternativamente, se a recomiendan el Multi PIC Programmer 5 Ver. 2 o el Progrmador PIC Pablin II. Si est´ a inici´ndose en la programaci´n de microcontroladores y necesita desarrollar una aplia o caci´n r´pidamente, tal vez sea recomendable que invierta en un programador de PIC o a comercial como los de Olimex, que son una alternativa econ´mica a los programadores o PICStart Plus de Microchip. (5) Desarrollo del software y programaci´n: Para escribir el programa que se incorporar´ o a al microcontrolador se emplear´ el ambiente de desarrollo MPLAB IDE. Es posible a prescindir de este ambiente y escribir el c´digo en un procesador de textos simple. Sin o

los microcontroladores son ampliamente utilizados como el cerebro de una gran variedad de sistemas embebidos que controlan m´quinas. tel´fonos y televisores. e incluso dispositivos o o o e de la vida diaria como autom´viles. dom´tica. A diferencia de los microprocesadores de prop´sito general. usted deber´ ser capaz de aplicar los pasos anteriores al desarrollo ıa de aplicaciones basadas en otros microcontroladores adem´s del PIC16F84. EEPROM (Electrically Erasable/Programable ROM) o Flash que almacena el c´digo del programa que t´ o ıpicamente puede ser de 1 kilobyte a varios megabytes. hornos de microondas. Microcontroladores 1. a o El funcionamiento de los microcontroladores est´ determinado por el programa almacenado a en su memoria. 16. Este puede escribirse en distintos leguajes de programaci´n. Universal Asyne chronous Receiver/Transmitter). con memoria/bus de datos y memoe ria/bus de programa compartidas. seriales (UARTs. una memoria para almacenar el programa. • Memoria de Datos: Es una memoria RAM (Random Access Memory) que t´ ıpicamente puede ser de 1. Introducci´n. Las principales caracter´ ısticas de los µC son: • Unidad de Procesamiento Central (CPU): T´ ıpicamente de 8 bits. con memoria/bus de datos separada de la memoria/bus de instrucciones de programa. Adem´s. o tambi´n resonadores o circuitos RC. la o a mayor´ de los microcontroladores actuales pueden reprogramarse repetidas veces. o los microcontroladores son unidades autosuficientes y m´s econ´micas. n e • Interfaz de Entrada/Salida: Puertos paralelos. Al completar este tutorial. como los que se usan en los computadores PC. EPROM (Electrically Programable ROM). o Los micrconctoladores son computadores digitales integrados en un chip que cuentan con un microprocesador o unidad de procesamiento central (CPU). • Generador del Reloj: Usualmente un cristal de cuarzo de frecuencias que genera una se˜al oscilatoria de entre 1 a 40 MHz. I2 C (Inter-Integrated Circuit). 32 kilobytes.TUTORIAL MICROCONTROLADORES PIC 3 embargo. pero tambi´n e las hay de 4. como aplicaciones industriales de automatia zaci´n y rob´tica.1. Caracter´ ısticas de los Microcontroladores. o arquitectura de von Neumann. la MPLAB IDE provee una serie de herramientas que facilitan el desarrollo y la administraci´n del c´digo. 2 4. 32 y hasta 64 bits con arquitectura Harvard.2. 8. a 1. los microcontroladores ser´n referidos a en este documento por µC. De ahora en adelante. o e Frecuentemente se emplea la notaci´n µC o las siglas MCU (por microcontroller unit para o referirse a los microcontroladores. componentes de sistemas complejos. Interfaces de Perif´ricos . sistemas aeroespaciales. o o (6) Construcci´n del circuito base de la aplicaci´n. equipos m´dicos. • Memoria de Programa: Es una memoria ROM (Read-Only Memory). 1. una memoria para almacenar datos y puertos de entrada salida. tambi´n llamada arquitectura Princeton. ıa Por las caracter´ ısticas mencionadas y su alta flexibilidad. Los circuitos bases de la aplicaci´n se o o o presentan en en los ejemplos de este documento.

Un ejemplo t´ o ıpico es el de un bot´n pulsador conectado a un pin o de entrada.4 MIGUEL TORRES TORRITI Seriales (SPIs. Monitoreando el valor de las entradas. USB (Universal Serial Bus). – Moduladores por Ancho de Pulso (PWM. Para responder a eventos externos. • Desarrollo de software: Esta etapa corresponde a la escritura y compilaci’on/ensamblaje del programa que regir´ las acciones del µC y los sistemas perif´ricos conectados a a e este. La alta integraci´n de subsistemas que componen un µC reduce el n´mero de chips. Cuando son entradas. las cuales se explican en m´s detalle en las siguientes subseca ciones. El proceso de desarrollo de una aplicaci´n basada en microcontroladores se compone de las o siguientes etapas principales. Una vez ejecutada la subrutina de interrupci´n la ejecuci´n del progama continua en el punto en que se encontraba antes de o o generarse la interrupci´n. a 1. se genera una se˜al de interrupci´n que iniciar´ la ejecuci´n de n o a o la subrutina de interrupci´n. Una vez pulsado. Controller Area Network). Serial Peripheral Interfaces). el a o microcontrolador puede responder a eventos externos y realizar una cierta acci´n. A trav´s de los pines del chip asociados a las interaces e de entrada/salida el µC puede interactuar con otros circuitos externos enviandoles se˜ales de n comando o recibiendo est´ ımulos correspondientes a variables externas. Proceso de Desarrollo. mientras que cuando son salidas pueden entregar una se˜al binaria de voltaje o n cuya magnitud depender´ del valor l´gico 0 o 1. analog-to-digital) para convertir un nivel a de voltaje en un cierto pin a un valor digital manipulable por el programa del microcontrolador. • Prueba y verificaci´n: Por ultimo. • Otras opciones: – Conversores An´logo-Digitales (A/D. la cantidad o u de pistas y espacio que se requerir´ en un circuito impreso si se implementase un sistema ıa equivalente usando chips separados. es decir pueden configurarse como entradas o salidas. Tambi´n hay interrupciones que pueden estar asociadas al valor de una entrada e AD. el µC debe conectarse al circuito base y someo ´ terse a pruebas para verificar el funcionamiento correcto del programa. pueden adquirir datos interpretando el valor de voltaje como un valor l´gico 0 o 1. Red de Area de Controladores (CAN. Las interrupciones son se˜ales que n se generan internamente en el microcontrolador que detienen la ejecuci´n normal del programa o para ejecutar alguna subrutina de respuesta al evento. o al cumplimiento de un periodo de tiempo fijado por un timer o temporizador. No todas las interrupciones necesariamente est´n asociadas al cambio del estado de los pines a de entrada.3. Estas caracter´ ısticas depender´n del modelo de µC empleado. como variar o las se˜ales de salida de acuerdo al valor en la entradas. Por lo general varios pines de datos son bidireccionales. Un aspecto de especial inter´s para el desarrollador de circuitos basados en microcontroladores e son las interfaces de entrada/salida. los n µCs cuentan con un recurso conocido como interrupciones. . Pulse-Width Modulation) para generar ondas cuadradas de frecuencia fija pero con ancho de pulso modificable. que por ejemplo podr´ activar un pin de salida para encender o ıa un led. • Programaci´n del µC: En esta etapa el c´digo de m´quina correspondiente al o o a programa desarrollado en la etapa anterior se descarga en la memoria del µC.

1. la cuales son m´s f´ciles de usar y reducen los tiempos de desarrollo.bin. Otra alternativa es emplear un lenguaje de alto nivel con una mayor cantidad de abstracciones.hex. Al carecer de abstracciones. . . . ya que el programa a a se desarrolla en un nivel cercano a las caracter´ ısticas del hardware. es normal en el uso profesional emplear la palabra Assema bler en forma ambigua para referirse tanto al lenguaje de programaci´n como a la herramienta de software o ensambladora. Sin embargo.3.Lenguaje Assembly . .cpp) → compilador → (. El m´todo b´sico es escribir el programa en lenguaje Assembly1 (lenguaje de Ensamblador) e a en un archivo de texto con extensi´n .o.bin (por binario).coff (common object file format) dependiendo del ensamblador.asm) → ensamblador → (. . requiere experiencia y un a ıcil mayor tiempo de desarrollo.TUTORIAL MICROCONTROLADORES PIC 5 1.c.asm y luego utilizar una programa ensamblador (Aso sembler) para generar un archivo en lenguaje de m´quina.coff) En la figura 1 se muestran las dos alternativas t´ ıpicas que tiene el desarrollador para generar el c´digo de m´quina que es entendido por el microcontrolador. En esta etapa consiste en escribir y compilar/ensamblar el programa que determinar´ las a acciones del µCy su funcionamiento. . Etapas del desarrollo de software. Desarrollo del software. .o (por objeto).o.hex (por hexadecimal).asm) → ensamblador → (.bin. Existen distintas maneras de desarrollar el programa.Lenguaje de M´quina/C´digo Objeto a o (. . o a Figura 1. o o . dependiendo del lenguaje inicial que se utiliza para escribir el programa: • Lenguaje Assembly . .hex. compuesto por instrucciones en c´digo binario que a o o son directamente entendidas por la CPU del microcontrolador. el lenguaje Assembly es m´s dif´ de emplear. El lenguaje Assembly se compone de instrucciones mnem´nicas de bajo nivel.Lenguaje de M´quina/C´digo Objeto a o (. El ensamblador normalmente genera un archivo con extensi´n . . Assembly es el lenguaje y Assembler es la herramienta de software que traduce el c´digo o Assembly a lenguaje de m´quina. es decir que est´n ligadas a las caraco a ter´ ısticas del microcontrolador y con un n´mero m´ u ınimo o nulo de abstracciones. tambi´n denominado c´digo de a e o m´quina o c´digo objeto (object code).coff) • Lenguaje de Alto Nivel . La ventaja es que el c´digo de m´quina generado a partir de un o a programa escrito en lenguaje de m´quina es por lo general m´s eficiente. Tal vez los lenguajes de a a 1En estricto rigor.

se puede instalar en el circuito final para comprobar su adecuado funcionamiento. Es importante considerar que el a c´digo de Ensamblador generado por los compiladores tiende a ser m´s lagro e ineficiente o a que aquel directamente desarrollado en lenguaje de Ensamblador. Una vez escrito el programa en el lenguaje de alto nivel.3. USB. ya sea a lenguaje a de Ensamblador o directamente a lenguaje de m´quina.3.2. y lo env´ mediante alg´n puerto (serial.) a un dispositivo que lo escribe en la memoria del µC. Figura 2. mientras que el segundo se refiere transferir el c´digo de m´quina a la memoria o a del µC. ser´ o o a necesario utilizar un ensamblador para generar el c´digo binario de m´quina. . el instrumento m´s utilizado es el analizador l´gico. . el primero se refiere a escribir o o el programa. ser´ necesario emplear un compilador para traducirlo.hex. Existen heramientas de software que permiten simular el comportamiento de un µC. o a 1. pero tambi´n a u o e existen otros lenguajes variantes del BASIC y el Pascal.asm).3. Programaci´n del µC. a o . ıa u paralelo. Esta desventaja puede ser cr´ ıtica en ciertas aplicaciones que requieren un programas compactos y de una alta velocidad de ejecuci´n. Se acostumbra denominar programador tanto al sofware como al hardware involucrados para este prop´sito. El software programador a veces recibe tambi´n el o e nombre de downloader.6 MIGUEL TORRES TORRITI alto nivel m´s com´nes para la programaci´n de controladores es el C y C++. o Este proceso corresponde a utilizar un programa en el PC que toma el c´digo ensamblado o (.coff) para el µC espec´ ıfico. 1. ya que su prop´sito es descargar o transferir desde el PC al µC el o c´digo ensamblado. o Una vez programado el µC. Programacion del µC.bin. En la figura 2 se muestran las componentes involucradas en el proceso o de programaci´n del µC. Para resolver problemas en un circuito real. muy utiles cuando el programa alcanza cierta complejidad.o. etc. . Un vez que el compilador ha generado el c´digo de Ensamblador (. Prueba y verificaci´n. Es importante mencionar que no deben confundirse los t´rminos o e desarrollo o programaci´n del software y programaci´n del µC. o lo cual puede prestarse a confusi´n.

o El µC PIC16F84 de Microchip Technology Inc.microchip. http://www. se programa mediante un juego de 37 instrucciones en Assembly. un watchdog timer y responde las siguientes interrupciones: • Cambios de estado en las l´ ıneas RB4 a RB7 del puerto B. • Overflow2 del timer. PWM. [1] es uno de los microcontroladores m´s utia lizados en proyectos electr´nicos pequeos. Requiere un oscilador externo de hasta o 20 MHz. que manejan datos de 8 bits. En lo que respecta al desarrollo de software para los µCs PIC existen varias alternativas empleando compiladores o ensambladores disponibles en forma gratuita como: • Assembler: – MPLAB IDE [1]. Desarollo de Software para el PIC16F84. A pesar de que este µC no posee . comunicaci´n serial por hardware y tiene menos memoria y puertos (conjuntos de l´ o ıneas de datos) disponibles. su f´cil uso. • Flanco de subida o bajada en la l´ ınea RB0/INT del puerto B.2. es decir. lo han convertido en un µC muy a popular y el favorito en un gran rango de aplicaciones. cuenta con un timer. Figura 3. 2. ıa 5 V para un estado l´gico 1 y 0 V para el estado 0. Sin embargo. Pines del PIC16F84. el PIC16F84 carece de convertidor A/D. El proceso de desarrollo de aplicaciones para el PIC es equivalente al descrito en la figura 1. muchas de las caracter´ ısticas que este µCno posee pueden ser implementadas por software. El µC PIC16F84.com/ 2Overflow se refiere al evento que ocurre al incrementar un registro por sobre el valor m´ximo de bits que a posee .1. precio reducido.TUTORIAL MICROCONTROLADORES PIC 7 2. Introducci´n. o su version actual el µC PIC16F84A pertenece a la familiad Microchip de microcontroladores de rango medio de 8 bits con 18 pines. Como se muestra en la figura 3. este tiene 13 l´ ıneas de entrada/salida (RA0–RA5. PIC16F84 2. RB0–RB7) con tecnolog´ TTL/CMOS. A diferencia de versiones m´s avanzadas como o a el igualmente popular PIC16F87x.

8 MIGUEL TORRES TORRITI – gpasm parte de gputils [2]. Los programas desarrollados en lenguaje Assembly pueden ser los m´s eficientes. el cual se puede descargar en forma gratuita de su sitio web [1]. Desarrollo en JAL. o Otros compiladores de C son los creados por los mismos fabricantes de los PIC.3. aunque tiene ciertas limitaciones principalmente en t´rminos de la longitud de los e programas que se pueden desarrollar. A continuaci´n se o explican algunas caracter´ ısticas de cada herramienta de desarrollo de programas para los µCs PIC. Desarrollo en C usando HI-TECH PICC Lite. estos tampoco son gratuitos. http://www. provee el ensamblador por defecto de para los PICs a trav´s de un ambiente integrado e de desarrollo llamado MPLAB IDE (Integrated Development Environment).2.sourceforge. El JAL tambi´n cuenta con librer´ para realizar m´ltiples tareas comunes y al e ıas u . El PICC Lite tiene las mismas caracter´ ısticas profesionales de la versi´n o comercial.com/products/PICClite.sourceforge.2. En el caso de Windows. El uso de C puede ser muy conveniente para aquellos que ya estan familiarizados con este lenguaje y deseen iniciarse r´pidamente en el desarrollo de circuitos a basados en µCs PIC. e Este dispone tambi´n de muchos ejemplos de c´digos en C que pueden reutilizarse en divere o sos proyectos. las cuales se pueden obtener gratuitamente [2]. 2.hex con el c´digo de o m´quina a partir del programa en C. Sin embargo. Al ser parecido al Pascal. 2.2. http://jal. http://gputils. El JAL es un lenguaje parecido al Pascal desarrollado por Wouter van Ooijen especificamente a para µCs PIC y algunos µCs SX [4]. pero lamentablemente ya no dispone de una versi´n gratuita para estudiantes. El compilador posee numerosas opciones y ejemplos que a se encuentran adecuadamente documentados.php • Pascal: – JAL [4]. en el ambiente Linux/BSD el gpasm es el ensablador del conjunto de utilidades gputils (GNU PIC Utilities). 2. pero existen otros compiladores disponibles grauitamente con a caracter´ ısticas similares. el leguaje es m´s intuitivo que el C.2.net/ Existen muchos otros compiladores incluso de lenguajes similares al BASIC que pueden encontrarse a trav´s de Internet [6]. La disponibilidad del PICC LITE en el futuro no est´ asegurada. del PIC16F84. se o o a recomienda utilizar las soluciones m´s probadas. aunque el a proceso de desarrollo normalmente es tedioso y requiere de un aprendizaje m´s largo que con a lenguajes de m´s alto nivel.htsoft. Desarrollo en Assembly.net/ • C: – HI-TECH PICC Lite [3]. Sin embargo.1. El compilador genera directamente un archivo . Un buen compilador de C para PIC es el CCS PCWH [5]. excepto el compilador para la familia PIC18. Para seguir esta v´ se recomienda leer la hoja de datos (datasheet a ıa. la cual permite familiarizarse con el conjunto de instrucciones disponibles. Existen varias opciones para ensamblar el c´digo y generar c´digo de m´quina. Por otro lado. El PICC Lite es la versi´n gratuita para estudiantes del compilador PICC desarrollado por o HI-TECH Software. Microchip Technola ogy Inc. En todo caso estas restricciones no limitan el desarrollo de aplicaciones razonablemente complejas y avanzadas.

• SW: IC-Prog + HW: JDM / Fluffy2 / Ludpipo / Multi PIC Programmer 5 Ver. dise˜ado por Feng para n chips de 8/18/28/40 pines. Programaci´n del µC PIC16F84. este compila y ensambla a la vez entregando el c´digo de o m´quina en un archivo . Uno de ellos es el Multi PIC Programmer 5 Ver.htm Observaciones: Este programador emplea un circuito similar al COM84 con cuatro partes adicionales y alimentaci´n externa. 2.ic-prog. Todos los programadores funcionan bajo Windows o DOS y se programan a trav´s del puerto serial RS-232 e a menos que se indique algo distinto. sino tambi´n pueden trabajar con variados circuitos programadores. El dise˜o cono n sidera adem´s de factores como costo y simplicidad. Chips: Solamente probado con el PIC16F84. Por lo general estas duplas software-hardware son interdependientes. o Es importante recordar que en este documento la expresi´n programaci´n del µC se refiere al o o proceso de descargar a la memoria del µC el c´digo de m´quina generado por el ensamblador. En el siguiente resumen. lo que puede dificultar encontrar una combinaci´n que funcione correctamente y sea a la vez simple y general.TUTORIAL MICROCONTROLADORES PIC 9 igual que varios comipladores de C.com/ a a Observaciones: El IC-Prog es tal vez el software programador m´s vers´til junto con el WinPIC DL4HYF.ne. Este est´ basado en el programador JDM y se alimenta del a puerto serial.rentron.com/Myke4. Entre los e programadores destacan algunos que no se encuentran mencionados en la p´gina de a IC-Prog. • SW: ElCheapo + HW: ElCheapo PIC Programmer by Myke Predko http://www. A continuaci´n se presenta o o un resumen de las combinaciones software-hardware para programadores. si bien en la pr´ctica la expresi´n programaci´n del µC se utiliza en forma ambigua a o o para referirse tanto a la escritura del programa como a la descarga del mismo en la memoria del µC. Ya que aparentemente alternativas m´s minimalistas como el COM84 a no funcionan correctamente en ciertos computadores que no entregan suficiente corriente por el puerto serial. SW significa software y HW significa hardware. la flexibilidad de uso en diferentes a computadores. 2* / Pablin II** / ProPic II / Shaer / Tait /Shaer IC-Prog Prototype Programmer . Este tambi´n se parece al Multi PIC Programmer e 5 Ver.3. En Internet se pueden encontrar disponibles en forma gratuita numerosas duplas softwarehardware para programar µCs PIC bajo diferentes sistemas operativos. 2 http://feng3.html Otro dise˜o para chips de 8/18/28/40 pines que se alimenta del puerto paralelo es el n programador Pablin II de Pablin. El programador Pablin II se puede encontrar en: ** Programador PIC Pablin II . 2. a 2. aunque en algunos aspectos el circuito parece una versi´n simplificada o del ProPIC II: * Multi PIC Programmer 5 Ver. pero usa el puerto paralelo. o a Este proceso no debe confundirse con el proceso de escribir el programa tratado en la secci´n o anterior.Bonny Gijzen http://www.jp/en/pg5v2.hex.cool. ya que no s´lo son capaces de programar una gran variedad de o µCs.

• SW: PIX 1.8. Sin embargo.jdm. Un explicaci´n del circuito COM84 en espa˜ol puede encontrarse en: o n Programador PIC y E2PROM sin fuente (puerto serie) .htm http://homepage. 16F7x. 18Fxxx. • SW: PIP-02 + HW: COM84 Beginners’ PIC and AVR Page . AVR .tele.8.3 + HW: JDM Jens Madsen PIC-Programmer 2 Jaakko Hyv¨tti Picporg 1.htm Existe un circuito m´s sencillo que el programador COM84 y que solo requiere unas a resistencias. 59Cxx.roedu. Est´ t´cnica tiene ventajas evidentes en simplicidad.Matthew Rowe http://homepage. 24Cxx.fi/~jaakko/pic/picprog.pablin.iki. 12C5xx y 24C16 con los circuitos programadores Ludpipo / Uniprog IV/ . 16F87x. Sin embargo.3 documentation a http://hyvatti. el Multi PIC Programmer 5 y el Pablin II se presentan como opciones muy atractivas por su simplicidad y versatilidad.ar/electron/circuito/mc/com84/index.html Observaciones: Proyecto de Wim Lewis.com. por lo que no se considerar´ en este tutorial. otros. 93Cxx. Windows+Cygwin.dk/frda/picasm/prog.net/mirrors/ftp.swipnet.inet. • SW: Picprog 1.rowe/micros/ Observaciones: El circuito programador COM84 es probablmente el m´s sencillo que a existe que se alimenta directamente del puerto serial. es decir la programaci´n del µC en su circuito o base. pero es una soluci´n esa e o pec´ ıfica a cada µC y menos general.piclist.ntlworld. este es s´lo para la llamada programaci´n serial en circuito o o o ICSP (in-circuit serial programming).htm Chips: Solamente probado con el PIC16F84.html OS: Linux.com/techref/piclist/cheapic/COM84.13 + HW: COM84 / JDM / JDM84 / Ludi / Pixxer /Shaer / Tait COM84 PC Board http://www. 90Sxxx. 80C51. • SW: PROG84 + HW: COM84 / Ludpipo / Uniprog IV/ BR870 Prog84. 16C6x/7x/923/924.com.pablin. 16Fxx.htm Ambos programadores.tapr.com/matthew. PIC16x84/24c16 programming utils http://home3.13 . Para a informaci´n adicional consulte la documentaci´n del fabricante [1] o el ejemplo en: o o http://www.10 MIGUEL TORRES TORRITI http://www.rowe/micros/dosgear. 89S53. ıa Chips: El software programador PROG84 soportar´ los PIC 16C84/16F84.com/matthew. En este caso se o recomienda emplear el JDM PIC Programmer 2 que es una versi´n similar pero que o funciona bajo todas condiciones.homepage.Pablin http://www. Chips: PIC 12Cxx.htm PIX 1.se/~w-53783/ http://ftp.ar/electron/circuito/mc/ppp2/index.dk/easypic2.iasi. es posible que no funcione en muchos computadores nuevos que no son capaces generar el voltaje de alimentaci´n suficiente con los nuevos circuitos de bajo consumo. 250x0. 16F87x. 89Cx051.Bengt Lindgrens http://home.org/picsig/software/ Chips: Solamente probado con el PIC16F84. actualmente mantenido por Frank Damgaard.ntlworld. 16Cxxx.

cl/ Algunos circuitos programadores de µCs PIC ampliamente difundidos y principalmente para la programaci´n de µCs de la serie PIC16x84 son: o • COM84: Programador por Matthew Rowe http://homepage.rentron.html u Chips: Un gran n´mero de la series PIC10/12/16/18.ntlworld. • SW: WinPic + HW: COM84 / JDM / JDM PIC Programmer 2 / Otros DL4YHF’s WinPic .geocities.qsl.dk/newpic.cool.com/matthew.net/dl4yhf/winpicpr.de/dl4yhf/winpicpr. Se ha verificado el funcionamiento del PROG84 con el circuito programador COM84. debe tenerse en cuenta que el circuito programador COM84 sin modificaciones adicionales muy probablemente no podr´ programar otro µC que el PIC16F84.homepage. Sin embargo.com/leon_heller/pic.com. OS: Linux.rowe/micros/dosgear.olimex.piclist.pablin. BSD.A PIC Programmer for Windows http://freenet-homepage. consulte las referencias en [6].ee/PIC/ .htm http://sciencezero. como el PICStart Plus II de Microchip. DOS.jp/en/pg5v2.com/Myke4.org/electronics/com84.htm http://www.micahcarrick.html • Multi PIC Programmer 5 Ver.htm • JDM: Programadores por Jens Dyekjær Madsen JDM PIC Programmer 2 http://www.ne.jdm. aunque es posible que por las caracter´ ısticas de este ultimo s´lo sea posible ´ o programar el PIC16F84.html • Programador PIC Pablin II http://www. 2 por Feng http://feng3.com/techref/piclist/cheapic/COM84.com/v2/content/category/4/2/8/ Existen varias opciones de programadores comerciales. aunque alternativas m´s econ´micas son a o los programadores de Olimex: http://www. Windows.html http://www. a Existen una gran cantidad de otras alternativas.htm http://www.htm • Tait: Programadores por David Tait http://www.nomad.4hv. el cual se puede emplear junto con el MPLAB IDE.ar/electron/circuito/mc/ppp2/index.htm http://www.TUTORIAL MICROCONTROLADORES PIC 11 BR870. Un listado de programadores para Linux puede encontrarse en: http://www.

1.2 V como el BZV55C6V2 y debe colocarse en serie con el led como se muestra en el esquem´tico. El software programador PROG84 fue desarrollado por Wim Lewis y actualmente es mantenido por Frank Damgaard.html Ver tambi´n: e http://people. tanto R1 de 1. Circuito Programador JDM PIC Programmer 2.1V como el BZV55C5V1. BR870.tele.hex. El condensador C2 tambi´n puede reemplazarse por e un condensador de 100 µC. ya que se alimenta directamente del puerto serial RS-232 del PC sin requerir una fuente de alimentaci´n o externa como se muestra en la figura 4. pero ´ e de 5. aunque se recomienda el 1N4148. se sugiere construirlo directamente en una placa PCB. pueden ser de baja potencia (0. se recomienda utilizar la combinaci´n SW: PROG84 + HW: COM84 en el deo sarrollo de los ejemplos de este tutorial. El diodo Zener D3 y el led pueden a reemplazarse por un unico diodo Zener de 8.inet. Uniprog IV. 16 V como C1. Las resistenu cias requeridas. este puede obtenerse en: http://home3. Al lado izquierdo de esta figura se muestran las l´ ıneas del puerto serial.3. Una vez configurado y conectado el hardware adecuadamente. bajo costo y disponibilidad tanto para Linux/BSD como para Windows. El circuito programador JDM PIC Programmer 2 (JDM2) es una interfaz de hardware muy simple que permite programar al µC PIC16F84 con muy pocos componentes. A continuaci´n se explican brevemente el programador PROG84+COM84. Dada la simpleza del circuito JDM2. Ver Anexo C con un ejemplo de archivo de configuraci´n. la programaci´n se o o efectua con el siguiente comando: prog84 -x archivo. Tanto el condensador C1 de 100 µC. 16 V como el condensador C2 22 µC.2 V. la opci´n C programa los fuses como U para el o o power up timer (on) y la configuraci´n del oscilador. o 2. con sus respectivos n´meros de pin en el conector DB9 o DB25. Software Programador: PROG84. Ludpipo.dk/frda/picasm/prog. D5.com/wiml/soft/pic/ Este software programador puede ser utilizado con circuitos programadores por puerto serial o paralelo como el COM84. D6 son diodos rectificadores cualquiera.hex En este ultimo caso la opci´n a indica que el programador verifique que los datos fueron ´ o cargados correctamente en el µC. La opci´n o o v es para aumentar los mensaje (verbosidad) de estado del proceso de programaci´n del µC. El diodo D3 debe ser un diodo Zener de 6. o 2. de modo que sea m´s duradero y su operaci´n a o m´s confiable. por lo tanto para otros proyectos considere utilizar SW: IC-Prog/WinPIC + HW: Multi PIC Programmer 5 Ver. 2/Programador PIC Pablin II. a . que en caso de un cristal es X. la opci´n z indica que borre la memoria del µCantes de o escribir el c´digo del archivo archivo. D2.5 kΩ como R2 de 10 kΩ. El diodo D4 tambi´n es un diodo Zener.hex o con prog84 -azC UX -v -x archivo. 16 V deben ser electrol´ ıticos.12 MIGUEL TORRES TORRITI Por su simplicidad.25 W). Los diodos D1.omnigroup.2. generalidad. Para utilizar el PROG84 deber´ a configurar el tipo de hardware y el puerto serial editando el archivo lp_cfg contenido en el directorio donde PROG84 fue colocado. Tengase presente que el programador COM84 estar´ ıa limitado a los µCs de la familia PIC16F84x.3.

o o o Figura 4. el circuito JDM2 puede ser modificado seg´n la a u especificaci´n de programaci´n ya descrita para utilizar una fuente de alimentaci´n externa.TUTORIAL MICROCONTROLADORES PIC 13 Para que el PIC16F84 entre en modo de programaci´n debe forzarse un estado l´gico 0 en o o RB6 (pin 12) y RB7 (pin 13). e inmediatamente despu´s deber llevase y mantenerse en un voltaje e entre 12 y 14 V durante toda la programaci´n. Los detalles del protocolo de programaci´n pueden encontrarse en la documentaci´n del fabricante [1]. Por esta raz´n el programador o puede presentar problemas de funcionamiento en ciertos computadores. o . Una vez que el µC ha entrado en modo de o programaci´n. se utiliza RB7 (PGD o Program Data) para ingresar serialmente la informaci´n. como aquellos que utilizan circuitos seriales de baja potencia para ahorro de consumo muy comunes en algunos computadores port´tiles. Programador serial minimalista JDM PIC Programmer 2. o o Es importante destacar que este dise˜o minimalista requiere que el puerto serial del PC n entregue al circuito los niveles de voltaje y potencia adecuados. 2. En todo caso. mientras que M CLR (pin 4) debe llevarse a 0 por un periodo corto para resetear el µC. o o mientras que RB6 (PGC o Program Clock) se utiliza como seal de reloj para aceptar cada bit en RB7.4. Esto se logra mediante el software programador. Circuito Base para Operaci´n Regular.

Esto se puede observar en la figura del ejemplo 1. Imagen en http://www. 2. Vdd . • Compile/ensamble su c´digo con alg´n compilador/ensamblador de los mencionados o u anteriormente.htm.homepage. • PIC16F87x / 16F87xA PIC micro and C .microchipc.com/PIC16bootload/ EHL elektronik . En a este m´todo el programador de microcontroladores solo se emplea una vez para descargar el e microsistema operativo bootloader al µC. e La ventaja de utilizar est´ t’ecnica es que permite muy facilmente hacer actualizaciones del a c´digo de la aplicaci´n.5. M CLR es el reset. y las lineas de alio mentaci´n.dk/newpic. Vss . que reside en la memoria del o o u µC sin necesidad de sacarlo del circuito para colocarlo en un programador est´ndar. En los siguientes sitios de Internet podr´ encontrar dos bootloaders muy recomendables con a explicaciones muy detalladas de como emplearlos. • Coloque el circuito con el µC en modo de comunicaci´n serial y descargue el c´digo o o binario . y tierra. que proveen la seal de reloj.Petr Kolomaznik . T´cnicas Avanzadas: Programaci´n Mediante Bootloaders. el PIC16F84 requiere ciertos componentes basicos.Shane Tolmie http://www. Para desarrollar programas usando o bootloaders los pasos b´sicos son: a • Descargue el c´digo del bootloader a la memoria del µC empleando un programador o est´ndar como los mencionados en la subsecci´n anterior.14 MIGUEL TORRES TORRITI Figura 5. e o Los bootloaders son un peque˜o c´digo binario que se descarga en los µCs y tiene por finalidad n o simplificar el desarrollo de programas ya que actuan como una especie de sistema operativo m´ ınimo que tiene por finalidad obtener via un pin configurado para funcionar como puerto serial el c´digo del programa que se requiere ejecutar.jdm. iguales para cualquier configuracion: un cristal y condensadores. a o • Arme un circuito con un conversor serial RS-232 a TTL como el circuito integrado MAX232. En el circuito final.bootloader .hex usando el software bootloader. Programador JDM2 terminado. com´nmente denominado firmware. • Re-inicie el circuito con el µC en modo normal para que se ejecute el programa que descargo a trav´s del bootloader.PIC downloader . por lo que debe mantenerse en estado l´gico o 1 durante su funcionamiento.

Ejemplo 1: Programacion en JAL 3. o . En las siguientes secciones se indican los pasos necesarios para implementar el parpadeo de un LED.Loop Principal forever loop -.Shane Tolmie http://www.1.TUTORIAL MICROCONTROLADORES PIC 15 http://www.Ejemplo 1 -. Para esto se implementar´ un programa que continuamente cambie el estado de un pin y a espere cierto tiempo antes de repetir la acci´n. 3. En este ejemplo se utilizar´ el lenguaje JAL o a para desarrollar el programa.Configuracion pin_b7_direction = output -.com/PIC18bootload/ ´ 3.Variables var bit led is pin_b7 led = high -.3.jal.sourceforge.Inclusiones include 16f84_4 include jlib -. Paso 1: Instalaci´n y Configuraci´n del Compilador JAL.Retardo delay_1ms(250) end loop Comentarios Generales del Programa: El alto nivel de JAL permite que el c´digo sea bastante autoexplicativo. 3. Descripci´n. o Un ejemplo muy simple y demostrativo para iniciarse con un µC es hacer parpadear un LED. o (1) Escriba el c´digo del ejemplo que se muestra a continuaci´n en un procesador de textos o o simple y gr´belo en un archivo con extensi´n . Los comentarios se incluyen con el prefijo ’--’. o o (1) Obtenga el compilador JAL en: http://jal.Cambio de estado del pin led = ! led -.cz/pic/pic_e.2. a o 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: -.ehl. Paso 2: Creaci´n del Programa en JAL.net/ (2) Descomprima el archivo con el compilador.microchipc.bootloader .htm • PIC8Fx52 PIC micro and C .

a Alternativamente. JAL generar´ los archivos ıas a archivo.asm y archivo.3. El par´metro -slib indica al compilador o o a que debe buscar las librer´ utilizadas en la carpeta lib. o (1) En el directorio donde guard´ el archivo del ejemplo compile el c´digo mediante la o o siguiente l´ ınea de comando: <directorio>\jal -s<directorio>\lib archivo. de la barra de men´ son: Oscillator o u . A continaci´n se explican los pasos de programaci´n desde MPLAB IDE o o en el caso que el archivo con el c´digo de m´quina (. En este se cambia el estado del pin/led (l´nea 17) y se genera ı un retardo de 250 ms mediante la funci´n delay_1ms (l´nea 19) para producir una o ı pausa en el encendido o apagado del led.\lib archivo..hex o u que desea descargar al µC. (3) Verifique las opciones de configuraci´n de MPLAB IDE. Luego o o bastar´ con ejecutar el siguiente comando de compilaci´n desde la carpeta work: ıa o .jal donde <directorio> se refiere al directorio donde instal´ JAL. Su funcionamiento se basa en el hecho de que una instrucci´n (en Assembler) tarda 4 ciclos de reloj. Paso 3: Compilaci´n del Programa en JAL. archivo. o bien usando el MPLAB IDE si posee alg´n programador Microchip como el u PICSTART Plus. Verifique tambi´n que los bits de configuraci´n de e o la opci´n Configure/Configuration Bits. por ejemplo.. tal que el tiempo u u transcurrido antes de continuar con la ejecuci´n del resto del programa sea igual al o especificado. work en el directorio donde instal´ JAL y colocar el c´digo del ejemplo en dicha carpeta. a o Los archivos en las l´neas 4 y 5 son incluidos ya que estos contienen definiciones ı espec´ficas del PIC16F84. Paso 4: Programaci´n del µC. de la barra de men´ que el dispositivo correo u sponde al µC PIC 16F84 o 16F84A.16 MIGUEL TORRES TORRITI Es fundamental dejar un espacio en blanco entre el prefijo de comentario y la frase de lo contrario se producir´n errores de compilaci´n. o (2) Ejecute la opci´n File/Import. 2.. por lo que se ejecuta un loop o auxiliar el n´mero de veces requerido seg´n la velocidad del reloj.. 2. se puede crear una carpeta llamada. 3. como las correspondientes a las direcciones de memoria para ı pin_b7 y pin_b7_direction.\jal -s. (1) Inicie la aplicaci´n MPLAB IDE. de la barra de men´ y seleccione el archivo ..hex..4. entre las l´neas 15 y 20 se encuentra el loop del programa.3.1. En la l´nea 8 se define la direcci´n de RB7 (pin 13) como pin de salida. respectivamente..2 del presente u documento. La funci´n delay_1ms() causa un retardo o de 1 ms multiplicado por su argumento. y las funciones que generan el retardo. En las ı o l´neas 11 y 12 se define la variable led y se la asigna a RB7 con un estado incial ı activo.jal 3. Finalmente.jal es el o archivo donde guard´ el c´digo del ejemplo. En particular verifique en la o opci´n Configure/Select Device. o Puede programar el µC seg´n lo explicado en las secciones 2.hex) haya sido previamente generado o a fuera del MPLAB IDE como en este ejemplo. que corresponden al c´digo en Assembly y al c´digo de o o m´quina ensamblado.. el cual se ı ejecuta indefinidamente.3. La velocidad del reloj se encuentra especificada en el programa dado que se incluy´ la versi´n de 4 MHz (l´nea 4) de las funciones espec´ o o ı ıficas de PIC16F84.5.

Esto causar´ que el LED se encienda cuando la variable led tenga un estado l´gico 0. o Seleccione el hardware programador.TUTORIAL MICROCONTROLADORES PIC 17 (4) (5) (6) (7) (8) = XT. Al dise˜ar otras aplicaciones es o n importante tener presente la corriente m´xima que puede entregar o recibir un pin en el caso a de la l´gica positiva o negativa. el resto de los componentes constituyen la circuiter´ m´ ıa ınima para el funcionamiento del PIC16F84.com/products/compilers/PICClite. Circuito del Ejemplo 1. Antes de encender o apagar el LED este parpadea tres o veces anunciando el cambio de estado. Watchdog Timer = Off. respectivamente. Ejemplo 2: Programacion en PICC Lite 4. Si o u la programaci´n se realiz´ en forma correcta tanto el c´digo compilado como el c´digo o o o o leido de vuelta del µC deben tener el mismo checksum que se muestra en la barra de men´ del MPLAB IDE.htsoft. un voltaje o de 5 V ser´ aplicado al LED. El programa permite encender y apagar un LED al presionar un bot´n pulsador.php (4) Instale el compilador siguiendo todos los pasos de la instalaci´n. Code Protect = Off (a menos que desee otra configuraci´n particular). Sin embargo. En la figura 6 se muestra el circuito para el Ejemplo 1. o u Normalmente el programador entregar´ un mensaje indicando si la programaci´n fue a o exitosa. u Programe el dispositivo presionando el icono de p´gina llena (amarilla) a µC o la a opci´n Programmer/Program de la barra de men´.6. o u Habilite el hardware programador con la opci´n Programmer/Enable Programmer. Power Up Timer = Off. 4. empleando la opci´n Programmer/Select Programmer de la barra de men´. o Este ejemplo ilustra la respuesta a est´ ımulos externos utilizando interrupciones implementada en lenguaje C para el compilador PICC Lite. Tambi´n puede ver los contenidos de la u e memoria del µC utilizando la opci´n View/Program Memory de la barra de men´. Con excepci´n de los componentes o conectados a RB7 (pin 13). por ejemplo el PICSTART Plus. los cuales corresponden a elementos espec´ ıficos del ejemplo.com/ (2) Instale el MPLAB siguiendo todos los de la instalaci´n. Paso 1: Instalaci´n y Configuraci´n del Compilador PICC Lite.2. si desea verificar si efectivamente la programaci´n se realiz´ o o en forma correcta. Para limitar el exceso de corriente que podr´ da˜ar el LED o el a ıa n puerto del PIC se coloca una resistencia en serie con el LED.microchip. Descripci´n. o ´ 4. El LED conectado a RB7 se encender´ de acuerdo al estado de la variable led en el c´digo del a o programa del microcontrolador. o (3) Obtenga el compilador PICC Lite en: http://www. Cuando el estado l´gico de la variable led es 1. o Borre la memor´ del µC presionando el icono de p´gina en blanco a µC o la opci´n ıa a o Programmer/Erase Flash Device de la barra de men´. Una configuraci´n alternativa es o ıa conectar desde Vdd (5 V) el LED en serie con la resitencia a RB7. o o (1) Obtenga el MPLAB IDE en: http://www. u 3. o . emplee el bot´n de verificaci´n (p´gina con check) o la opci´n o o a o Programmer/Verify de la barra de men´.1.

e o (8) Si todas las opciones elegidas est´n conformes. por ejemplo: ej2.h y delay. (3) Elija la opci´n de la barra de men´ Project/Project Wizard y luego presione Next.. Circuito del ejemplo 1. Paso 2: Creaci´n del Proyecto en MPLAB IDE. inicie el MPLAB IDE y actualice la lista de compiladores para que funcione junto con PICC Lite mediante los siguientes pasos: (a) En la opci´n de la barra de men´ elija Project/Set Language Tool Locations/HI-TECH o u Universal Toolsuite.3. (9) Elija la opci´n de la barra de men´ File/New para crear el archivo que contendr´ o u a el programa del ejemplo. y luego fije la ubicaci´n del directorio o del proyecto creado en el paso 1. por ejemplo:ej2. o (6) Escriba el nombre del proyecto.c ubicados en la directorio: C:\Program Files\HI-TECH Software\PICC\lite\9.60\samples o donde haya instalado PICC Lite a la carpeta del proyecto que creo en el paso anterior. (b) Elija la opci´n HI-TECH Universal ToolSuite/Executables/HI-TECH C Compiler o y fije la ubicaci´n donde instal´ el compilador picl.. (7) Seleccione los archivos delay. (5) Elija la herramineta de compilaci´n activa HI-TECH Universal ToolSuite y actualice o la ubicaci´n del compilador de ser necesario. presiones Next. a (2) Copie los archivos delay.h) bajo la o opci´n HI-TECH Universal ToolSuite/Default Search Path & Directories/Include o Search Path. o (1) Cree un directorio donde guardar´ los archivos del proyecto. de lo contrario retroa ceda a los pasos anteriores y haga las correcciones necesarias.exe (c) Si es necesario agregue la ubicaci´n donde se ubiquen archivos include (.60\bin\picl.c. (5) Una vez instalado el PICC Lite. y agr´guelos al proyecto con el bot´n Add.18 MIGUEL TORRES TORRITI Figura 6. Escriba el c´digo que se muestra a continuaci´n y guarde o o . 4.h y delay. o u (4) Elija el µC seleccionando PIC16F84A.exe. por ejemplo: o o C:\Program Files\HI-TECH Software\PICC\lite\9.

a. //#define XTAL_FREQ 20MHZ #define PORTBIT(adr.i<5. // Habilitacion global de interrupciones. ya que se pueden fijar externamente // en MPLAB IDE bajo la opcion de la barra de menu // <Configure/Configuration Bits. INTE = 1. // Boton presionado INTF = 0. // Fija el pin RB0 en como entrada // (en alta impedancia). } // Rutina Principal void main(void){ led = 1.i++){ DelayMs(125). for(i=0.i++){ DelayMs(125). Para guardar el archivo utilice la opci´n File/Save As. XTAL.} led = !led. // Limpia flag de interrupcion INTF } } // Rutina Parpadeo void blink(void){ // Parpadea el una veces antes de cambiar // de estado char i. // Funcion Interrupcion static void interrupt isr(void) { if(INTF){ // -. Disable) // PROTECT: Code write protection __CONFIG(XT&WDTDIS&PWRTDIS&PROTECT).h" // Configuration Bits (a. //__CONFIG(RC&WDTEN&PWRTEN&UNPROTECT).. for(i=0. bit) ((unsigned)(&adr)*8+(bit)) // Variables Globales static volatile bit led @ PORTBIT(PORTB.i<5.c. GIE = 1. Disable) // PWRT: Power-up Timer (EN/DIS: Enable. .i++){ DelayMs(255).. for(i=0. // Fija PS0-PS2 Pre-escaladores del // Watchdog Timer WDTR TRISB = 0b00000001.Flag Interrupcion en pin INT -// INTE = 0. o 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: #include <pic.TUTORIAL MICROCONTROLADORES PIC 19 el archivo con extensi´n .i<5. static volatile bit boton = 0. Fuses) // Estas lineas son opcionales. for(i=0. Low-power XTAL // WDT: Watchdog Timer (EN/DIS: Enable.> // Definiciones: // RC/HS/XT/LP: Oscilador RC. // Habilitacion de interrupciones externas.i<5. // OPTION = 0b00000111.} led = !led.7).} led = !led.i++){ DelayMs(255). por ejemplo con el nombre ej2.} led = !led.c en el directorio del o proyecto. High-speed XTAL. // Deshabilita interrupciones en pin INT boton = 1.k.h> #include "delay.

ya que eliminarlas podr´a alterar el comportamiento ı del programa. En lenguaje C // indica el inicio de un comentario en una l´nea. Comentarios de ı m´ltiples l´neas pueden realizarse colocando /* al inicio y */ al final de la secci´n de u ı o comentarios.. el valor de bit puede estar entre 0 y 7. La variable boton se define de manera similar en la l´nea 22 y se emplea m´s ı a adelante para indicar si el pulsador ha sido presionado o no. por lo que no es necesaria en el c´digo. // Deshabilita todas las interrupciones for(. puertos de entrada y salida de cada µC.Loop sin fin -if(boton){ // Boton presionado boton = 0. la habilitaci´n del Watchdog Timer. El calificador static se emplea para indicar al . ya que es requerida por las rutinas de retardo especificadas en delay. respectivamente. El calificador volatile se utiliza para indicar al compilador que no est´ garana tizado que la variables retendr´n su valor entre llamadas sucesivas. bit) para asignar el bit 7 del ı o puerto B a la variable led. Como las direcciones de memoria son bytes.>. Estas funciones reciben como argumento un n´mero entero entre 0 y 255 para gener retardos de miu crosegundos o milisegundos.. e t´picamente un cristal (XT). Ambas variables son declaradas como static volatile bit. Estos indican al µC el tipo de oscilador. o o Si se quisiese definir en el c´digo. Estas definiciones especifican dio recciones de memoria de programa.){ // -. ı o tambi´n conocidos como fuses (fusibles).20 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: } MIGUEL TORRES TORRITI // ei(). de la barra de men´... los bits de configuraci´n deber´n fijarse mediante o a la opci´n Configure/Configuration Bits. es decir la variable led est´ asociada a RB7 en el pin a 13. bit). La l´nea 18 permite indicar un bit espec´fico de una direcci´n de memoria adr meı ı o diante el texto PORT(adr. // INTE = 1. Esta l´nea es opo ı cional. // Habilita todos los tipos de interruptciones // di(). si no se fija en el programa. Esta opci´n ya ı o fue agregada a las opciones de compilaci´n. Todas las variables que est´n asociadas a puertos (pines) de a entrada/salida o que son modificadas en rutinas de interrupci´n siempre o deben ser declaradas volatile. deber´ removerse de las opciones de compilaci´n y o a o colocarse antes de los #include <. interrupciones. la habilitaci´n del ı o o Power-up Timer y la proteccci´n contra escritura de la memoria. En la l´nea 21 se utiliza la definici´n PORT(adr. // Espera 10 microsegundos blink(). // Cambia el estado del led DelayUs(10). // Limpia flag del boton presionado led = !led. El tipo bit indica que son un bit de un registro.h espec´fico a este ejemplo con ı ı las definiciones de las funciones de retardo delayUs() y delayMs().. En la l´nea 2 se incluye el archivo delay. Esto evita que el a optimizador elimine m´ltiples referencias a las variables que de otro modo pudiesen u ser consideradas redundantes. En la l´nea 13 se utiliza la macro __CONFIG() para fijar los bits de configuraci´n. // Habilita interrupciones en pin INT } } Comentarios Generales del Programa: En la l´nea 1 se incluye las definiciones ı generales para la compilaci´n empleando PICC Lite. o u La l´nea 16 muestra la manera de definir la frecuencia del cristal.h. En el caso de la funci´n delayUs() se o recomienda utilizar valores bastante menores a 255.

Aqueo llas variables que no son static se crean en posiciones que son asignadas en forma din´mica a medida que se necesitan. ı o son bits del registro INTCON. Sin embargo.TUTORIAL MICROCONTROLADORES PIC 21 compilador que reserve una posici´n fija de la RAM para almacenar la variable.. T0IE. El registro TRISB se utiliza para indicar los pines del puerto B que son de alta impedancia (entradas). INTE.). Otros flags de interrupci´n son el del timer (T0IF) y las interrupciones o por cambio de estado en alguno de los pines 4. a Entre las l´neas 25 y 32 se define la funci´n interrupci´n isr(void) empleando el ı o o calificador interrupt. En la l´nea 57 se fija el pin ı ı RB0 como una entrada. En primer lugar se o enciende el LED colocando su estado en 1 (l´nea 54). Rebote del bot´n. El prop´sito de deshabilı o o itar las interrupciones externas es evitar nuevas interrupciones por rebotes del bot´n o pulsador. 5. M´s informaci´n sobre las interrupciones y su manejo se a o pueden encontrar en la hoja de especificaciones del µC PIC16F84 o tambi´n en: e http://www. 6 o 7 del puerto B (RBIF). El rebote de un bot´n se refiere a las oscilaciones que se producen antes de o que el bot´n se cierre completamente y la tensi´n se nivele en su valor final. Siempre al iniciar todo programa es importante fijar los bits que ser´n utilizados como entradas de los puertos a . La funci´n o o interrupci´n es ejecutada cuando ocurre cualquiera de las interrupciones posibles. o La desabilitaci´n de la interrupciones se puede realizar fijando INTE en 0 como se o muestra en la l´nea 28.mikroe. o Las funci´n blink(void) se utiliza para hacer parpadear el led cambiando su estado o repetidas veces por periodos de tiempo controlados por la funci´n DelayMs(. o Figura 7. en la pr´ctica las funciones de retardo hacen ı a innecesaria la l´nea 28. o La funci´n main(void) contiene parte del programa principal.. El nombre de la funci´n no tiene importancia. as´ como los bits de habilitaci´n de interrupciones GIE.com/en/books/picbook/2_07chapter. por o ejemplo un overflow del timer o un cambio de estado en el pin RB0. Este o o fen´meno se muestra en la figura 7. por esta raz´n ha sido comentada.htm En el c´digo del programa la funci´n de interrupci´n se encarga de reconocer el o o o evento colocando nuevamente en 0 el flag de interrupci´n INTF y colocando la variable o boton en 1 para indicar que el bot´n fue presionado. Todos estos flags. La variable INTF (flag de interrupci´n) cambiar´ de 0 a 1 cuando se produce una interrupci´n externa en o a o RB0 (pin 4). RBIE.

Luego se habilitan las interrupciones (l´neas 59 y 60). el cual permanentemente est´ detectando el ´ a estado de la variable boton.mcb. Antes de cambiar de estado finalmente. Otra manera de agregar un archivo es seleccionando con el bot´n dereo cho del mouse la secci´n deseada en la lista de archivo del proyecto.. Luego seleccione la secci´n Compiler y agregue la siguiente definici´n de macro: o XTAL_FREQ=20MHZ Esto agregar´ la opci´n de compilaci´n -DXTRAL_FREQ=20MHZ (ver el paso siguiente). la cual cambiar´ a 1 si ocurre una interrupci´n externa. puesto que estas no ı son deshabilitadas en ning´n momento.c creado en el paso anterior. con un cristal de 20 MHz desde la l´ ınea de comando en una ventana DOS ejecute las siguientes instrucciones: picl --chip=16F84A -DXTAL_FREQ=20MHZ -C delay. a o • L´ ınea de Comando: Para compilar el proyecto para la version actual del PIC16F84.as) y que la opci´n Auto est´ seleccionada.># en el c´digo del programa.c. En este caso. seleccione con el bot´n derecho del mouse el t´ o ıtulo del proyecto. (2) Existen dos opciones para compilar el programa: o • MPLAB IDE: Para compilar el proyecto seleccione la opci´n de la barra de men´ Project/Build o presione las teclas CTRL+F10. o La definici´n de esta macro es necesaria para ajustar el ciclo de operaci´n de las o o rutinas de retardo a la frecuencia del cristal oscilador.. Por ultimo se inicia un loop sin fin. la o secci´n ser´ Source Files. la cual mostrar´ el estado de la compilaci´n. Del men´ desplegado elija la opci´n Add Files y siga o ıa u o los pasos ya explicados en este punto para seleccionar el archivo./Project. Paso 3: Compilaci´n del Proyecto con PICC Lite. entonces ser´ necesario volverlas a habilitar en la l´nea o ı ıa ı 70 para poder reconocer nuevas interrupciones.c picl --chip=16F84A -DXTAL_FREQ=20MHZ -oej2. Se abrir´ una ventana con u a el nombre Output. se reconoce que el bot´n pulsador fue presionado colocando la variable ı o de estado boton nuevamente en 0. Del men´ desplegado elija la opci´n Save para u o grabar el proyecto. Si estas fuese deshabilitadas por la funci´n u o interrupci´n en la l´nea 28. esto deo a ber´ agregar el archivo al a secci´n Source Files en la ventana con la lista de archivos ıa o del proyecto. es decir si estaba en 0 se coloca en 1. 4. por ejemplo ej2..4.. Presione Open.22 MIGUEL TORRES TORRITI A y B. y si estaba o en 1 se coloca en 0. a o De ser as´. Una ı alternativa es utilizar la funci´n ei() comentada en la l´ o ınea 61. (10) Agregue el archivo con el c´digo en lenguaje C (creado en el paso anterior al proyecto) o empleando la opci´n Project/Add Files to Project. el estado de la varaible led se invierte mediante el operador ! de negaci´n. (11) De la lista de archivos del proyecto. a o o Alternativamente puede definir la macro con el pragma: #define XTAL_FREQ 20MHZ antes de colocar las l´ ıneas #include <. Esto se realiza asignando un 1 a los bits correspondientes de los registros TRISA y TRISB.cof .. el PIC16F84A. se hacer parpadear al LED invocando la funci´n blink(void) creada para dicho prop´sito. Verifique que el tipo de archivo esta fijado en Source (*. y seleccione el archivo o ej2. *. Luego. o o o (1) Seleccione la opci´n Project/Build Options.c picl --chip=16F84A -DXTAL_FREQ=20MHZ -C ej2. La l´nea o o ı para volver habilitar las interrupciones (l´nea 70) fue comentada...

o bien usando el MPLAB IDE si posee alg´n programador Microchip como el u PICSTART Plus. %l. o picl -q -g --asmlist --chip=16F84A "--errformat=Error [%n] %f.%c %s" -P --char=unsigned -DXTAL_FREQ=20MHZ -C ej2. o Puede programar el µC seg´n lo explicado en las secciones 2.obj ej2. Por razones de espacio estas fueron divididas en tres l´ ıneas en este documento.obj y ej2.5. definiendo el tipo de dato para los caracteres. deber´ entonces realizar los dos primeros pasos de la secci´n 3. A continaci´n se explican los pasos de programaci´n desde MPLAB IDE o o asumiendo que ha realizado los pasos descritos en la etapa de creaci´n del proyecto y compio laci´n. a o . etc. se realiza el proceso de uni´n (linking) o o de los c´digos objetos delay. Assembler) activas.obj ej2.3. velocidad. donde <=type> puede tomar distintos valores que se especifican en el manual del compilador PICC Lite. %l. por ejempa plo. primero de los archivos con las o definiciones para las funciones de retardo delayUs() y delayMs().%c %s" -P --char=unsigned -DXTAL_FREQ=20MHZ -C delay.2 del presente u documento. como se o muestra a continuaci´n.3. Si el archivo .%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f. 4. Es importante que estas est´n activas para este ejemplo.cof -mej2.1.obj Alternativamente puede ejecutar las instrucciones con m´s opciones. En ambos casos la compilaci´n se ejecutar por partes.5. Finalmente. En todos los casos la compilaci´n se realiza con todas o a o las optimizaciones (espacio.hex con el o c´digo de m´quina para el µC. %l. %l. %l.obj Es importante considerar que las l´ ıneas anteriores deben ser ejecutadas en una sola l´ ınea. 2. En e otros casos. la generaci´n de o c´digo Assembly.3.map delay. ya que las funciones de retardo las requieren. Paso 4: Programaci´n del µC.c picl -q -g --asmlist --chip=16F84A "--errformat=Error [%n] %f.obj para generar el archivo ej2.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f.%c %s" -P --char=unsigned -DXTAL_FREQ=20MHZ -oej2. es posible desactivar o controlar el nivel de optimizaciones con la opci´n o --OPT<=type>.map delay. Luego se compila el c´digo principal del ejemplo.TUTORIAL MICROCONTROLADORES PIC 23 -mej2. %l..c picl -q -g --asmlist --chip=16F84A "--errformat=Error [%n] %f.hex fue creado usando el PICC mediante compilaci´n fuera del ambiente o o MPLAB IDE. 2. fijando el formato de los mensajes de error y advertencias.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f.

Sin embargo. mientras el pulsador no sea presionado y cambie la se˜al a HIGH (1). Como se puede apreciar en la figura.. En la figura 8 se muestra el circuito para el Ejemplo 2.24 MIGUEL TORRES TORRITI (1) Verifique las opciones de configuraci´n de MPLAB IDE.. o u (5) Normalmente el programador entregar´ un mensaje indicando si la programaci´n fue a o exitosa. (2) Seleccione el hardware programador. Verifique tambi´n que los bits de configuraci´n de e o la opci´n Configure/Configuration Bits. el circuito de este ejemplo es muy similar al del Ejemplo 1. Si se desea que la interrupci´n n o se genere al soltar el bot´n. La unica modificacion al circuito ´ del ejemplo anterior es la adici´n de un bot´n pulsador B1 entre 5 V y RB0/INT con una o o resistencia Pull-Down R3. emplee el bot´n de verificaci´n (p´gina con check) o la opci´n o o a o Programmer/Verify de la barra de men´. Tambi´n puede ver los contenidos de la u e memoria del µC utilizando la opci´n View/Program Memory de la barra de men´. Si o u la programaci´n se realiz´ en forma correcta tanto el c´digo compilado como el c´digo o o o o leido de vuelta del µC deben tener el mismo checksum que se muestra en la barra de men´ del MPLAB IDE. u (4) Programe el dispositivo presionando el icono de p´gina llena (amarilla) a µC o la a opci´n Programmer/Program de la barra de men´. de la barra de men´ son: Oscillator o u = XT. Power Up Timer = Off. . La resistencia Pull-Down mantiene el puerto en LOW (0).6. o Figura 8. Circuito del Ejemplo 2. si desea verificar si efectivamente la programaci´n se realiz´ o o en forma correcta. Circuito del ejemplo 2. u 4. En particular verifique en la o opci´n Configure/Select Device. por ejemplo el PICSTART Plus.. empleando la opci´n Programmer/Select Programmer de la barra de men´. Watchdog Timer = Off. de la barra de men´ que el dispositivo correo u sponde al µC PIC16F84 o 16F84A. Code Protect = On. entonces deber´n intercambiarse la resistencia Pull-Down por el o a bot´n pulsador.. o u (3) Borre la memor´ del µC presionando el icono de p´gina en blanco a µC o la opci´n ıa a o Programmer/Erase Flash Device de la barra de men´.

adquirir los conocimientos para utilizar este nuevo PIC es considerablemente m´s f´cil. los cuales describen t´cnicas espc´ o e ıficas. a Para dominar el PIC16F84 u otros µCs es esencial conocer y comprender a cabalidad la hoja de datos del µC provista por el fabricante.1. Estos documentos son muy ilustrativos. como un menor costo frente al PIC16F84. tanto en su funcionamiento. Otros fabricantes pueden tener productos considerablemente diferentes. PIC16F87x. convertidores A/D. Freescale MC68HC08. Desarrollos mas alla de este Documento Existe una variedad de µCs y posibles aplicaciones tan grande que puede parecer abrumadora al punto de dificultar o confundir la decisi´n de c´mo abordar nuevos temas y cual es el mejor o o camino a seguir.TUTORIAL MICROCONTROLADORES PIC 25 ´ ´ 5. El PIC16F87x es el m´s popular para aplicaciones de nivel intermedio. instrucciones de CPU o m´todo de programaci´n. y es una excelente a opci´n cuando se requieren m´s l´ o a ıneas de entrada/salida. 5. esta familia de u dispositivos tiene ciertos atractivos. Consulte las n´merosas u referencias incluidas al final de este documento. se˜ ales PWM. se˜ales PWM. Las aplicaciones posibles del PIC16F84 solo est´n limitadas por la imaginaci´n. a e existe una gran cantidad de ejemplos y recursos en libros y la Internet. los µCs de e o nivel de entrada (entry-level) tienen mucho en com´n.com/). y la disponibilidad gratuita n del popular entorno de desarrollo CodeWarrior. Adem´s est´n disponibles en encapsulados de a a 8 y 16 pines. n comunicaci´n serial por hardware.2. convertidores A/D en casi todas sus versiones. Microchip provee tambi´n de documentos llamados e Application Notes (Notas de Aplicaci´n). a 5. . Sin embargo. Por otro lado.freescale. En esta secci´n se sugieren algunos caminos para involucrarse en el desarrollo o de aplicaciones m´s complejas. En la secci´n de educaci´n de Microchip tambi´n es posible o o e encontrar referencias de varios libros sobre los µCs PIC [23]. En Intera o net pueden encontrarse aplicaciones sorprendentemente creativas a pesar de la simplicidad y restricciones de este µC b´sico. o f´ciles de comprender y mantienen la rigurosidad t´cnica de los fabricantes. El costo de la versi´n PIC16F877. Este es el caso de los µCs Freescale u MC68HC08 (originalmente Motorola HC08). entre otros aspectos. oscilador interno. Estos fueron introducidos al mercado para competir con los µCs de Microchip. es aproximadamente el doble que el del PIC16F84 con valores entorno a USD $10 versus USD $ 5. n u Una vez que se ha dominado adecuadamente el PIC16F84. Se recomienda en particular leer y hacer los ejemplos presentados en [11]. a a o que es la que cuenta con m´s caracter´ a ısticas de la serie. A pesar que actualmente la popularidad y disponibilidad de herramientas de software para estos µCs es a´n menor que la de los µCs PIC. Existen versiones con distintas caro acter´ ısticas como el tama˜o de la memoria y n´mero de pines. aplicaciones y su implementaci´n con un gran nivel de detalles. Para mayor informaci´n consulte la secci´n de microcontroladores de Freescale o o (http://www.

de Ingenier´ El´ctrica de la Universidad Cat´lica de Chile. ttyS0 #base= 0x2f8 # com2.26 MIGUEL TORRES TORRITI Agradecimientos Este tutorial fue posible gracias a una versi´n anterior del tutorial preparad por Juan Pablo o Caram en Octubre del 2003 para el curso IEE2712 Laboratorio de Circuitos del Dpto. ttyS1 #base= 0x3e8 # com3. Resistencia de 470 Ω (valor no cr´ ıtico). Ap´ndice B. Diodo 1N4148 u otro diodo rectificador de se˜al. Cristal oscilador de 20 MHz (alternativamente 4 MHz. Regulador de voltaje 7805. ıa e o Ap´ndice A. n Conector DB9 Hembra para PCB en 90◦ . no_power_C4C8 = 0 power: TxD mclr: TxD data: DTR data_f: CTS clock: RTS . Base DIP18. Bot´n pulsador “siempre abierto” (normalmente abierto).7 µF (valor no critico). Este debe modificarse para o seleccionar el puerto serial a utilizar y el tipo de hardware programador. ttyS3 # settings for UniprogIV / BR870 # and similar seriel PIC programmers. Condensadores de 22 pF. o 10 MHz). Condensador electrol´ ıtico de 100 µF.7 kΩ (valor no cr´ ıtico). Lista de Componentes para los Ejemplos e 2 1 2 1 1 1 Resistencias de 10 kΩ (valor no cr´ ıtico). Lista de Componentes del Programador e 2 1 1 1 1 1 1 Resistencias de 4. Condensador de 4. Resistencia de 10 kΩ (valor no cr´ ıtico). ttyS2 #base= 0x2e8 # com4. Configuracion del PROG84 e El archivo de configuraci´n del PROG84 se denomina lp_cfg. Para el programador COM84 lo esencial es configurar el puero serial que se desea utilizar (l´ ıneas 4 a 7) seg´n se u muestra en el siguiente ejemplo: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: port serial ### for serial port: base= 0x3f8 # com1. o ´ Ap´ndice C.

Incluye o links a compiladores. ensambladores. o a [7] IC-Prog Prototype Programmer.com/conference/ Tutorial Descriptivo del PIC18Fxxxx. un buen complemento al presente tutorial.org/ Recopilaci´n de recursos para el manejo y desarrollo de aplicaciones con PICs para Linux/BSD. May. http://jal. o [9] David Tait.com/~eric/pic/ [11] mikroElektronika : books : PIC microcontrollers: http://www.com/ Sitio del fabricante de los microcontroladores PIC. Inc. Aqu´ podr´ obtener JAL para Linux/BSD.voti.brouhaha. simuladores.microchip. a [2] Gnu PIC Utilities (gputils).botkin.net/ Conjunto de herramientas para microcontroladores Microchip PIC. ensambladores. [3] HI-TECH Software LLC.pdf Tutorial Descriptivo del PIC16F87x por John Becker. Programador de PICs e informaci´n relacionada. mikroElectronica.com/en/books/picbook/picbook. toda la documentaci´n asociada y acceder a numerosos ejemplos.com/ INTRODUCCION A LOS MICROCONTROLADORES PIC [8] Wouter van Ooijen.gnupic.htm Contiene ejemplos sencillos de aplicaci´n.sourceforge. Windows o MacOS ı a X.htsoft. http://www. o http://people.TUTORIAL MICROCONTROLADORES PIC 27 Referencias REFERENCIAS BASICAS [1] Microchip Technology. programadores y otras herramientas. que incluyen compiladores. http://www. El sitio presente en forma o resumida los cap´ ıtulos del libro: The PIC microcontroller. el lenguaje de ensamblador. La versi´n completa de este producto es uno de los compiladores m´s poderosos existentes o a para microcontroladores PIC.org/dale/PIC.uk/pictutorial. desensambladores. por Nebojsa Matic y Dragan Andric. o MLAB IDE. http://www. [14] PIC Pages http://www.co.ccsinfo.html [10] Eric’s PIC Page. 2000.epemag. por Wouter van Ooijen.com/ [6] GNUPIC.ac.mikroe.uk/~mbhstdj/piclinks.nl/swp/ Introducci´n sencilla y completa.microchipc. 3a ed.htm Este sitio contiene una excelente introducci´n a los microcontroladores PIC. Este puede obtenerse en forma gratuita de su sitio web.com/ HITECH Software LLC.ic-prog. En la secci´n programadores encontrar´ un link para bajar el Prog84. produce el compilador PICC Lite para C. TUTORIALES [12] http://www. [13] http://www. Util como referencia general pero no para empezar. o [5] CCS. [4] Jal. Este es util como referencia pero no es el mejor ´ ejemplo para empezar.man. http://www. http://www. Los cap´ ıtulos del libro abordan la introducci´n general a los microcontroladores.net/ Sitio de la comunidad de desarrollo de JAL. y varios ejemplos. o . y simuladores. Inc. Aqui encontrar´ las hojas de datos y Application Notes..wimborne. http://www. Starting with PIC microcontrollers. http://www.sourceforge. http://gputils.

spectrum-soft. entre otros. [18] Peter Anderson’s PIC Page: http://www.net/~paul.cl/~iee2172/?q=node/2 [22] Links about Electronics Microprocessors. como el desarrollo de PCBs a partir de los esquem´ticos o herramientas para facilitar la ense˜anza y aprendizaje de a n electr´nica.28 MIGUEL TORRES TORRITI EJEMPLOS DE APLICACION [15] J.ar/electron/proyecto/picnet/index.com/PIC/ Presenta ejemplos con interrupciones.microchip. o pero de gran utilidad pr´ctica.ac.pablin.9. pero de gran o utilidad pr´ctica. Este proyecto tambi´n se encuentra traducido al espa˜ol en la p´gina web de Pablin.ing.html BOOTLOADERS [20] PIC micro and C bootloader by Shane Tolmie: http://www. nivel y tipo de microcontrolador que se emplea en el e libro.microchipc. e [19] Paul Hills.pablin. Lourens.com/PIC18bootload/ REFERENCIAS ADICIONALES [21] IEE2172 Laboratorio de Circuitos UC http://www2. a a [17] Build Your Own Microcontroller Projects: http://www. PICs by Hobby-Electronics: http://www. o . DC y AC. Esta basado en Spice y permite realizar an´lisis transiente.com. rutinas aritm´ticas.kmitl. es muy similar a Microcap. Charais.com/ Software de simulaci´n de circuitos anal´gicos y digitales que permite simular los circuitos a partir de su o o descripci´n en base a esquem´ticos.pablin. o http://www.htm (Software para electr´nica.info/links/icup.htm Entradas y Salidas de un PIC controladas por Internet – Excelente ejemplo de una aplicaci´n sencilla. Microchip Technology Inc. e Actualmente es desarrollado por National Instruments y ha incorporado otras herramientas.pdf Interesante ejemplo de aplicaci´n de microcontroladores al control de motores.com.ac.com/multisim/ Originalmente llamado Electronics Workbench.puc. SOFTWARE PARA SIMULACION DE CIRCUITOS [24] Microcap: http://www.ar/electron/download/index. La lista tambi´n incluye datos sobre el idioma. ver referencia m´s abajo. Application Note AN 964.9/easyserver0.com. El proyecto original es de Wichit Sirichote. Software PID Control of an Inverted Pendulum Using the PIC 16F684. http://ww1.th/~kswichit%20/ http://www.microchip. R.kmitl.com/PIC16bootload/ http://www.microchipc.which. o [16] Pablin Electr´nica. interfaces serial. Using microcontrollers in your robot: http://homepages.com/downloads/en/AppNotes/00964A.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1441 Este sitio contiene una extensa lista de libros publicados por diversos autores sobre los microcontroladores PIC.ar/electron/ http://www. o a a [25] Multisim: http://www.hobby-electronics. tambi´n basado en SPICE.phanderson.hills/Embedded/Embedded.php?PHPSESSID=2aa545e794080ff3d135ba1b9caa6b4a#pic [23] Microchip Technology’s University Corner: http://www.) o http://www. ver a e n a referencia anterior.htm REMOTE[RS232] Using Easy-Server V0.th/~kswichit%20/easyserver0.ni. Programmable Components. Proyectos y circuitos de ejemplo.9 – Excelente ejemplo de una aplicaci´n sencialla.

de/ Excelente software para el dise˜o de PCBs y dibujo de esquem´ticos que funciona bajo Linux/BSD o n a Windows. Tiene una librer´ de componentes muy completa y es muy f´cil agregar componentes nuevos. Chile. ago. ıa a Permite generar los PCBs directamente a partir de los esquem´ticos. : 56 (2) 354-2000 . http://www.cadsoft. Santiıa.TUTORIAL MICROCONTROLADORES PIC 29 ˜ SOFTWARE PARA DISENO DE PCBs y ESQUEMATICOS [26] Eagle: http://www.cadsoft. Tel.de/ a ´ ˜ Escuela de Ingenier´ Pontificia Universidad Catolica de Chile. Vicuna Mackenna 4860.