# Sobre pic´s y lenguaje de programacion



## naxox (Dic 11, 2005)

Hola a todos  
soy un estudiante de electronica que esta empezando en mi colegio no me han enseñado haun sobre programacion pero me las he rebuscado para aprender y estoy aprendiendo basic.me gustaria saber si me pueden orientar con respecto a que tipo de lenguaje de uso general  me serviria para aprender a utilizar los pic´s y si este es el basic, c, visual basic, etc por favor guienme sobre esto, asta haora estoy usando el liberty basic para hacer unos pequeños programas, megustaria saber que compilador usar, y la placa de programacion.

de antemano le doy las gracias al que quiera ayudarme. 

naxo


----------



## P4blo (Dic 23, 2005)

Hola:

mira yo he trabajado un poco con pic, y lo unico qu te puedo decir con respecto a que lenguajen usan es que tienes que aprender lenguaje assembly mediante diagramas de flujo

Saludos


----------



## maunix (Dic 24, 2005)

naxox dijo:
			
		

> Hola a todos
> soy un estudiante de electronica que esta empezando en mi colegio no me han enseñado haun sobre programacion pero me las he rebuscado para aprender y estoy aprendiendo basic.me gustaria saber si me pueden orientar con respecto a que tipo de lenguaje de uso general  me serviria para aprender a utilizar los pic´s y si este es el basic, c, visual basic, etc por favor guienme sobre esto, asta haora estoy usando el liberty basic para hacer unos pequeños programas, megustaria saber que compilador usar, y la placa de programacion.
> 
> de antemano le doy las gracias al que quiera ayudarme.
> ...



Eres joven,  yo que tu aprenderia ASSEMBLY y C.  
Deja de lado el Basic , y el Visual Basic es del lado de la PC... del lado de la PC te aconsejo nuevamente el C o el Delphi.

Con el assembly podrás entender BIEN como funciona el microcontrolador.  Yo empecé asi, y ahora uso el C en proyectos complejos con los PIC18 y realmente me ha servido infinitamente para saber bien como hacer muchas cosas y resolver problemas.

Los compiladores de C no hacen magia y muchos de ellos, son como macros del assembly, es decir que hacen lo mismo que si lo hicieras con assembly solo 'traducen' instrucciones de un lenguaje más facil de entender...

Saludos


----------



## naxox (Ene 22, 2006)

Hola magio
grax por responder

mira he estado investigando y me encontre con el PICBASIC PRO donde puedo programar el pic utilizando ese codigo me gustari saber que ventajas tiene el C o el Delphi sobre el basic pra programar pic y he incursionado con el assembly pero la verdad se me hace muy tedioso

saludos


----------



## maunix (Ene 23, 2006)

naxox dijo:
			
		

> Hola magio
> grax por responder
> 
> mira he estado investigando y me encontre con el PICBASIC PRO donde puedo programar el pic utilizando ese codigo me gustari saber que ventajas tiene el C o el Delphi sobre el basic pra programar pic y he incursionado con el assembly pero la verdad se me hace muy tedioso
> ...



Se te armó menudo lío.  A ver te paso a explicar

Delphi es para PC, no es para pics!  El Delphi es un entorno de desarrollo visual para plataforma PC, para hacer programas para PC, nada tiene que ver con los pics.  Algunas personas (me incluyo) utilizan delphi para hacer aplicaciones que se comuniquen y muestren los datos que un pic procesa, nada mas.

A ver te paso a dar mi opinion sobre el basic.  Es un lenguaje para niños, lo aprendi cuando tenia 10 años y lo use poco mas, hasta que aprendí pascal.  En cualquier entorno serio de programacion el basic directamente no existe, no se lo nombra... 

El C en cambio es un lenguaje multi plataforma, que si lo aprendes a usar lo podras usar en pics, en otros microcontroladores , e incluso del lado de la PC.  Es decir que es un lenguaje muy portable y lo que aprendas será en un camino acertado.  En mi opinion aprender con basic es perder el tiempo, deja eso a los chicos de 10 años.

Mi consejo sobre el assembly para los pics es que aprendas como estan armados los módulos.  
Los compiladores de C pueden ser muy buenos pero no pueden satisfacer el 100% de las necesidades de un programa , es entonces donde entra en juego el conocimiento del assembly.  Además los 'core' o 'nucleo' de los PIC18,PIC24 y dsPIC, ya permiten optimizar mucho el código de C.  Que significa esto? Que todo compilador de C o Basic , termina siempre generando código en assembly. Un código programado en C generará un código de menor tamaño que uno generado en Basic.

Un lenguaje de programación simple, como caso general redunda en un código generado grande.


----------



## Moyano Jonathan (Jul 29, 2008)

Maunix la verdad que tenes toda la razon , yo empezé con ensamblador , costó un poco pero con el tiempo mas o menos lo aprendí. luego comenzé a usar C para desarrollo de proyectos y me pareció mas entendible que el ASM aunque hay veces que el micro no hace lo que yo quiero . por ejemplo en el tema de las temporizaciones.


----------



## elosciloscopio (Oct 3, 2009)

maunix dijo:


> Se te armó menudo lío. A ver te paso a explicar
> 
> Delphi es para PC, no es para pics! El Delphi es un entorno de desarrollo visual para plataforma PC, para hacer programas para PC, nada tiene que ver con los pics. Algunas personas (me incluyo) utilizan delphi para hacer aplicaciones que se comuniquen y muestren los datos que un pic procesa, nada mas.
> 
> ...


 

Increible.

Pensaba que le basic era sencillo...   ...pero no tanto. 
lo sabria utilizar hasta un niño de dos años  
Evidentemente con un lenguaje asi no se puede construir nada serio.

Saludos


----------



## fernandob (Oct 3, 2009)

maunix:
gracias por tomarte el trabajo de dar es a explicacion, me ha sido util.

un saludo


----------



## Maxloom (Oct 5, 2009)

Despues de entender las bases del ASM decantate por el C es el mas versatil y unificado, y puesdes encontar multitud de ejemplos.


----------



## di3gosl (Oct 7, 2009)

Hola que tal:

Yo te recomiendo que comiences con assembly así conoces a fondo como es que funciona un PIC y que registros tiene o para que sirven los más importantes. Con estos conocimientos cuando se te presenten problemas en lenguajes de más alto nivel que assembly podrás tener una idea más clara de lo que sucede y poder resolver el problema. O te pongo otro caso, si en tu proyecto la prioridad es el tiempo es recomendable utilizar assembly en las partes críticas ya que en este caso se optimiza el uso de los recursos del PIC y tienes el control total del programa, mientras que en otros lenguajes ya existen librerias y funciones hechas que pueden tener elementos extra que en un determinado problema no necesites.

En el colegio primero pasamos por assembly y después de un curso muy pesado por fin nos dejaron utilizar C jajaja. Luego de assembly pase a utilizar el CCS con lo que fue mil veces más sencillo programar =) y ahora mismo vengo programando un proyecto con C de microchip (C30) donde si bien existen varias librerias, en muchas ocasiones tienes que configurar los registros y tiempos para que puedas hacer alguna comunicación, esto en CCS es más sencillo puesto que la mayor parte ya te proporciona las funciones y basta con solo llamar a la función y pasarle los parámetros. 

Saludos espero esta experiencia mía te sea de ayuda y sino ten por seguro que alguien más te responde, en este foro hay gente muy capaz y experimentada =)


----------



## mario2009 (Nov 19, 2009)

Bueno, si bien el Basic, a como mencionan es para mucho menos que principiantes, pues yo lo recomendaría para empezar en estas artes...

La mayoría que entra a un foro de Eo presenta el mismo perfil de PRINCIPIANTE, osea: " Soy  nuevo en esto y quiero que me ayuden si pueden por favor...".

No descartaría recomendar el BASIC, para principiantes es un reto fácil, pero al final es un reto. 
 Buen día!


----------



## ketronica (Dic 25, 2009)

Creo que por algo lo llaman basic, yo lo aprendi a los 15años en una consola de video juegos. no traia ejemplos y consegui un libro de diagramas de flujo que tenia ejemplos y los probe mis compañeros me decian eres un creneo...


----------



## kalocha (Dic 25, 2009)

amigo te recomiendo el mplab de microchip, lo puedes descargar desde la pagina y usa el compilador c30, deskarga la version de estudiante es gratis, saludos.


----------



## MVB (Dic 25, 2009)

Hola a todos. 
La verdad me interesa este tema, pero yo quiero hacer un poco las cosas al reves. 
Empezar con c para saber a grandes rasgos que puedo hacer con un PIC, luego estudio asm para conocerlo a bajo nivel.

QUe opinan?


----------



## dcastibl1 (Dic 25, 2009)

bueno esto sobre c y assembler mas que todo es para gustos en mi parte yo este semestre termine de dar los pic aprendi en assembler eso si me parece un poco complicado, ami me han dicho que el C es mas facil pero yo quisiera saber que problemas da el C al momento de programar y que ventajas tiene sobre el assembler. a y tengo una pregunta sobre si en mplab yo puedo combinar una parte del programa en assembler con C ejemplo yo hago una temporizacion en assembler y para visualizarlo en un lcd esa etapa de visualizacion lo puedo hacer en C? espero y me guien en esa parte ya que tengo todavia no se por cual decidirme si el c o el assembler.
saludes diego


----------



## di3gosl (Dic 25, 2009)

Hola, pues mira lo que pasa es que C es más versatil y más fácil programar ya que muchas funciones y librerías ya se encuentran implementadas por lo que con el simple hecho de incluirlas y hacer las llamadas a las funciones puedes realizar gran parte del trabajo, yo las he usado en varias ocasiones para mis proyectos de la universidad.

Te comento que voy haciendo mi tesis trabajando con unos investigadores que me están asesorando para realizar una comunicacion con USB mediante el PIC18F4550, y lo que me han dicho es que lo realice en ASM ya que así se tiene el control total de lo que realiza el microcontrolador por lo que el código es más óptimo, al realizar exclusivamente lo que necesitas. Esto se hace mucho más importante en situaciones donde el tiempo es la mayor prioridad. Del lenguaje C he utilizado el CCS y, el C18 y C30 de microchip. Y en lo personal me pareció mejor C18 y C30 de microchip porque optimizaba más el código que el CCS lo cual se traducía en menos uso de la memoria de programa. El único detalle que he notado es que no se encuentra mucha información y manuales sobre C18 y C30 más que la que brinda microchip, mientras que para CCS existe numerosa info en la red. Esa es mi impresión nose cual sea la de los demás, aunque nadie duda que es mucho más fácil programar en C que en ASM.

Y sobre lo que preguntas de si se puede combinar C on ASM la respuesta es que sí, sí se puede y lo he hecho en algunas ocasiones. Se realiza sobre el compilador de C en donde exite una directiva para insertar código en ensamblador.


----------



## Meta (Dic 26, 2009)

Hola:

El ensamblador y C. ¿Cuál elegir y por qué? Depende de las circustancias. Para entender bien un PIC paso a paso, es bueno *ensamblador* (ASM, assembler). Más adelante ya te meterás con el C. La diferencia entre uno y otro es que el C es más fácil de entender, acabar antes las tareas en menos tiempo con el resultado de que el .hex sea más grande y gaste más memoria RAM que el ASM. Eso si, en velocidad es mejor ASM.

Para el ASM se recomienda usar mucho el diagrama de flujo para tener las ideas claras para luego empesar con ella. Es bueno escribir por cada línea de código argumentos de lo que estas haciendo paso a paso para no olvidarte. Lo ideal es hacer tus propias librerías para usarlas en el futuro, con el tiempo no te enrollarás demaciado con ensamblador.

Ensmablador lo pide mucho en centros de enseñansas para que entiendas bien el PIC por dentro.

El C es para acabar antes un proyecto, entenderlo mejor, actualizarlo o modificarlo muy facilmente, etc. Ahora está bien aprenderlo ya que si vas a meterte en el mundo de los PIC32 es aconsejable.

_Si sacan un PIC nuevo y las librerías del C no están actualizadas te puedes quedar colgado hasta un año, suele pasar con CSS en algunas funciones que la única menera es agregar una etiqueta en ASM dentro del C para que puedas acceder, de lo contrario jamás podrá usar esa función, así que hay que aprender de todo un poco._
*
1)* Si quieres aprender PIC en ensamblador hay un libro y Web con ejemplos hasta con Proteus (Que hace muchos meses ya no actualizan, por algo será).
www.pic16f84a.org

*2)* Hay tutoriales del C18 en PDF: http://electronica-pic.blogspot.com/2009/07/manual-en-pdf-sobre-la-configuracion-y.html

*3)* Hay nuevos núcleos de PIC16F más eficientes que los actuales que puedes ver la noticia aquí.
http://www.elektor.es/noticias/prim..._source=ES&utm_medium=email&utm_campaign=news

http://www.elektor.es/noticias/los-..._source=ES&utm_medium=email&utm_campaign=news

*4)* Lo bueno que en ASM hay mucha información para aprender y el IDE de microchip es gratuito que actualmente ya salió la versión *MPLAB IDE v8.43.*

*5)* Hay alternativas frente al libro que puedes ver aquí.
http://electronica-pic.blogspot.com/2009/03/asm-desde-cero.html

Un cordial saludo.


----------



## intecnica (Dic 27, 2009)

Hola...

Sobre lenguajes de programación hay muchos mitos y algunas realidades. 

Para empezar te recomiendo metodología. La metodología te llevará a crear una aplicación de forma eficaz (hablamos de supuestos). Luego viene la implementación. 

Hoy en día crear una aplicación completamente en ASM es sólo para quienes tiempo. En mi trabajo antes era así y, hace como tres años ordené un cambio en la forma de hacer las cosas simplemente por productividad. 

El ensamblador queda únicamente para aquellas funciones (llamales procedimientos, estructuras o como quieras) que requieran toda la potencia y accesibilidad del microcontrolador. ¿Que importa si haces en C, Pascal, Basic, etc una interface de usuario? El micro siempre va a ser lo suficientemente rápido como para no complicarte la vida con eso. 

En el trabajo cotidiano he de enfrentarme a retos de todo tipo. Desde equipo de laboratorio, a simples relojes o tableros informativos. Transmisores de radio, comunicación digital, etc. Y, en estos momentos rara vez recurrimos al ensamblador. 

Ensamblador tiene un gran problema: Su mantenimiento. Pasado un tiempo te costará mucho trabajo retomar una aplicación para modificarla incluso con una buena documentación. Eso sin contar si otra persona fue quien la implementó. 

Sobre lenguajes de medio y alto nivel.... Cada cual tiene su opinión, pero no puedo sino poner una sonrisa de aquellos que reniegan de BASIC. Lo más normal es que no lo conozcan, es un lenguaje muy desprestigiado para empezar por su propio nombre. Pero te aseguro que algunos sistemas con PCF para control en tiempo real los desarrollo en alguna versión de BASIC. Incluso tengo por ahí una consola con una aplicación de un osciloscopio de 2 canales de BF sin una sola línea de código esamblador.... Y ya puestos, ateniéndome a programación estructurada: Todo procedimiento o función tiene una sola entrada y una sola salida. Por tanto, no hay un solo salto incondicional (goto)... Incluyendo firmware para control de displays SED y T6963 con micros pequeñitos, modbus, etc. 

Otro de los lenguajes con los que trabajo habitualmente es Pascal. Pascal para PC (Lazarus que no es más que Freepascal con su IDE) y MikroPascal para PIC y otros micros. A los maniáticos de C sólo les digo que, si C hace listas, Pascal está diseñado para listas. C es un compilador puro, Pascal también. Y así todo. ¿Porqué uso Pascal? un poco por llevar la contraria a las modas y mucho por la legibilidad para la revisión y mantenimiento de una aplicación. 

En realidad, cuando programas lo haces con independencia del código ¿verdad? so Eso es hacer las cosas con cierta planificación y metodología; entonces usa el más adecuado y con el que más herramientas tengas a mano, o incluso puedas creartelas.

Un saludo,
Angel


----------



## Meta (Dic 27, 2009)

Hola:

La verdad es que el ensamblador es muy tedioso a la hora de programar y sobre todo a la hora de actualizar, tienes que crear muchas librerías y muy modular para lograrlo.

El C es el que vale para proyectos grandes sobre todo con los PIC32.
https://www.forosdeelectronica.com/f24/opinan-pic32-12716/
http://www.johnloomis.org/microchip/pic32/resources.html
Para programar PIC es el ASM y como mayor productividad es el C para PIC, en cuanto hacer interfaz como lo que estoy haciendo en estos momentos para comunicarlo con PIC por puerto serie en mi caso, ya uso el Visual C# porque me gusta, puedes elegir cualquier lenguaje.

Puedes ya descargar ejemplo:
https://www.forosdeelectronica.com/f26/interfaz-puerto-serie-picrs232-v2-00-beta-28156/#post234304

Ahora ya que hay muchas información y opiniones, puedes elegir para aprender.

Saludo.


----------



## intecnica (Dic 27, 2009)

Mira en el post que acabo de poner "consola gráfica con material reciclado" hay un par de fotos al final, una de ellas es el osciloscopio que comenté (100% basic), al igual que el soft del equipo de electromedicina y una central de domótica publicados el día de ayer. Ya te digo, hazlo con lo que te sientas más cómodo.

suerte


----------



## Meta (Dic 27, 2009)

El Basic (ahora también C) se usa mucho para calculadoras. 







L averdad sigo con el proyecto de la comunicación con el PIC y esta calculadora casio, aunque sea para experimentar.


----------



## jeancarlo4892 (Feb 13, 2010)

te recomiendo que aprendas C primero que Basic ya que basic es una rama del c en cuanto al assembler es un poco complicado aunque son grandes las utilidades y cualquiera que se llame programador tiene que saber assembler 

existen muchos programas para quemar pics yo uso el winpic para crear el archivo y mandarlo a quemar


----------



## cristian_elect (Feb 14, 2010)

Meta ya es un veterano en lenguajes de programación.


----------



## intecnica (Feb 14, 2010)

BASIC proviene, al igual que Pascal del ALGOL68 ... 
pero eso, eso es otra historia.

Y, como dije por ahí, yo trabajo el 90% con microcontroladores (pic y atmel) y el firmware es en estos lenguajes, y, únicamente, unicamente para cosas extremas, ensamblador.

¿Que más da la implementación si el algoritmo no es bueno? 

Saludos..
>>Toda subrutina tiene una sola entrada y una sola salida<<


----------



## Electrodopaje (Feb 19, 2010)

saludos:
pueden ayudarme diciendome donde puedo conseguir un compilador asm or c que me funcione en el windows 7 ? porque solo he conseguido en C.

gracias de antemano.


----------

