# Una manera sencilla de aprender a programar pic ?



## franco (Sep 9, 2005)

Hola a todos, les escribo para ver si alguien me puede ayudar a entender de una manera sencilla la programacion del pic 16f84, he buscado en internet pero no entiendo, si alguien me puede dar alguna direccion donde la explicacion sea sencilla se los agradecere. 
saludos


----------



## Marcelo (Sep 9, 2005)

Bueno Franco, 

Lo mejor es comprarse un libro que te enseñe lo básico. Ve a una librería técnica en tu zona y fíjate a ver que consigues. Las editoriales españolas tiene una muy buena documentación del tipo "principiante".

Lo segundo es que debes conocer algo de programación. Tienes que tener alguna base de algún lenguaje: ensamblador, C o basic por ejemplo.

Si no la tienes, debes leer algo sobre el lenguaje que te interese, aunque te recomiendo que empieces con el assembler que te enseñará sin lugar a dudas como funciona el PIC.

Cuando te decidas que lenguaje vas a usar debes conseguir un programa para desarrollar.

También puedes usar lo que se llama un ambiente de desarrollo o IDE como el MPLAB de microchip que es grátis, pero es bastante complejo de usar si estas empezando.

http://ww1.microchip.com/downloads/en/DeviceDoc/MP721_full.zip   (MPLAB 7.21)  este download es largo = 32 Mb

La forma más sencilla es buscar un compilador (software que traduce el programa que escribes a un lenguaje que entiende el PIC), escribir tus programas con un editor como el notepad de windows y ensamblar con el compilador para convertir tu programa en algo que puedas grabar en el pic.

Aquí puedes conseguir algunos compiladores:

*Assembler*:  MPASM de microchip que es grátis o el MacroAssembler.

http://www.melabs.com/downloads/MPASMWIN401.zip  (MPASM 4.01)

http://www.website.masmforum.com/masm32/m32v82r.zip   (Macroassembler 8.2) 
http://www.website.masmforum.com/masm32/v82sp2a.zip (Macroassembler SP2 actualización)


*C*: PicC o  CC5X que es gratis, puedes descargar el compilador y el manual aquí:

http://quidel.inele.ufro.cl/%7Ejhuircan/CCOMPILER/cc5xfree.zip  (Compilador)

http://quidel.inele.ufro.cl/~jhuircan/CCOMPILER/cc5x-30.pdf  (Manual)

*Basic para PIC*: Casi todos son comerciales pero aquí hay una versión gratis (lite) de XCSB.

http://www.xcprod.com/titan/XCSB/xcsb-1.8.1-pic-lite-win.zip 

 y esta es la página de downloads:

http://www.xcprod.com/titan/XCSB/download.html
debes bajarte el archivo que dice: Free Download  v1.8.1  ZIP archive

Lo otro que debes tener es tu programador. Fíjate en el post de este foro:

https://www.forosdeelectronica.com/...-pic-memorias-puerto-usb-pickit2-clone-18080/
https://www.forosdeelectronica.com/f24/programador-pics-solo-enigma-8946/
https://www.forosdeelectronica.com/about194.htmlhttps://www.forosdeelectronica.com/f24/programador-pics-144/

Luego debes empezar a entender bien como funcionan estos chips.

Para eso comienza con circuitos básicos aprendiendo como trabajan las señales de entrada y salida y como manejarlas desde el pic.
También debes aprender como realizar el circuito de conexión básico para que el PIC esté listo para funcionar.

Lee este tutorial para empezar:

Aquí, como programar en assembler si ya conoces la electrónica del PIC:
http://www.unicrom.com/Tut_PICs5.asp

y aquí el inicio de ese tutorial, que deberías leer completo:

http://www.unicrom.com/Tut_PICs1.asp

Recomendación: No pases a la próxima parte del tutorial hasta que hayas entendido bien lo que estás leyendo.

También héchale un ojo a estos posts:

https://www.forosdeelectronica.com/f24/introduccion-microcontroladores-213/
https://www.forosdeelectronica.com/f16/usando-pwm-mini-tutorial-271/


Saludos.
Marcelo.


----------



## franco (Sep 9, 2005)

Gracias Marcelo por tu tiempo y datos me han servido de mucho, gente como tu es la que necesita el mundo!, Saludos y suerte...


----------



## Marcelo (Sep 9, 2005)

De nada Franco, para eso están los buenos foros como este. 
Gracias por tu comentario.
Saludos,
Marcelo.


----------



## pics (Ene 17, 2008)

Busca el programa niple  que sirve para programar microcontroladores desde el mismo diagrama de flujo. Es interesante y con práctoca, se vuelve rápido.
Aquí lo importante es programar el pic, no ser un genio en escribir cdófigo asm. Eso lo dejo, en mi humilde opinión, a los programadores que si son unor bárbaros en programar lo que sea.


----------



## gabrielg (Abr 5, 2008)

Esta es una opcion muy buena. Puedes empezar con Basic, C o Pascal. Es gratis para pequeñas aplicaciones (2 kB de memoria) y funciona muy bien.

http://www.mikroe.com/en/compilers

Saludos y suerte


----------



## Meta (Abr 5, 2008)

franco dijo:
			
		

> Hola a todos, les escribo para ver si alguien me puede ayudar a entender de una manera sencilla la programacion del pic 16f84, he buscado en internet pero no entiendo, si alguien me puede dar alguna direccion donde la explicacion sea sencilla se los agradecere.
> saludos



Hola:

Hace un tiempo estuve como tu buscando información hasta que tropecé en una librería y encontré este magnífico libro.

www.pic16f84a.com

Es lo mejor que se ha visto y aprendes muchísimo, no te das cuenta hasta que lo pruebes. Lo bueno que tiene es que no necesitas tener conocimientos previos de cualquier lenguaje de programación, simplemente te enseña este mismo libro desde 0, las 35 instrucciones del 16F84A.







Un cordial saludos.


----------



## pepechip (Abr 6, 2008)

hola

Y sobre todo paciencia.
A mi me ocurrio lo mismo que cuando te fijas en una imagen del tipo estereogramas, en donde no ves nada, y comienzas a centrar la vista y aparece la imagen.

El libro que te recomienda Meta, es realmente bueno.


----------



## german orlando niño uribe (Abr 7, 2008)

hola franco, pues veras, esto del inicio de los micros, es complicado, pero eso no significa que sea imposible, yo te lo aseguro y es muy interesante a demas, por eso te pasare este link que es muy bueno, es muy completo, y te dira como arrancar desde cero.
suerte. 8)  

www.r-luis.xbot.es


----------



## mendek (Mar 13, 2009)

hola a todos, a mi tambien me gustaria que me pudieran ayudar si no es mucha la molestia, mi duda acerca de los pic's es si existe una revista o un libro de facil localizacion para comprar y que me puedaenseñar a como programar un pic 16f84, soy de morelia, michoacan.
creen que exista alguna? y gracias por su ayuda hasta luego.


----------



## mabauti (Mar 13, 2009)

> hola a todos, a mi tambien me gustaria que me pudieran ayudar si no es mucha la molestia, mi duda acerca de los pic's es si existe una revista o un libro de facil localizacion para comprar y que me puedaenseñar a como programar un pic 16f84, soy de morelia, michoacan.
> creen que exista alguna? y gracias por su ayuda hasta luego.


yo te recomiendo este libro


----------



## Meta (Mar 13, 2009)

Y te recomiendo que veas los manuales que hacemos.

http://www.pic16f84a.org/index.php?option=com_content&view=category&layout=blog&id=54&Itemid=105

Saludos.


----------



## mendek (Mar 13, 2009)

si!estos me interesaron mucho, gracias por la ayuda 
y creen que me puedan enseñar desde cero estos manuales ?


----------



## Meta (Mar 13, 2009)

mendek dijo:
			
		

> y creen que me puedan enseñar desde cero estos manuales ?



El libro www.pic16f84a.org si, lo estoy usando y aprendes pero que muy bien.

Índice

Proyectos

Saludo.


----------



## mendek (Mar 13, 2009)

oye meta muchas gracias, este libro me intereso mucho, ya que veo que sí lo puedo comprar, me recomiendas comprar este o lo puedo descargar?
esque tengo un problema, estoy estudiando un bachillerato de tecnico en electronica y el maestro que me imparte el submodulo de microcontroladores no sabe enseñar y creo que voy a tener que aprender por mi parte, asi que no tengo conosimiento de esto, pero si se de logicos y plc´s que segun tengo entendido es lo basico para poder empezar a aprender o que mas puedo hacer para aprender por mi parte, asi que te agradeceria muchisimo por tu ayuda, gracias meta


----------



## sebasb1987 (Abr 4, 2009)

hola a todos quisiera que me colaboraran por favor con un proyecto que tengo que hacer necesito hacer un taximetro como es la programacion y que me muestre los metros recorridos y luego que al apretar un pulsador me muestre el valor a pagar de ante mano les doy las gracias.......


----------



## mabauti (Abr 4, 2009)

> me recomiendas comprar este o lo puedo descargar?


Depende de tu objetivo, si piensas entrarle fuertemente a los PICs , compralo, yo te lo recomiendo ; si solo lo quieres para hacer uno que otro ejercicio,  basate en los apuntes de tu profesor y las dudas que tengas preguntaselas a el, puesto que el esta obligado a auxiliarte; y desde luego si quieres consultarlo en esta comunidad hazlo, aqui hay mucha gente participativa. Suerte! 



> hola a todos quisiera que me colaboraran por favor con un proyecto que tengo que hacer necesito hacer un taximetro como es la programacion y que me muestre los metros recorridos y luego que al apretar un pulsador me muestre el valor a pagar de ante mano les doy las gracias.......


Dos recomendaciones
1.- A dios rogando y con la mazo dando
2.- Dios dice : ayudate , que yo te ayudare


----------



## fernandoae (Abr 4, 2009)

El libro "MICROCONTROLADOR PIC16F84. Desarrollo de proyectos" yo lo encontre dando vueltas en el Emule...
Yo no quiero fomentar la pirateria ni nada por el estilo pero tambien hay que tener en cuenta que no todos pueden pagar un libro...

Mabauti dios no sabe de microcontroladores 

Para el taximetro tenes que contar las vueltas que dio la rueda, multiplicar esa cantidad por el diametro de la rueda y ahi tenes la distancia.
La multiplicas por el "valor por metro" y ya sabes cuanto cobrarle


----------



## niko232 (Feb 17, 2010)

hola gente del foro como estan?? estoy teniendo un problema con la programacion de un pic16f84a.... no le puedo descargar el programa desde el ic-prog... tengo la tarjeta de programacion JDM


----------



## alejandroarriaga (Jun 8, 2010)

de seguro te manda el error de la h0000'¡ 
nik0 asegurate que allas puesto el pic vien con la muesca como debe de ir o sino 
asegurate que tengas istalado el driver para xp  bajalo de la misma pagina de donde bajaste el ic prog y nadamas lo pones en la misma carpeta donde tienes el ic prog 
y en miselanea lo activas 

suertee¡¡


----------



## elzytacogelona (Jun 9, 2010)

Que tal marcelo:  

Soy mas que novata en esto de la programacion de pics, estoy empezando, y por la respuesta que le diste a uno de los participantes de este foro me gustaria preguntarte :

Una vez que he descargado el mplab ¿es forzoso  instalar el compilador, en mi caso, para c?

Gracias por tus atenciones

Me estoy iniciando en esto de la programacion de pics, ya he programado algunos programas en ensamblador y conozco algo de c, aunque no he programado pics en este lenguaje, agradecere mucho la solucion de dudas que pueda requerir, saludo a los integrantes del foro


----------



## mendek (Sep 7, 2011)

Bueno hace poco empese con esto de la programacion del pic16f84 y me tope con un programa que aparentemente se ve muy "amigable", el mikroc pro for pic, y ya cuento con conocimientos en c, pero lo que pasa es que no encuentro algun manual que me enseñe a programar el pic16f84 con este software.
Espero y que si alguien tiene conocimiento de algun manual para esto nos lo haga saber. desde ya muhas gracias.


----------



## Gerson strauss (Sep 7, 2011)

Yo les recomiendo el Proton IDE, es el mejor lenguaje de programacion para pics en la actualidad. El que no aprenda con este lenguaje, es porque tiene daño cerebral!.


----------



## Aspha (Dic 26, 2011)

Hola a todos,

Tengo una pequeña consulta. El lenguaje assembler para el PIC16F84A puede ser usado para cualquier otro PIC? O el lenguaje varía según el modelo? Espero sus respuestas y gracias por las mismas!!


----------



## ByAxel (Dic 26, 2011)

Hola.
Este PIC es de la gama media que se reconoce con el 16Fxxx asi que cuanquier PIC que inicie asi soportan las mismas 35 instrucciones. Revisa la pagina de Microchip que ahi se especifia mejor las gamas y dispositivos que pertecen a cada una.

Saludos


----------



## solaris8 (Dic 26, 2011)

El libro "*MICROCONTROLADOR PIC16F84*. Desarrollo de proyectos" en pdf 

*password:* telecomunicaciones


----------



## Lightninig 007 (May 24, 2012)

Una pregunta.. Estos circuitos funcionan?, porque muchas veces han dicho que cosas de  Pablín son antiguas por la cual no se consiguen facilmente..

Programador PIC Pablin

Programador PIC

Por favor... No soy muy experto en el tema..


----------



## SERGIOD (May 24, 2012)

Por que primero no haces una lista de los componentes que se necesita para cada circuito y vas a una tienda cercana de electrónica y averiguas tu mismo.


----------



## Lightninig 007 (May 24, 2012)

Sisi te entiendo.. pero hice mal la pregunta.. el formato del circuito es correcto? funcionan ? los componentes no importan..


----------



## SERGIOD (May 24, 2012)

personalmente nunca arme esos circuitos pero estoy enterado que el de pablin funciona 100% bien


----------



## lubeck (May 24, 2012)

Lightninig 007 dijo:


> Una pregunta.. Estos circuitos funcionan?, porque muchas veces han dicho q cosas de pablin son antiguas por la cual no se consiguen facilmente..
> 
> http://www.pablin.com.ar/electron/circuito/mc/ppp/index.htm
> 
> ...



con ese de pablin yo tuve malas experiencias, tiene problemas de corriente... te recomiendo que no lo armes o lo mejores...

el serial parece funcionar  es el clasic JDM...


----------



## Lightninig 007 (May 25, 2012)

lubeck dijo:


> con ese de pablin yo tuve malas experiencias, tiene problemas de corriente... te recomiendo que no lo armes o lo mejores...
> 
> el serial parece funcionar  es el clasic JDM...



Ok. Te agradesco la informacion..  Es porque yo soy un aficionado "barato" que digamos, y no entiendo mucho sobre como funcionan los circuitos.. Gracias!


----------



## jeffryaldair (Jun 11, 2015)

buenas no se si me pueden facilitar información sobre el lenguaje assembler. osea mas que me especifique los roles de los registro es toy con un poco de duda . gracias de antemano


----------



## D@rkbytes (Jun 11, 2015)

Cada PIC tiene registros diferentes y su información se encuentra en la hoja de datos.

El funcionamiento de los registros de un PIC, no tiene nada que ver con el lenguaje de programación.


----------



## jeffryaldair (Jun 12, 2015)

Ah, ya. Chevere brother.


----------



## Miembro eliminado 356005 (Jun 13, 2015)

Eso quiere decir que primero debes elegir un determinado micro o familia de micros, y a partir de ahí viene el estudio de se estructura, de su juego de instrucciones y del resto de la programación en ensamblador o pasamos a programarlo en otro lenguaje.


----------



## Mashtu23 (Ago 1, 2019)

Buen día , porfavor quisiera consejos de cómo aprender a programar , ya que soy medio bestia para aprender programación , nunca se me dió por desarrollar programar pero ya se volvió un tema personal y quiero como de lugar aprender , tengo en mis manos el pic16f877 y me compre un grabador click dpic3 , pude prender un LED  , pero antes de seguir avanzando que me recomiendan para aprender desde cero e ir por buen camino , muchas gracias


----------



## ByAxel (Ago 1, 2019)

Hola.

Para iniciar, saber de circuitos digitales... lo que te pueda guiar ya que es importante saber de lógica.
Luego puede ser todo junto y poco a poco, me refiero a tener el PIC, escoger un lenguaje de programación que mejor se adecue... normalmente se usa lenguaje C pero también es el basic... con el tiempo ya es cuestión de rendimiento o de gustos.

Es imprescindible la hoja de datos del microcontrolador, ya que es prácticamente un libro que enseña como usar el PIC.

En el foro hay algunos cursos.

Saludos


----------



## Mashtu23 (Ago 1, 2019)

ByAxel dijo:


> Hola.
> 
> Para iniciar, saber de circuitos digitales... lo que te pueda guiar ya que es importante saber de lógica.
> Luego puede ser todo junto y poco a poco, me refiero a tener el PIC, escoger un lenguaje de programación que mejor se adecue... normalmente se usa lenguaje C pero también es el basic... con el tiempo ya es cuestión de rendimiento o de gustos.
> ...


Entonces me recomiendo aprender con el pic16f877 o mejor empiezo con el pic18f4450 es que en un futuro quisiera no quedarme limitado de memoria , logica si me falta bastante


----------



## Hellmut1956 (Ago 1, 2019)

Leyendo el hilo la contribución de JoaquinFerrero me parece a mi personalmente aquella mas cercana a la realidad.

Cuando trato de charlar con los miembros de mi familia sobre este tipo de temas me ecuentro con que realmente no tienen ni la noción mas vaga del tema. El problema está en comprender los elementos con los cuales se quieren alcanzar objetivos.
Si es exclusivamente el tema de la programación, entonces mas vale confrontarse con el tema donde los factores que influencian la actividad son mínimas pero que sirven para familiarizarse con el tema de la programación. Lo mas senscillo es usar un lenguaje interpretado y que se puede ejecutar en el mismo PC. Cual lenguaje usar es cuestión de gustos. Si dentro de los objetivos que se tienen está el programar de microcontroladores, entonces vale escoger uno bien capaz de programar controladores en un futuro. Repito, es cuestión de gustos, pero el lenguaje Python, que ya es parte de Windows y que es un interpretador, no hay que saber las cosas sobre compiladores y su configuración, no hay que poner un programa escrito en un controlador. Aquí un enlace a un libro en pdf y en Español, el dr. Chuck es un profesor excelente y sus libros son legalmente gratis. Lo mas sencillo con que se comprueba que la configuración del entorno, sea cual sea y sea para lo que sea es el famoso "Hola mundo!"

De allí un novato puede familiarizarse con que esta tratando cuando de programación se trata.

La otra parte con la que un novato tiene, a mi opinión personal, que familiarizarse es que es un controlador y que son los aspectos que diferencian uno de otro. Aquí exclusivamente me refierte al tema de usar controladores del tipo PIC. Un controlador es como el motor de cualquier tipo de maquina o coche. Los controladores de PIC existen de muchos tipos, pero quedemosnos en uno, tomemos el 16f84 mencionado por el iniciador del hilo. Cito de Wikipedia:

El PIC16F84 es un microcontrolador a 8 bits de la familia PIC perteneciente a la Gama Media Microchip. 

El motor del controlador en este caso es uno de tal 8 bits. Existen controladores de 16 bits, de 32 bits y de 64 bits. Eso nos dice que el controlador contiene nun "motor" de 8 bits, o sea uno pequeño.

La biblia cuando de programar un controlador es su hoja de datos. Aquí el enlace a la hoja de datos!

Acabo de mencionar que el motor del controlador es de 8 bits. Como decía arriba lo que diferencia variantes del mismo tipo son las funcionalidades adicionales que un controlador tiene.



Aquí una tabla sacadaa de la hoja de datos! el PIC16F84 es un miembro de la familia de controladores P;NIC16F84. De esta tabla podemos sacar que el PIC16F64 contiene memoria no volatol, llamada Flash de 1024 direcciones en las que se graba el programa. Que tiene 64 bytes, unidad de 8 bits, donde tu programa puede poner variables, parametros que van cambiando su valor. Tiene un reloj, el TMR0 que se puede conectar con 4 señales externas o del programa, el número de patitas es de 13 mas otras para su alimentación. Que permite ser alimentado con tensiones entre 2.0 y 6.0 voltios. eso significa que puede operarse en entornos de 3.3 VDC  y 5.0 VDC.



Así el reto cuando quieres usar un controlador es diseñar un circuito para lograr los objetivos, o usar una placa con el controlador, donde ya las patitas vienen conectadas a otras funciones.

El reto para un novato es el aprender a pensar en combinar tus objetivos con las funcionalidades del controlador. Este tipo de placas se encuentra y se usa en lo que se llama "sistemas embebidos". Es el nombre de toda una gama de placas que permiten realizar los mas diversos objetivos.

En suma, el motor es de 8 bits, es de la familia de los PICF8X y según el modelo escogido tiene las funcionalidades explicadas extensamente en la hoja de datos.


----------



## Miembro eliminado 356005 (Ago 2, 2019)

Mi consejo es que leas MUCHOS códigos. Al cabo de un tiempo te darás cuenta de que hay autores que escriben muy bien, muy claro, y con comentarios descriptivos. Otras veces, el propio código es tan descriptivo que no necesita comentarios. En sitios como github hay mucho código que puedes leer.

Y un día... empezarás a escribir tus propios códigos. Copia el estilo de aquellos códigos de otros programadores que más te gusten: su forma de nombrar las variables, las subrutinas; la forma de reservar memoria, hacer uso de ella; cómo usar interrupciones en lugar de bucles de espera; cómo ahorrar energía al máximo parando el µprocesador.

En Youtube tienes un montón de material. No siempre en español, pero con los subtítulos puedes hacerte una idea.


----------



## Scooter (Ago 2, 2019)

A día de hoy yo te recomendaría aprender C y no bajar al ensamblador.
Es cierto que saber cómo va el ensamblador y como compila el compilador y que código genera viene bien en muchos casos, pero creo que es un tiempo al que le vas a sacar poco rendimiento hoy en día.
No hay una forma de aprender a programar rápido, de hecho pienso que a programar nunca se aprende, se va evolucionando y "creciendo" siempre.
Tras saber lo básico y trastear unos cuantos ejemplos te puedes liar con pequeños proyectos, las cosas se aprenden cuando te hacen falta usarlas para algo.
A todos nos pasa pero intenta no cerrarte a lo que ya sepas, y estate abierto a aprender nuevas técnicas y formas de hacer.




Ah y sobre todo nunca uses delays, claro. Son el Ébola de la programación.


----------



## Dr. Zoidberg (Ago 2, 2019)

Aca hay que entender algo: una cosa es aprender a programar y otra muuuuy diferente es aprender a programar un microcontrolador, por que si bien los tipos de datos, estructuras de control e incluso el propio lenguaje son exactamente iguales, para lo segundo necesitas saber electronica digital y para lo primero no...y ahi esta lo mas dificil.


----------



## TRILO-BYTE (Ago 2, 2019)

si es cierto no es lo mismo programar en una plataforma como una computadora de escritorio a un microcontrolador pues generalmente tienen poca RAM y muchos registros que hacen muchas cosas para quitar carga al CPU.
es cierto que se puede tener I2C , SPI, PWM ,uart , etc. Todo escrito a software pero eso ocupa lineas de codigo hace lento el programa y es ineficiente por eso hay que leer la hoja de datos del microcontrolador y ver como esta construido el micro , como esta distribuido su hardware interno y como están configurados y como se configuran los registros e interrupciones .

no es necesario aprender ASM pues muchos fabricantes ponen ejemplos en C y sobre todo debes tener conocimientos firmes de electronica digital para hacer que el microcontrolador funcione correctamente.
puedes ser un buen programador pero si no sabes electronica estas mal, puedes saber electronica pero si no sabes programar esta igualmente mal.


----------



## Miembro eliminado 356005 (Ago 2, 2019)

Y otro punto importante es el *Pensamiento computacional*.

En sitios como en la del "*Hora del código*" tienes las bases para adquirir esa forma de resolver los problemas.


----------



## cosmefulanito04 (Ago 3, 2019)

Si vas aprender C, lo más sencillo es arrancar en una PC que te ofrece mil herramientas para ver donde te equivocaste.

Y cuando te metés si a nivel de hard (no vale la pena molestarse en una PC, salvo que realmente quieras o lo necesites), ahí si lo mejor es usar un uC de cualquier empresa, leerte bien la hoja de datos y emplear el conocimiento en C que aprendiste antes.

¿Podés meterte con C y un uC de una? Si, sin dudas, el tema es que lo mejor sería que tengas herramientas como un Jtag para debuggear y/o tener resuelto una salida de información como un puerto serie o un display (siempre se puede usar un LED que indique algo, pero a la larga se vuelve tediosa esa forma).


----------

