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

Pgina 1 de 14

martes, 26 de octubre de 2010

Aydanos a crecer, haz NeoTeo tu

POR TADA

CON TACTO

JUEG OS

FORO S

Artilugios Software

Ciencia

Coches

Ecologa

Electrnica

Entretenimiento

Hardware

Internet

te interesa? 970 -43 1013 votos

TUTORIAL: Programacin de microcontroladores - Entrega 1


Por:Ariel Palazzesi @jueves,12deabrilde2007Notavista120426 veces

Me gusta

A 15 personas les gusta esto.

Muchos lectores de NeoTeo se han mostrado interesados en la programacin de microcontroladores. Desde hoy tendrn en forma semanal una entrega de este tutorial que les mostrar como hacerlo. Te apuntas?

Ads By Google

Aprenda Microcontrolador
Aprenda Microcontroladores PIC 8051 Freescale, Interfaceamento Grfico

www.portalwebaula.com.br

Discover INSEAD's MBA


Learn about the MBA in Bogota on the 2nd of November: Register Here!

www.insead.edu/Official La electrnica ha evolucionado mucho. Casi todo lo que hasta hace unos aos se hacia mediante un grupo (a veces muy numeroso) de circuitos integrados conectados entre si, hoy se puede realizar utilizando un microcontrolador y unos pocos componentes adicionales. De todos los fabricantes de microcontroladores que existen, los ms elegidos por los hobbystas suelen ser los modelos de Microchip, en gran parte debido a la excelente documentacin gratuita que proporciona la empresa para cada modelo. El lenguaje nativo de estos microcontroladores es el ASM, y en el caso de la familia 16F solo posee 35 instrucciones. Pero el ASM es un lenguaje que esta mucho ms cerca del hardware que del programador, y gracias a la miniaturizacin que permite incorporar cada vez ms memoria dentro de un microcontrolador sin aumentar prcticamente su costo, han surgido compiladores de lenguajes de alto nivel. Entre ellos se encuentran varios

Pgina 2 de 14

dialectos BASIC y C. El BASIC resulta bastante ms simple de aprender. Antes de comenzar a ver los temas programacin en si mismos, debemos aclarar algunos conceptos bsicos sobre los microcontroladores para poder entender lo que hace cada instruccin BASIC. Eso ser muy til para los que vayan a comenzar a programar a partir de este artculo. Lo ms interesante de trabajar con microcontroladores es que se necesitan conocimientos tanto de electrnica (hardware) como de programacin (software) as que a lo largo de estos tutoriales iremos viendo temas de ambas disciplinas, ya que ntimamente vinculadas. Un microcontrolador es como un ordenador en pequeo: dispone de una memoria donde se guardan los programas, una memoria para almacenar datos, dispone de puertos de entrada y salida, etc. A menudo se incluyen puertos seriales (RS-232), conversores analgico/digital, generadores de pulsos PWM para el control de motores, bus I2C, y muchas cosas ms. Por supuesto, no tienen ni teclado ni monitor, aunque podemos ver el estado de teclas individuales o utilizar pantallas LCD o LED para mostrar informacin. En general, por cada cuatro ciclos de reloj del microcontrolador se ejecuta una instruccin ASM (una instruccin BASIC consta generalmente de mas de una instruccin ASM). Esto significa que un PIC funcionando a 20MHz puede ejecutar 5 millones de instrucciones por segundo. Los pines del PIC se dedican casi en su totalidad a los puertos que mencionbamos anteriormente. El resto (2 o mas) son los encargados de proporcionar la alimentacin al chip, y a veces, un sistema de RESET. Desde BASIC es posible saber si un pin esta en estado alto (conectado a 5V o a un 1 lgico) o en estado bajo (puesto a 0V o a un 0 lgico). Tambin se puede poner un pin de un puerto a 1 o 0. De esta manera, y mediante un rele, por ejemplo, se puede encender o apagar una luz, motor, maquina, etc. Uno de los microcontroladores ms famosos de todos los tiempos ha sido, sin duda, el 16F84A, que ya es considerado obsoleto. Un buen reemplazo es el 16F628A, y es el que utilizaremos en la mayora de los ejemplos y proyectos que veamos. La disposicin de sus pines es la siguiente:

Pgina 3 de 14

Funcin de los pines del 16F628A

Como podemos ver, los pines 1, 2, 3, 4, 15, 16, 17 y 18 tienen el nombre de RAx. Esos pines conforman el puerto A, PORTA de ahora en ms. Los pines 6 al 13 forman parte del puerto B (PORTB). El pin 5 es el que se conectara al negativo de la fuente de alimentacin. El 14 ir conectado a 5V. Como habrn notado, muchos de los pines tienen ms de una descripcin. Esto se debe a que pueden utilizarse de varias maneras diferentes, seleccionables por programa. Por ejemplo, el pin 4 sirve como parte del PORTA, como RESET (MCLR = Master Clear) y como tensin de programacin (Vpp) No es mala idea descargar desde la web de Microchip la hoja de datos de este microcontrolador (esta en ingls) para tenerla siempre a mano. Ahora bien Cmo colocamos el programa dentro del PIC? Para ello necesitamos algunas herramientas. Por un lado, es necesario un quemador de PICs, como el que publicamos en NeoTeo, o alguno de los varios disponibles comercialmente. Uno que me gusta particularmente es el GTP-USB+, ya que al funcionar conectado al puerto USB es muy veloz. Adems, necesitaremos un software que enve el programa al PIC. Para ello usaremos el WinPIC800, que es un excelente soft gratuito. Y tambin vamos a necesitar un compilador, para traducir nuestro programa en BASIC al ASM que es capaz de entender el PIC. Despus de mirar varios candidatos, en este momento parece una buena eleccin el PIC SIMULATOR IDE, que no solo es un excelente compilador de BASIC, si no que adems (y por solo 29 euros) ofrece un entorno de simulacin de nuestros circuitos. Existe una versin de prueba que se puede bajar gratuitamente desde aqu.

Adriel Anabella Ariel Constanza Federico Fernando Hernn Horacio Ignacio Jernimo Juan Julin Kir Lisandro Lorena Lucas Lucas Marcos Mario Martin Max NeoTeo Nico Patricio Toms Willy

Pgina 4 de 14

El GTP USB+, un excelente programador de micros y memorias.

El WinPic800 enviara el programa al PIC.

El PIC SIMULATOR IDE, entorno de programacion BASIC.

Para comenzar, usaremos un PIC 16F628A.

El primer ejemplo que veremos, equivalente al hola mundo de cualquier otro entorno de programacin, consiste en encender y apagar continuamente un LED conectado a uno de los pines del micro. Utilizaremos el circuito siguiente: A diferencia de un programa

Pgina 5 de 14

Nuestro primer ejemplo.

de ordenador, donde uno escribe el programa, lo compila, lo ejecuta y ya, en el mundo de los microcontroladores hay que, previamente, definir el tipo de microcontrolador que se va a utilizar, cual va a ser su frecuencia de clock, como va a ser el circuito en que se va a utilizar el mismo, etc. En primer lugar, vamos a aprovechar el oscilador interno del 16F628A y nos evitaremos el cristal y condensadores asociados. El puerto B del micro tiene su pin 9 conectado a un LED mediante una resistencia de 220ohms, que tienen como funcin limitar la corriente que circula por el LED. Esta ser nuestra "salida". El circuito debe alimentarse con 5v bien filtrados y regulados. Volviendo a nuestro programa, vamos a escribir el "hola mundo" de los microcontroladores: encender un LED. El primer paso es elegir en PIC SIMULATOR IDE, desde el men "Opciones" -> "Select Microcontroller", el microcontrolador PIC16F628A. Luego, debemos configurar los bits correspondientes, como se ve en las figuras de ms abajo. Lo destacable por ahora de esta configuracin es que estamos dejando la memoria (FLASH y EEPROM) sin proteccin, que el pin RESET se va a comportar como I/O y que usaremos como oscilador el oscilador interno INTRC.

Pgina 6 de 14

"Opciones" -> "Select Microcontroller"

"Opciones" -> "Configuration Bits"

Una vez hecho esto, arrancamos el editor de BASIC (presionando CTRL-C, por ejemplo), y escribimos el siguiente cdigo: AllDigital TRISA = %11111111 TRISB = %00000000 loop: PORTB.3 = 1 WaitMs 500 PORTB.3 = 0 WaitMs 500 Goto loop Vamos a analizarlo lnea por lnea para entender su funcionamiento: La lnea 1 utiliza la sentencia AllDigital para convertir todos los pines del micro en pines de E/S. Esto equivale a deshabilitar los comparadores, conversores A/D y todos los mdulos que pudiese tener nuestro microcontrolador. No es la nica manera de hacer esto, pero si la mas sencilla. Las lneas 3 y 4 convierten todos los pines del puerto A en entradas ( TRISA = % 11111111 ) y los del puerto B en salidas ( TRISB = %00000000 ). El "%" indica que el numero que viene a continuacin esta en binario. Se podra haber escrito, por ejemplo TRISB = 0 y hubiera sido lo mismo. Personalmente me gusta esta manera, ya que "veo" el estado de cada pin. Por supuesto, es valido activar como entrada algunos pines, y como salidas otros, haciendo algo parecido a TRISB = %11000111. En la lnea 6 encontramos una "etiqueta" ( loop: ). Esta no hace nada, solo sirve como referencia para enviar el flujo del programa a esa lnea desde otro lugar, mediante la sentencia "Goto". La lnea 7 pone en "1" el pin correspondiente a PORTB.3, de manera que en el pin 9 del

Pgina 7 de 14

microcontrolador habr 5V. Esta tensin har que circule una corriente a travs de la resistencia limitadora y el LED1, haciendo que este se encienda, ya que el ctodo se encuentra conectado a 0V. En 8 tenemos la sentencia WaitMs 500. WaitMs se encarga de hacer una pausa en milisegundos. La duracin de la pausa esta dada por el nmero que sigue a la instruccin, en este caso 500 milisegundos, o medio segundo. Luego, en 9, otra vez se vuelve a poner en 0 el pin 9, mediante PORTB.3 = 0 , lo que provoca que ese pin se ponga a 0V, y no haya mas circulacin de corriente a travs de la resistencia y del LED, con lo que este se apaga. En la lnea 10 se hace nuevamente una pausa de medio segundo, y por ultimo, la lnea Goto Loop hace que el programa contine en la lnea 6 (que es donde esta la etiqueta Loop). El programa se repite indefinidamente, encendiendo el LED medio segundo, apagndolo otro medio segundo. Con esto, terminamos la primera entrega de este tutorial. Solamente hemos araado la superficie de un mundo apasionante. No te pierdas la segunda entrega la prxima semana.

Proyecto con un microcontrolador.

Ads By Google

Discover INSEAD's MBA


Learn about the MBA in Bogota on the 2nd of November: Register Here!

www.insead.edu/Official

Portillones automaticos
Controlan el trafico de clientes supermercados y grandes superficies

www.ivegas.com.co

Pgina 8 de 14

Paneles de control
Diseo y contruccion de paneles electricos , PLC, drivers, HMI

www.industrialautomsystem.us

Estudiar Robtica
Estudia en la U. Tadeo Lozano Solicita Ms Informacin Aqu !

UTadeo.edu.co

Tags: Categoras: Electrnica Tutoriales Off-Topic Tutoriales

Volver a Neoteo

Enlazar esta nota:

http://www.neoteo.com/tutorial-programacion-de-microcontroladores.neo

Te interesa esta nota? Suscrbete al RSS de Neoteo.

The Coop, social networking en Firefox

Un siglo en escamas

Prohibida su copia total con o sin fines comerciales. Copias parciales deben citar la fuente.

Suscrbete a los comentarios de este artculo.

Artculos Relacionados
Motorola Capri Google en los Motorola Programar con Visual BASIC (III) Programar con Visual BASIC (IV) Programar con Visual Basic RoboMind: Aprende programacin jugando MikroBasic - Primera Parte Cientficos desarrollan en EEUU un controlador de voz para ordenadores Motorola confirma un mvil con proyector hologrfico TUTORIAL: Programacin de microcontroladores - Entrega 3

Pgina 9 de 14

URL Trackback para esta noticia:


http://www.neoteo.com/DesktopModules/FBlogTrackbacks/Trackbacks.aspx?article=tutorial-programacion

Votos: 3 de 3 #1Excelenteyohaceunosmesesempececon esto de los pic por que estudio ingenieria en electronica y gracias a las bases que ya traia de programacion se me facilito demasiado aunque aun si no trajera esas bases resulta muy facil aprenderlo, me parece muy bien que empiecen con este tutorial y mas sabiendo que lo que ustedes estan proponiendo para programas y eso es lo mismo que uso actualmente, bien estare pendiente de los demas tutoriales sale. PolloMorrison
12/04/2007 22:34:17

Responder

Votos: 1 de 1 #2Peroexelente...lohabiaestadoesperamdo, yo era uno de esos que pedia articuos sobre micros jajjaj.....veo que se han cambiado de compilador, pero he escuchado que este es bien bueno, ais que espero que me de buenos resultados, y respondiendo a la pregunta, Yo me anotooo!....saludos;)

Cesar.....
12/04/2007 23:49:52

Responder

Votos: -1 de 1 #3Exelentenohaymsquedecir!!

Jero
13/04/2007 16:17:07

Responder

Votos: 0 de 0 #4Saludos,amigos electrnicos. Cualquier duda que tengais, referirla a nuestros foro, exactamente al tema Tutorial de Programacion de Microcontroladores, as los podemos asistir como corresponde y ms ordenadamente.

Pgina 10 de 14

Max
13/04/2007 23:06:20

Responder

Votos: 0 de 0 #5TienesquesermsoriginalynoPLAGIAR tutoriales de los dems. EL original lo encontrareis en: http://www.ucontrol.com.ar/ Saludos.

Xavi
16/04/2007 21:36:17

Responder

Votos: 1 de 1 #6HolaXavi!Antesquenada,graciaspor salir en mi defensa. Si te fijas, uControl es mi pagina web. Pero lo que ahi alli es un tutorial sobre el PIC SIMULATOR IDE, y aqui tenemos uno sobre programacion, incluyendo toda la parte relacionada con el hard, y los programas necesarios para poder programar correctamente un microcontrolador. Aqui veremos ademas del BASIC la forma de encarar un proyecto, como resolver la conexion de cargas en las salidas o el uso de diferentes sensores (temperatura, humedad, etc.), asi que no dejes de mirar todas las semanas. Un abrazo.

Ariel Palazzesi
16/04/2007 21:47:42

Responder

Votos: 2 de 2 #7Xavi,nosesinotastequeelqueescribe aqui es el mismo de ucontrol :)

fede
17/04/2007 12:10:21

Responder

Pgina 11 de 14

Votos: 0 de 0 #8Noencontrequeestuvieseigualal tutorial de ucontrol. Ademas es del mismo autor que el que escribio aca. Encuentro que el aporte est buenisimo....asi que espero que sigas con esos aportes tan buenos, estare semanalmente por aqui entonces.......saludos ;)

Csar......
18/04/2007 8:20:36

Responder

Votos: 0 de 0 #9Holaatodos,encuentrogeniallapaginay sus informaciones. estaba viendo el tutorial del ADC0804 controlado por Puerto paralelo y quiero hacer unas pruebas. quiero conectarle una seal analoga de electrocardiograma. como puedo modificar el programa para que pueda leerlo en tiempo real ???.. Bueno, gracias amigos..chaops.. Jos Ignacio. TUTO
05/05/2007 3:17:24

Responder

Votos: 1 de 1 #10HolaTUTO!Lamentablemente,mispobres conocimientos de Visual Basic no alcanzan para una aplicacion como la que sugieres. Pero el chip que mencionas (y el puerto paralelo del PC tambien)tiene la velocidad suficiente para hacer un muestreo de las seales provenientes del corazon. Estamos hablando de seales debajo de los 200Hz. Eso si, la seal ser muy dbil, asi que tendrs que acondicionarla previamente con un amplificador operacional como minimo. Comentanos tus resultados! Saludos. Ariel Palazzesi
05/05/2007 15:16:54

Responder

Votos: 2 de 2 #11Hola,si,esocreoquehar.primero dejar la seal entre unos 0 y 5 volts. Pero el programa que tu tienes, solo me lle el dato cuando yo lo requiero cierto ? Hola..si..amplificar la seal para dejarla entre 0 -5 volts.. pero el programa q tu tienes le el digito cuando yo quiero cierto ?.. Tuto

TUTO
05/05/2007 23:38:55

Responder

Pgina 12 de 14

Votos: 0 de 0 #12Exacto.ElADC0804tieneunpinquesirve para indicarle que debe comenzar a digitalizar el dato que tiene en su entrada. Despues de unos pocos milisegundos, ese dato esta disponible en las salidas. No lo recuerdo de memoria, pero en su datasheet esta seguro. Si queres, pasame una direccion de correo y te envio la datasheet, asi manejas los tiempos sin problemas. Saludos. Ariel Palazzesi
06/05/2007 0:41:27

Responder

Votos: 1 de 1 #13trabajoenelectronicaindustrial,quiero aprender a programar microcontroladores ,puesto que necesito hacer algunos proyecticos .gracias joaquin ortiz

22/07/2007 3:44:01

Responder

Votos: 1 de 1 #14podrianustedesrecomendarmenunapagina tutorial para aprender a programar microcontroladores gracias jogozo@terra.com.co

22/07/2007 3:54:21

Responder

Votos: 0 de 0 #15interesante

nestor
23/09/2007 5:14:44

Pgina 13 de 14

Responder

Votos: 0 de 0 #16Muybuenarticulo, espero que trates mas adelante la programacion con lenguaje C

nestor
20/10/2007 22:02:03

Responder

Votos: 0 de 0 #17Muybuenoperoenmipaissemease dificil conseguir las herramientas que se necesitan para programar los micro, No existe otra forma?

locoxp
31/10/2007 23:11:39

Responder

Votos: 0 de 0 #18HolaLocoXp!Lamentablemente,nohay manera de programar un PIC sin tener un programador. Si te fijas, en NeoTeo hay un programador para armar. Y es muy simple de hacer! Saludos.

Ariel Palazzesi
31/10/2007 23:32:29

Responder

Votos: 0 de 0 #19HolaNestor!Esposiblequeenelfuturo hagamos algo con CCS, aunque por lo general los articulos serian demasiado extensos. Pero quizas dividienlos en entregas se pueda hacer. Gracias por la idea.

Ariel Palazzesi

Pgina 14 de 14

31/10/2007 23:34:18

Responder

Votos: 0 de 0 #20Mano,muybuenoperonotengoformade conseguir el sircuito GTP USB+ asi que me quedo con las ganas de aprender

locoxp
31/10/2007 23:37:14

Responder


Datos Ir a login Usuario Email Website
Recordar mis datos

Siguiente

Login

Registrarse

Nuevo comentario:

Enviar

Vista previa

Tags HTML permitidos: br