Inicio Programación PIC en C
Programación PIC en C
Escrito por biblioman   
Pic C

Curso para aprender a programar en lenguaje C utilizando un compilador  para PIC, en concreto el PCW compiler de la casa CCS. Cursos sobre C en  Internet a miles, pero todos los que yo he visto están realizados sobre compiladores de propósito general, como Vicual C++ de Microsoft ó Builder C++ de Borlan, sin duda son excelentes compiladores que nos permiten realizar aplicaciones para

ordenadores de escritorio tanto en C  como en C++ (la versión orientada a objetos de C), pero no sirven para programar PIC, es decir con el ejecutable que generan al compilar no se puede programar un Microcontrolador.

Lo habitual hasta ahora es que los usuarios que se inician en este apasionante mundo de la programación de Microcontroladores, sea de la marca que sea, primero lo hacían utilizando el lenguaje ensamblador, especifico no solo ya para cada marca de microcontrolador sino para cada modelo, ya que hay que conocer perfectamente los recursos de cada Microcontrolador (Número de puertos de Entrada/Salida Relojes internos, etc. ). Al principio de los tiempos de estos dispositivos esto era obligatorio ya que los recursos de memoria y velocidad de procesamiento no eran muy grandes y había que optimizar el código al máximo, esto implicaba que había que utilizar a la fuerza un lenguaje de programación de bajo nivel que bien utilizado explotara los recursos de estos dispositivos sin desperdiciar memoria y velocidad de procesamiento, pero al igual que ha ocurrido con los ordenadores personales las prestaciones de estos dispositivos ha ido creciendo exponencialmente con el tiempo, siendo ya perfectamente factible el utilizar un lenguaje de alto nivel para programar estos dispositivos y aprovecharnos de las ventajas de portabilidad que ofrecen este tipo de lenguajes, de esta manera por ejemplo podemos hacer un programa para un PIC en concreto y utilizarlo en otro de mayores prestaciones sin modificar apenas nada del código fuente.

¿Quien puede sacar provecho de este curso?. Este curso es para ti si:

  • Has programado PIC en Ensamblador y quieres hacerlo en un lenguaje de alto nivel como el C.

  • No has programado nunca Microcontroladores pero conoces el lenguaje de programación C de   haberlo utilizado para otros propósitos.

  • No has programado nunca un PIC en Ensamblador, ni conoces ningún lenguaje de alto nivel como el C. Es decir, no tienes ni idea de Microcontroladores ni de programación (Esto es posible porque el curso va ha empezar desde cero es decir con el clásico Hola Mundo con el que empiezan todos los libros de iniciación a la programación.

Bueno alguno pensará que para aprender a programar en C vale cualquier compilador de uso general

y lo que realmente interesa es saber las instrucciones de C que tengo que utilizar para configurar por ejemplo un puerto como entrada o salida, o que código tengo que utilizar para utilizar los convertidores A/D que incorporan ya casi todos los PIC, indudablemente ese es el propósito final de este curso y para ello paralelamente a él va haber otro donde se van a ver aplicaciones prácticas. Pero hay que tener en cuenta que los compiladores para Microcontroladores son específicos para estos dispositivos embebidos y no cumplen con el Estándar ANSI C al 100 %, por lo que cuando estés programando lo más seguro es que te vayas dando cuenta que una función que en el C estándar funciona perfectamente aquí te da un error al compilar.  Además te irás quedando con mucho código que lo has probado y sabes que te funciona perfectamente, cuando tengas que hacer una aplicación práctica no tendrás la duda si puedes usar una determinada estructura en tu programa ó si es posible utilizar punteros o no y como hacerlo, porque ya lo sabrás a la vez que has ido aprendiendo el lenguaje de programación y no solo eso, te irás familiarizando con las instrucciones específicas del compilador: de que herramientas dispone, sus funciones precompiladas, su sistema de depuración de errores, etc.

¿Que herramientas voy a necesitar para realizar el curso?.

El compilador CCS seguro, vaya es de pago ya empezamos con problemas te puedes bajar una versión de Evaluación por 30 días desde aquí:

 

http://www.ccsinfo.com/ccsfreedemo.php

Después de rellenar el formulario te descargas el programa de instalación y lo instalas en tu ordenador como un programa más de Windows, aunque tienes que tener en cuenta que solo podrás programar un pequeño conjunto de PIC de cada familia, otro inconveniente es que tienes que estar conectado a Internet para que te funcione si no te aparecerá esta ventanita poco amigable:


error de registro

Otra limitación es que el tamaño del programa no puede superar los 2K de memoria, aunque para los ejemplos que vamos a hacer aquí te sobra. Bien ya tenemos solucionado el tema del compilador, bien sea por que con la demo nos apañamos o porque tengo un amigo cojonudo que me va ha prestar uno con licencia para que pueda realizar el curso (je,je..Wink).

Bien ya tengo el compilador y puedo empezar a programar y a crear mis .HEX (para el que no lo sepa es el archivo que tenemos que cargar en nuestro PIC para que funcione). Todo esto es muy elemental para el que lo sabe, pero como dije al principio este curso está pensado también para el que no tiene ni idea de programar microcontroladores. Así es que sigamos.

Una vez que tenemos nuestro .HEX tendremos que comprobar que funciona realmente para ello tenemos dos opciones:

  • Montar nuestro circuito con todos sus componentes, programar el PIC con un programador comercial como el PICSTART de Microchip o con uno de los muchos que hay en Internet que sirven perfectamente para empezar a programar estos dispositivos.

  • Utilizar un programa de simulación electrónica como Proteus que tiene la ventaja de disponer de una extensa biblioteca de microcontroladores PIC junto con los componentes auxiliares que normalmente utilizan estos dispositivos: leds, pantallas LCD, teclados, memorias, etc.

Bien nosotros utilizaremos la segunda opción, aunque en una práctica veremos como hacerlo de la primera forma.

La versión de evaluación de Proteus te la puedes descargar desde aquí:

 

http://www.labcenter.co.uk/download/prodemo_download.cfm

 

Claro que tiene limitaciones, sino no sería una demo, la principal es que no podemos guardar nuestros

trabajos y la segunda es que no lleva incorporado muchas de las librerías dinámicas necesarias

para realizar la simulación de algunos microcontrloladores. Mira a ver si el amigo que te dejo el compilador te puede dejar también una licencia para este magnífico Simulador.

 

Nota: en este sitio está prohibido el mostrar ó facilitar enlaces a lugares de descarga de dudosa reputación. Lo digo tambien para que se tenga en cuenta en el foro que próximamente estará a vuestra disposición y donde podremos exponer nuestras dudas ó experiencias sobre este tema y sobre otros que irán saliendo.

 

Otra cosa que quiero aclarar es que el curso va a ser todo lo práctico que pueda y la forma de proceder será

la siguiente: iré mostrando uno ó varios ejemplos de cada tema y posteriormente haré una Explicación de los mismos. Yo no se vosotros pero yo cada vez que he querido aprender algo nuevo lo primero que he hecho a sido mirar los ejemplos, después vosotros tendréis que comprobar que lo que he dicho es cierto y que el ejemplo compila y funciona sin errores.

Para facilitar la navegación el próximo día presentaré el índice de los temás que va a tratar el curso

Aunque puede que lo vaya modificando según vallamos avanzando.

Un saludo y hasta el próximo día.

 



Última actualización el Domingo, 15 de Noviembre de 2009 12:07
 
Comentarios (40)
40 Miércoles, 14 de Octubre de 2009 05:41
biblioman

Hola riosjulioc. Escribe en el foro el código que no te sale, intentaremos ayudarte lo antes posible.


Un saludo

39 Martes, 13 de Octubre de 2009 21:55
riosjulioc

Alguien podria ayudarme con la libreria para LCD, no he podido sacar el mensaje, y otra pregunta como utilizo el delay??

38 Martes, 13 de Octubre de 2009 17:49
biblioman

Hola Jesus Rafael muchas gracias por tú aportación. Tú ejemplo me ha parecido muy interesante, de hecho lo he movido a un nuevo tema llamado Recursos del PIC. Uso de la memoria EEPROM interna del PIC para que este más accesible a la gente y se pueda contribuir con más ejemplos ó comentarios sobre este tema.


Muchas gracias de nuevo, y te animo a que sigas adelante.


Un saludo

37 Martes, 13 de Octubre de 2009 06:31
Jesus Rafael Herrera Diaz

que tal biblioman ya e echo el cometario y subido el codigo que te mencionaba en el tema de comentarios del curso programacion basica de microcontroladores pic

36 Lunes, 12 de Octubre de 2009 10:03
biblioman

Hola Julio el próximo ejemplo será como usar el componente COMPIM de Proteus que espero tenerlo listo en lo que queda de semana, pero tomo nota de tú sugerencia de hacer un programa que comunique dos PICs por el puerto serie, me parece un tema interesante, a ver si tengo un ejemplo de ello para la semana que viene.


Un saludo

35 Lunes, 12 de Octubre de 2009 10:01
biblioman

Hola Jesús Rafael sería de agradecer que aportaras tus ejemplos al sitio, con ello contribuyes a que el curso vaya para adelante. La forma más fácil de hacerlo es a través del foro, te tienes que registrar en él y ya puedes crear un nuevo tema relacionado con la temática de tú programa. Para cualquier otra consulta ó duda puedes contactar directamente conmigo desde aquí.


Un saludo

34 Lunes, 12 de Octubre de 2009 05:11
julio

disculpa despues de que lo coloque fue que me di cuenta, es una comunicacion serial entre 2 pics

33 Lunes, 12 de Octubre de 2009 05:10
julio

hola amigo un cordial saludo biblioman...gracias por postear este curso me parece excelente tu forma de explicar todos los ejemplos...te queria preguntar si podias hacer un programa en donde exita la comunicacion serial entre 2...porque yo lo intente asi como tu lo haces en tus programas...colocando la instruccion puts para enviar un valor entero y el gets para recibirlo pero no recibo nada...por eso queria saber si tu habias hecho este tipo de comunicacion

32 Lunes, 12 de Octubre de 2009 04:21
Jesus Rafael Herrera Diaz

hola que tal buenas tardes sigo este curso por cierto excelente y he echo un codigo para ver si muy humildemente sirve de algo ya que soy principiante pero me gusto mucho este tema de los microcontroladores pero quisiera donde puedo subirlos o enviarlos de ante mano gracias y otra vez excelente tutorial

31 Domingo, 11 de Octubre de 2009 21:26
biblioman

Hola arcadio. Me alegro que te guste el curso. En cuanto a tu problema copia y pega en el foro el código fuente y lo intento compilar yo, así veo lo que te pasa.


Un saludo

30 Domingo, 11 de Octubre de 2009 09:25
arcadio

buenas muy bueno ese tutorial, nada mas que tengo una pregunta me puse a hacer un programa y cuando lo compilo no me da ni el archivo .hex ni el .cof, pero si me da los demas, porque sucede eso?

29 Jueves, 08 de Octubre de 2009 21:21
biblioman

Me alegro que os  guste el curso. En cuanto a la frecuencia de los temas, ya hize un comentario sobre ello aquí. Ya estoy preparando un nuevo tema, así que estaros pendientes.


Un Saludo

28 Jueves, 08 de Octubre de 2009 21:19
Jesus Rafael Herrera Diaz

que tal buenas tardes gracias por este excelente tutorial ya cualquier duda la comentare en el foro hasta ahorita todo bien jeje


un saludo

27 Jueves, 08 de Octubre de 2009 20:13
Adrian

Soy nuevo aqui, pero he observado este tutorial y me parece magnifico por eso me registre. Pero por favor diganme cada cuando avanzan con otro tema. Pero esta muy padre el tutorial felicidades!

26 Miércoles, 07 de Octubre de 2009 20:12
riosjulioc

Hola biblioman te cuento que era una pequeñes, pero alguien me colaboró y ya lo solucione, estoy fascinado con este tutorial, yo he programado en assembler durante 5 años y nunca pense que el lenguaje c fuera tan espectacular, muchas gracias

25 Miércoles, 07 de Octubre de 2009 05:48
biblioman

Hola riosjulioc. Me alegro que te guste el curso. En cuanto a tu problema copia y pega en el foro el código fuente y comentamos lo que te pasa.


Un saludo

24 Martes, 06 de Octubre de 2009 15:58
riosjulioc

Hola esta muy bueno este tutorial pero empece mal en el primer ejemplo me aparecen 8 errores *** Error 29 "Hola.c" Line 8(2,3): Function definition different from previous definition y 7 mas que dicen *** Error 43 "Hola.c" Line 8(8,9): Expecting a declaration Por favor alguien ayudeme que no tengo ni idea

23 Lunes, 05 de Octubre de 2009 23:32
TristamX

oye mi hermano, muchisimas FELICIDADES!!!! pocas veces se ve un curso tan completo, desde el inicio, vas tomando de la mano al nuevo programador de C, yo realmente ya habia programado en assembler, mas in embargo emigrar de un lenguaje a otro es dificilisimo, y al dar con este tutorial y solo darle un overview me e percatado que esta muy completo, ire siguiendolo, y en dado caso de aparecer dudas o si creo que seria bueno aportar algun otro tipo de ejercicio o ejemplo como los que tuve en assembler te paso el aviso. otra vez muchas FELICIDADEs y muchas gracias Ing. Arturo Gil

22 Viernes, 02 de Octubre de 2009 23:59
Haluma

Hola amigos soy nuevo en esto de la programacion en c, gracias por este tutorial que ha resuelto algunas dudas que tuve, espero sigan con este tutorial para poder aprender mas y poder colaborar con algunos programas

21 Viernes, 02 de Octubre de 2009 22:24
biblioman

Hola dieguino me alegro que te guste el tutorial. En cuanto a lo que me preguntas, me imagino que te refieres a los comentarios en la cabecera de los ejemplos. Lo que hago es copiarlo y pegarlo. El IDE de CCS no trae está funcionalidad. Si no te refieres a esto haz la pregunta en el foro especificando un poco más y te responderé lo antes posible.


Un saludo

20 Viernes, 02 de Octubre de 2009 20:56
dieguino

hola hermano. mUy bueno tu tutorial en especial para las personas que estamos aprendiendo a programar pics. tenia una duda, como haces para poner el comentario personalizado que tienes en la papelera, lo has insertado?? lo tienes configurado para que solo se ponga?? era una duda. (EJEMPLO3 www.aquihayapuntes.com) gracias

19 Sábado, 26 de Septiembre de 2009 17:04
JuanKUD
El aporte que hiciste es muy bueno y útil para muchísimos de nosotros.

La explicación es minuciosa y clara. El aporte en el manejo del Terminal en Proteus es bueno, útil y recursivo; no había encontrado otro apunte que hablara sobre el manejo de esta herramienta.

Quedo en la espera de mucho más material tan bueno como éste.

Desde Colombia, Bogotá, MUCHAS GRACIAS.
18 Viernes, 11 de Septiembre de 2009 19:31
carmen
estoy aprendiendo en la universidad a programar pic en c y solo te dire una cosa: eres genial sigue dandome motivos para estudiar gracias
17 Viernes, 04 de Septiembre de 2009 14:47
biblioman

Hola Milton. De pascal hay menos ejemplos que en C, pero también hay, el foro mejor que he visto es el que tienen los propios desarrolladores de mikroPascal, aunque está en ingles trae bastantes ejemplos para aprender. De todas formas si quieres más información, haz la pregunta en este foro ú en otro cualquiera, seguro que alguien tiene más información sobre este compilador que quiere compartir contigo.


Un Saludo

16 Jueves, 03 de Septiembre de 2009 21:24
Milton Gonzalo Sejas Alanoca

la idea de este curso me parecio muy chevere, pero mi consulta es si no pudiesen ayudarme para aprender a programar en micropascal que viene de la misma empresa que lanzon el microC, de antemano algunas sugerencias o foros que hablen al respecto estare agredecido mientras aprendere un poco de C gracias.....

15 Lunes, 31 de Agosto de 2009 18:50
JCA
Excelente
14 Domingo, 30 de Agosto de 2009 09:26
biblioman

Hola alejo. Ya casi tengo listo el próximo tema del curso, estate pendiente porque muy pronto estará publicado. En cuanto a la frecuencia en que publico los temas como ya he dicho depende de dos factores, el principal del tiempo libre de que disponga y el segundo del interés que la gente se toma en el curso, comentándolo ó participando en el foro. Como ves si visitas la página también publico otros temas relacionados con la informática y el software libre, el que dedique el tiempo a una cosa u otra depende muchas veces de las peticiones que tengo en el foro ó en los propios comentarios de los artículos. En cuanto a publicar el curso en pdf es buena idea pero cuando el curso esté terminado, hay veces que añado cosas en temas ya publicados ó corrijo algún error que se me ha pasado y algún usuario me ha advertido de ello. Hay un hilo en el foro para ello que puedes acceder desde aquí, donde cualquier sugerencia o aportación será tenida en cuenta.


Un saludo y hasta pronto.

13 Sábado, 29 de Agosto de 2009 11:17
alejo
por favor amplia el curso lo antes posible estoy impaciente es posible hacerlo en pdf para poder imprimir y estudiarlo mejor
12 Martes, 18 de Agosto de 2009 23:17
Ramirez
Gracias por compartir tus conocimientos. no he tenido la oportunidad de programar en C pero con este tutorial ire en buen camino. Gracias nuevamente
11 Sábado, 01 de Agosto de 2009 03:31
biblioman

No quería salir sin antes agradecerte enormemente por este tutorial que me ha servido de mucho, esta muy didáctico, para mi que estoy empezando a programar PICs en C.
Y bueno, te animo a seguir enriqueciendo este magnífico tutorial que asi como a mi servirá a muchos mas

Estaré a la expectativa de tus nuevas publicaciones, muchas gracias nuevamente
Saludos :)
10 Miércoles, 29 de Julio de 2009 09:09
biblioman

Hola rembrandt, gracias por tú comentario, me alegro que te guste el tutorial. Con respecto a tú pregunta, lo que pasa es que el curso está dividido en dos partes, una teórica (la que por lo visto estas siguiendo) y otra práctica donde se estudia como utilizar los diferentes recursos del PIC (temporizadores, contadores, interrupciones, etc). Mira en el menú que tienes a tu izquierda: Últimos tutoriales-> índice prácticas PIC C. De todas formas, en lo sucesivo pondré los enlaces correspondientes para acceder directamente. Un Saludo

9 Martes, 28 de Julio de 2009 22:32
rembrandt
Hola, muy buen tutorial, en mi caso uso el programa MicroC de Microchip (los que hacen los PICs), es exactamente lo mismo, solo un par de adaptaciones, pero mi comentario es que en el principio de la página 8 nos dices que "En la última práctica que hemos visto (el uso del TMR0 como contador) vimos que el entorno de Proteus nos proporciona una ventana de visualización del estado de los registro SFR de nuestro PIC , muy útil cuando estamos depurando nuestro programa" pero en la página anterior (página 7) no dice nada sobre eso, ¿me he perdido de algo?
8 Sábado, 06 de Junio de 2009 20:09
Felicitaciones... sos todo un maestro.... excelente curso....
7 Miércoles, 13 de Mayo de 2009 17:12
biblioman
6 Sábado, 09 de Mayo de 2009 03:52
marko benavides loayza
Bueno quisiera aprehender a cerca de programar en C como puedo comunicarme o como seguir estos pasos para poder seguir en este entorno.
5 Viernes, 17 de Abril de 2009 05:13
lnc0gnlt0
EL curso esta muy bueno, man esperamos la siguiente publicacion, hasta entonces
4 Lunes, 06 de Abril de 2009 20:21
Sergio
He comenzado a leer el curso y me parece excelente, seguro hay muchos otros como yo esperando la publicación siguiente.
Gracias
3 Domingo, 29 de Marzo de 2009 21:07
Gregory
hey men no te tardes con las publicaciones, de verdan que la primera fue un exito me parece que es muy didactica
2 Sábado, 28 de Marzo de 2009 19:58
LUK
hola,amigo

Muy bueno este tutorial, te animo a seguir publicando más temas
sobre este entorno.En una tarde me lei los temas publicados, pero me quede con ganas de más.

Excelente trabajo.
Mis más gratas felicitaciones.

Un cordial saludo.
1 Lunes, 16 de Marzo de 2009 18:59
PICudo
Felicidades. Muy bueno el curso. Yo he programado en asm y manejar muchos recursos del PIC es una tortura. Había tratado de aprender a programarlos en C, pero generalmente no hay explicaciones muy claras, bueno, al menos no tan claras como las planteas voz. El método de usar la terminal del Proteus es una excelente puntada. Me recordó tiempos en los que aprendí TurboC, una masa! je je je. Saludos.

© 2007-2009 AquiHayapuntes.com