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

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

• Otras opciones: – Conversores An´logo-Digitales (A/D. el a o microcontrolador puede responder a eventos externos y realizar una cierta acci´n. • 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. Cuando son entradas.3. se genera una se˜al de interrupci´n que iniciar´ la ejecuci´n de n o a o la subrutina de interrupci´n. los n µCs cuentan con un recurso conocido como interrupciones. Red de Area de Controladores (CAN. Monitoreando el valor de las entradas. a 1. Una vez pulsado. Para responder a eventos externos. Pulse-Width Modulation) para generar ondas cuadradas de frecuencia fija pero con ancho de pulso modificable. • Prueba y verificaci´n: Por ultimo. como variar o las se˜ales de salida de acuerdo al valor en la entradas. • 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. Proceso de Desarrollo. el µC debe conectarse al circuito base y someo ´ terse a pruebas para verificar el funcionamiento correcto del programa. o al cumplimiento de un periodo de tiempo fijado por un timer o temporizador. Un aspecto de especial inter´s para el desarrollador de circuitos basados en microcontroladores e son las interfaces de entrada/salida.4 MIGUEL TORRES TORRITI Seriales (SPIs. 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. Tambi´n hay interrupciones que pueden estar asociadas al valor de una entrada e AD. 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. Serial Peripheral Interfaces). – Moduladores por Ancho de Pulso (PWM. No todas las interrupciones necesariamente est´n asociadas al cambio del estado de los pines a de entrada. las cuales se explican en m´s detalle en las siguientes subseca ciones. pueden adquirir datos interpretando el valor de voltaje como un valor l´gico 0 o 1. La alta integraci´n de subsistemas que componen un µC reduce el n´mero de chips. es decir pueden configurarse como entradas o salidas. 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. Estas caracter´ ısticas depender´n del modelo de µC empleado. El proceso de desarrollo de una aplicaci´n basada en microcontroladores se compone de las o siguientes etapas principales. analog-to-digital) para convertir un nivel a de voltaje en un cierto pin a un valor digital manipulable por el programa del microcontrolador. 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. Controller Area Network). Por lo general varios pines de datos son bidireccionales. . que por ejemplo podr´ activar un pin de salida para encender o ıa un led. 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. USB (Universal Serial Bus). Un ejemplo t´ o ıpico es el de un bot´n pulsador conectado a un pin o de entrada.

Existen distintas maneras de desarrollar el programa. 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. compuesto por instrucciones en c´digo binario que a o o son directamente entendidas por la CPU del microcontrolador.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.asm) → ensamblador → (. Tal vez los lenguajes de a a 1En estricto rigor. . Al carecer de abstracciones.o.coff (common object file format) dependiendo del ensamblador.bin.Lenguaje de M´quina/C´digo Objeto a o (.bin. En esta etapa consiste en escribir y compilar/ensamblar el programa que determinar´ las a acciones del µCy su funcionamiento. Otra alternativa es emplear un lenguaje de alto nivel con una mayor cantidad de abstracciones.o (por objeto). .hex (por hexadecimal). dependiendo del lenguaje inicial que se utiliza para escribir el programa: • Lenguaje Assembly .Lenguaje Assembly . .cpp) → compilador → (. ya que el programa a a se desarrolla en un nivel cercano a las caracter´ ısticas del hardware. El ensamblador normalmente genera un archivo con extensi´n .coff) • Lenguaje de Alto Nivel . Assembly es el lenguaje y Assembler es la herramienta de software que traduce el c´digo o Assembly a lenguaje de m´quina.1. la cuales son m´s f´ciles de usar y reducen los tiempos de desarrollo. .hex. 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. .bin (por binario).Lenguaje de M´quina/C´digo Objeto a o (. . Etapas del desarrollo de software.asm) → ensamblador → (.3. Desarrollo del software. requiere experiencia y un a ıcil mayor tiempo de desarrollo. 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.asm y luego utilizar una programa ensamblador (Aso sembler) para generar un archivo en lenguaje de m´quina. . Sin embargo. 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.hex. tambi´n denominado c´digo de a e o m´quina o c´digo objeto (object code). el lenguaje Assembly es m´s dif´ de emplear. El lenguaje Assembly se compone de instrucciones mnem´nicas de bajo nivel.c. o a Figura 1. . .TUTORIAL MICROCONTROLADORES PIC 5 1. . o o .

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

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

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

dise˜ado por Feng para n chips de 8/18/28/40 pines. 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. Programaci´n del µC PIC16F84. 2* / Pablin II** / ProPic II / Shaer / Tait /Shaer IC-Prog Prototype Programmer . aunque en algunos aspectos el circuito parece una versi´n simplificada o del ProPIC II: * Multi PIC Programmer 5 Ver.cool.hex. 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. Por lo general estas duplas software-hardware son interdependientes. El dise˜o cono n sidera adem´s de factores como costo y simplicidad.com/ a a Observaciones: El IC-Prog es tal vez el software programador m´s vers´til junto con el WinPIC DL4HYF. la flexibilidad de uso en diferentes a computadores. Este tambi´n se parece al Multi PIC Programmer e 5 Ver. 2 http://feng3. Entre los e programadores destacan algunos que no se encuentran mencionados en la p´gina de a IC-Prog. sino tambi´n pueden trabajar con variados circuitos programadores. • SW: IC-Prog + HW: JDM / Fluffy2 / Ludpipo / Multi PIC Programmer 5 Ver.com/Myke4. Este est´ basado en el programador JDM y se alimenta del a puerto serial. A continuaci´n se presenta o o un resumen de las combinaciones software-hardware para programadores. El programador Pablin II se puede encontrar en: ** Programador PIC Pablin II .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. 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. 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.ic-prog.3. 2.ne. Chips: Solamente probado con el PIC16F84. lo que puede dificultar encontrar una combinaci´n que funcione correctamente y sea a la vez simple y general.Bonny Gijzen http://www. a 2. Uno de ellos es el Multi PIC Programmer 5 Ver. 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 Internet se pueden encontrar disponibles en forma gratuita numerosas duplas softwarehardware para programar µCs PIC bajo diferentes sistemas operativos.rentron. 2. En el siguiente resumen. • SW: ElCheapo + HW: ElCheapo PIC Programmer by Myke Predko http://www. este compila y ensambla a la vez entregando el c´digo de o m´quina en un archivo .htm Observaciones: Este programador emplea un circuito similar al COM84 con cuatro partes adicionales y alimentaci´n externa. SW significa software y HW significa hardware.TUTORIAL MICROCONTROLADORES PIC 9 igual que varios comipladores de C. ya que no s´lo son capaces de programar una gran variedad de o µCs.jp/en/pg5v2.

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

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

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

Una vez que el µC ha entrado en modo de o programaci´n. Por esta raz´n el programador o puede presentar problemas de funcionamiento en ciertos computadores. Esto se logra mediante el software programador.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). o . 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. o o mientras que RB6 (PGC o Program Clock) se utiliza como seal de reloj para aceptar cada bit en RB7. o o o Figura 4. 2. e inmediatamente despu´s deber llevase y mantenerse en un voltaje e entre 12 y 14 V durante toda la programaci´n. 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. Programador serial minimalista JDM PIC Programmer 2. como aquellos que utilizan circuitos seriales de baja potencia para ahorro de consumo muy comunes en algunos computadores port´tiles. Circuito Base para Operaci´n Regular. En todo caso. se utiliza RB7 (PGD o Program Data) para ingresar serialmente la informaci´n.4. Los detalles del protocolo de programaci´n pueden encontrarse en la documentaci´n del fabricante [1]. mientras que M CLR (pin 4) debe llevarse a 0 por un periodo corto para resetear el µC.

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

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

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

2. Power Up Timer = Off. respectivamente. Circuito del Ejemplo 1.microchip. los cuales corresponden a elementos espec´ ıficos del ejemplo. Con excepci´n de los componentes o conectados a RB7 (pin 13). 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´. Descripci´n. 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´. Ejemplo 2: Programacion en PICC Lite 4. 4. o Este ejemplo ilustra la respuesta a est´ ımulos externos utilizando interrupciones implementada en lenguaje C para el compilador PICC Lite.TUTORIAL MICROCONTROLADORES PIC 17 (4) (5) (6) (7) (8) = XT. por ejemplo el PICSTART Plus. 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´. 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. o o (1) Obtenga el MPLAB IDE en: http://www. o u Normalmente el programador entregar´ un mensaje indicando si la programaci´n fue a o exitosa. Code Protect = Off (a menos que desee otra configuraci´n particular). o ´ 4. o (3) Obtenga el compilador PICC Lite en: http://www. En la figura 6 se muestra el circuito para el Ejemplo 1. 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. Esto causar´ que el LED se encienda cuando la variable led tenga un estado l´gico 0. 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.php (4) Instale el compilador siguiendo todos los pasos de la instalaci´n. el resto de los componentes constituyen la circuiter´ m´ ıa ınima para el funcionamiento del PIC16F84.com/ (2) Instale el MPLAB siguiendo todos los de la instalaci´n.htsoft. El programa permite encender y apagar un LED al presionar un bot´n pulsador. o u Habilite el hardware programador con la opci´n Programmer/Enable Programmer. 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. Antes de encender o apagar el LED este parpadea tres o veces anunciando el cambio de estado. un voltaje o de 5 V ser´ aplicado al LED. u 3. o . empleando la opci´n Programmer/Select Programmer de la barra de men´. si desea verificar si efectivamente la programaci´n se realiz´ o o en forma correcta.6. o Seleccione el hardware programador.1.com/products/compilers/PICClite. 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´. Sin embargo. Watchdog Timer = Off. Una configuraci´n alternativa es o ıa conectar desde Vdd (5 V) el LED en serie con la resitencia a RB7. Paso 1: Instalaci´n y Configuraci´n del Compilador PICC Lite.

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

} led = !led.h" // Configuration Bits (a.i++){ DelayMs(125). // Fija PS0-PS2 Pre-escaladores del // Watchdog Timer WDTR TRISB = 0b00000001. //#define XTAL_FREQ 20MHZ #define PORTBIT(adr.} led = !led.i++){ DelayMs(255).i<5. Para guardar el archivo utilice la opci´n File/Save As.} led = !led. // Habilitacion global de interrupciones.c.TUTORIAL MICROCONTROLADORES PIC 19 el archivo con extensi´n . // Boton presionado INTF = 0.7).. // Fija el pin RB0 en como entrada // (en alta impedancia).i<5. // Funcion Interrupcion static void interrupt isr(void) { if(INTF){ // -. // Limpia flag de interrupcion INTF } } // Rutina Parpadeo void blink(void){ // Parpadea el una veces antes de cambiar // de estado char i. bit) ((unsigned)(&adr)*8+(bit)) // Variables Globales static volatile bit led @ PORTBIT(PORTB. } // Rutina Principal void main(void){ led = 1.k.. .i<5. por ejemplo con el nombre ej2. INTE = 1. // Habilitacion de interrupciones externas. //__CONFIG(RC&WDTEN&PWRTEN&UNPROTECT). High-speed XTAL. Low-power XTAL // WDT: Watchdog Timer (EN/DIS: Enable.c en el directorio del o proyecto. for(i=0.i++){ DelayMs(255).i<5. static volatile bit boton = 0.i++){ DelayMs(125). ya que se pueden fijar externamente // en MPLAB IDE bajo la opcion de la barra de menu // <Configure/Configuration Bits. // OPTION = 0b00000111. 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. // Deshabilita interrupciones en pin INT boton = 1. Disable) // PROTECT: Code write protection __CONFIG(XT&WDTDIS&PWRTDIS&PROTECT).a.> // Definiciones: // RC/HS/XT/LP: Oscilador RC. for(i=0. GIE = 1.Flag Interrupcion en pin INT -// INTE = 0. Disable) // PWRT: Power-up Timer (EN/DIS: Enable. XTAL. for(i=0.} led = !led. for(i=0.h> #include "delay. Fuses) // Estas lineas son opcionales.

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

El prop´sito de deshabilı o o itar las interrupciones externas es evitar nuevas interrupciones por rebotes del bot´n o pulsador. o La desabilitaci´n de la interrupciones se puede realizar fijando INTE en 0 como se o muestra en la l´nea 28. Sin embargo. Este o o fen´meno se muestra en la figura 7. ı o son bits del registro INTCON. por esta raz´n ha sido comentada.mikroe.com/en/books/picbook/2_07chapter. Todos estos flags. En la l´nea 57 se fija el pin ı ı RB0 como una entrada. RBIE. por o ejemplo un overflow del timer o un cambio de estado en el pin RB0. Otros flags de interrupci´n son el del timer (T0IF) y las interrupciones o por cambio de estado en alguno de los pines 4. INTE..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. T0IE. 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. a Entre las l´neas 25 y 32 se define la funci´n interrupci´n isr(void) empleando el ı o o calificador interrupt. Aqueo llas variables que no son static se crean en posiciones que son asignadas en forma din´mica a medida que se necesitan. El registro TRISB se utiliza para indicar los pines del puerto B que son de alta impedancia (entradas). En primer lugar se o enciende el LED colocando su estado en 1 (l´nea 54). 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). La funci´n o o interrupci´n es ejecutada cuando ocurre cualquiera de las interrupciones posibles.TUTORIAL MICROCONTROLADORES PIC 21 compilador que reserve una posici´n fija de la RAM para almacenar la variable. 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(.). as´ como los bits de habilitaci´n de interrupciones GIE. El nombre de la funci´n no tiene importancia. 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. en la pr´ctica las funciones de retardo hacen ı a innecesaria la l´nea 28. o Figura 7. Siempre al iniciar todo programa es importante fijar los bits que ser´n utilizados como entradas de los puertos a .. o La funci´n main(void) contiene parte del programa principal. Rebote del bot´n. 5.

(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.22 MIGUEL TORRES TORRITI A y B. Del men´ desplegado elija la opci´n Save para u o grabar el proyecto.c creado en el paso anterior. 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. por ejemplo ej2. 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. Antes de cambiar de estado finalmente.c.as) y que la opci´n Auto est´ seleccionada. Si estas fuese deshabilitadas por la funci´n u o interrupci´n en la l´nea 28. el estado de la varaible led se invierte mediante el operador ! de negaci´n. *. 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.. a o De ser as´.mcb. 4. el cual permanentemente est´ detectando el ´ a estado de la variable boton. 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 -C ej2... Esto se realiza asignando un 1 a los bits correspondientes de los registros TRISA y TRISB. 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). y seleccione el archivo o ej2. Una ı alternativa es utilizar la funci´n ei() comentada en la l´ o ınea 61. la cual cambiar´ a 1 si ocurre una interrupci´n externa. Verifique que el tipo de archivo esta fijado en Source (*. La l´nea o o ı para volver habilitar las interrupciones (l´nea 70) fue comentada. puesto que estas no ı son deshabilitadas en ning´n momento. es decir si estaba en 0 se coloca en 1. Luego. Luego se habilitan las interrupciones (l´neas 59 y 60).cof . el PIC16F84A./Project. En este caso.># en el c´digo del programa. a o o Alternativamente puede definir la macro con el pragma: #define XTAL_FREQ 20MHZ antes de colocar las l´ ıneas #include <. y si estaba o en 1 se coloca en 0. a o • L´ ınea de Comando: Para compilar el proyecto para la version actual del PIC16F84. la o secci´n ser´ Source Files. Se abrir´ una ventana con u a el nombre Output. 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. se hacer parpadear al LED invocando la funci´n blink(void) creada para dicho prop´sito. Paso 3: Compilaci´n del Proyecto con PICC Lite.. Por ultimo se inicia un loop sin fin. (11) De la lista de archivos del proyecto..4. o o o (1) Seleccione la opci´n Project/Build Options.. se reconoce que el bot´n pulsador fue presionado colocando la variable ı o de estado boton nuevamente en 0. Presione Open. 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. seleccione con el bot´n derecho del mouse el t´ o ıtulo del proyecto.c picl --chip=16F84A -DXTAL_FREQ=20MHZ -oej2. (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. la cual mostrar´ el estado de la compilaci´n.

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

o u (5) Normalmente el programador entregar´ un mensaje indicando si la programaci´n fue a o exitosa. En la figura 8 se muestra el circuito para el Ejemplo 2. La resistencia Pull-Down mantiene el puerto en LOW (0). 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´.6. Code Protect = On. Verifique tambi´n que los bits de configuraci´n de e o la opci´n Configure/Configuration Bits. por ejemplo el PICSTART Plus. En particular verifique en la o opci´n Configure/Select Device. 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. Circuito del ejemplo 2.. de la barra de men´ son: Oscillator o u = XT. 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´. Watchdog Timer = Off.. 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´. mientras el pulsador no sea presionado y cambie la se˜al a HIGH (1). empleando la opci´n Programmer/Select Programmer de la barra de men´. Como se puede apreciar en la figura. el circuito de este ejemplo es muy similar al del Ejemplo 1. o Figura 8. u 4. (2) Seleccione el hardware programador. Circuito del Ejemplo 2.. Si se desea que la interrupci´n n o se genere al soltar el bot´n.. de la barra de men´ que el dispositivo correo u sponde al µC PIC16F84 o 16F84A. . Power Up Timer = Off. 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´. Sin embargo. entonces deber´n intercambiarse la resistencia Pull-Down por el o a bot´n pulsador. si desea verificar si efectivamente la programaci´n se realiz´ o o en forma correcta. 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.24 MIGUEL TORRES TORRITI (1) Verifique las opciones de configuraci´n de MPLAB IDE.

como un menor costo frente al PIC16F84. adquirir los conocimientos para utilizar este nuevo PIC es considerablemente m´s f´cil. Estos documentos son muy ilustrativos. Existen versiones con distintas caro acter´ ısticas como el tama˜o de la memoria y n´mero de pines.com/). oscilador interno. Otros fabricantes pueden tener productos considerablemente diferentes. Microchip provee tambi´n de documentos llamados e Application Notes (Notas de Aplicaci´n). y es una excelente a opci´n cuando se requieren m´s l´ o a ıneas de entrada/salida. convertidores A/D. Sin embargo. es aproximadamente el doble que el del PIC16F84 con valores entorno a USD $10 versus USD $ 5. instrucciones de CPU o m´todo de programaci´n. o f´ciles de comprender y mantienen la rigurosidad t´cnica de los fabricantes. aplicaciones y su implementaci´n con un gran nivel de detalles. Las aplicaciones posibles del PIC16F84 solo est´n limitadas por la imaginaci´n. El PIC16F87x es el m´s popular para aplicaciones de nivel intermedio. n u Una vez que se ha dominado adecuadamente el PIC16F84.TUTORIAL MICROCONTROLADORES PIC 25 ´ ´ 5. Este es el caso de los µCs Freescale u MC68HC08 (originalmente Motorola HC08). 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. Freescale MC68HC08.2. Estos fueron introducidos al mercado para competir con los µCs de Microchip. Consulte las n´merosas u referencias incluidas al final de este documento. entre otros aspectos. 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. esta familia de u dispositivos tiene ciertos atractivos. n comunicaci´n serial por hardware. En esta secci´n se sugieren algunos caminos para involucrarse en el desarrollo o de aplicaciones m´s complejas.1. se˜ales PWM. PIC16F87x. los cuales describen t´cnicas espc´ o e ıficas. tanto en su funcionamiento. 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. 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. convertidores A/D en casi todas sus versiones. a 5.freescale. El costo de la versi´n PIC16F877. Por otro lado. 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. En Intera o net pueden encontrarse aplicaciones sorprendentemente creativas a pesar de la simplicidad y restricciones de este µC b´sico. a e existe una gran cantidad de ejemplos y recursos en libros y la Internet. se˜ ales PWM. 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]. Para mayor informaci´n consulte la secci´n de microcontroladores de Freescale o o (http://www. . los µCs de e o nivel de entrada (entry-level) tienen mucho en com´n. 5.

n Conector DB9 Hembra para PCB en 90◦ . Regulador de voltaje 7805. Lista de Componentes del Programador e 2 1 1 1 1 1 1 Resistencias de 4.7 kΩ (valor no cr´ ıtico). de Ingenier´ El´ctrica de la Universidad Cat´lica de Chile. ttyS2 #base= 0x2e8 # com4. ttyS3 # settings for UniprogIV / BR870 # and similar seriel PIC programmers. no_power_C4C8 = 0 power: TxD mclr: TxD data: DTR data_f: CTS clock: RTS . o 10 MHz). Base DIP18. Resistencia de 10 kΩ (valor no cr´ ıtico). ttyS0 #base= 0x2f8 # com2. Condensadores de 22 pF. Ap´ndice B. Lista de Componentes para los Ejemplos e 2 1 2 1 1 1 Resistencias de 10 kΩ (valor no cr´ ıtico). Este debe modificarse para o seleccionar el puerto serial a utilizar y el tipo de hardware programador. Diodo 1N4148 u otro diodo rectificador de se˜al. Cristal oscilador de 20 MHz (alternativamente 4 MHz. 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.7 µF (valor no critico). Condensador de 4. ıa e o Ap´ndice A. Bot´n pulsador “siempre abierto” (normalmente abierto).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. Condensador electrol´ ıtico de 100 µF. ttyS1 #base= 0x3e8 # com3. Configuracion del PROG84 e El archivo de configuraci´n del PROG84 se denomina lp_cfg. Resistencia de 470 Ω (valor no cr´ ıtico). o ´ Ap´ndice C.

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

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

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

Sign up to vote on this title
UsefulNot useful