Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




C vs ASM


       



#21  
Meta
Ubicación: 16F84A
Registrado: 20 Ene 2008
Mensajes: 1025
citar
Mi punto de vista:

1- Personalmente, el C lo emplearía para proyectos demasiado grande, largo y PIC que contenga mucha RAM y Flash. El ASM para proyectos pequeños y PIC muy pero que muy pequeño que nunca se podría usar en C porque te genera el código más grande que directamente en asm.

2- Me gusta mucho el ASM, aunque en un principio lo veía y aún veo complicado, de fácil no tiene nada sobre si trabajas en proyectos grandes.

3-
Hoy en día, elegir un lenguaje más bien las personas lo hacen por gustos que por necesidades. En mi caso porque tengo sólo un libro que te enseña sólo ASM y es bueno saber ASM para programar cualquier PIC hasta los PIC32.



Lenguaje C:

Ventajas:


* Es un lenguaje de alto nivel mas cercano a la máquina.

* Puedes construir rutinas matemáticas fácilmente.

* Puede ser de ayuda al combinarlo con Ensamblador sobre todo en la gama alta.

* Se pueden crear macros con este lenguaje, para después simplificar el código en diferentes desarrollos.

* Es aceptado por la empresa fabricante Microchip, incluso ellos tienen algunos compiladores C.


Desventajas:


* Los programas al compilarlos pueden resultar un poco extensos y pesados por ello debe tenerse en cuenta la capacidad de memoria de programa del PIC a utilizar.

* Con este lenguaje tampoco se puede controlar del todo los tiempos y los registros bit a bit.





Para este lenguaje existen también varias casas que producen software y compiladores para este lenguaje entre ellas las más importantes son:


www.microchip.com con sus compiladores C18 para la gama alta y C30 para los dsPIC, ambos Como otras herramientas de esta marca, se puede incluir en el entorno gratuito MPLAB IDE, y permite a los desarrolladores, llevar a cabo su aplicación en un lenguaje de alto nivel.. No son del todo gratuitos.
www.ccsinfo.com Sus herramienta más conocidas, son la serie de compiladores para las distintas familias de microcontroladores Microchip PIC® MCU: PCW IDE, PCWH IDE y PCWHD IDE. Ofrecen la posibilidad de que el usuario pueda elegir el compilador concreto para la familia que va a utilizar, y compilar en modo linea de comandos, tanto para Microsoft Windows, como para Linux. Para los usuarios de Microsoft Windows, también existe la posibilidad de utilizar su potente entorno de desarrollo PCWHD IDE, que incluye además de los compiladores para todas las familias de PICs y dsPICs, entre otras cosas, un editor de código con reconocimiento de comandos, un depurador ICD, y un Wizard que en base a lo que el usuario le indique, generará la mayor parte del código para inicializar el microcontrolador. Además incluyen una gran cantidad de librerías muy útiles para asociar con la rutina que estamos desarrollando. Este compilador también puede integrarse con MPLAB IDE. No es gratuito.
www.htsoft.com (HI-TECH) Sus herramientas más conocidas son PICC y PICC18. No son gratuitos.

Ejemplo: rutina que hace parpadear un led en el pin cero del puerto B cada 200 milisegundos en lenguaje C empleando el software de CCS PCW IDE:


Lenguaje Ensamblador:

Ventajas:


* Es el lenguaje de bajo nivel natural de la línea PIC tanto para gama baja, media o alta.

* Con el se tiene un aprovechamiento eficiente de los recursos del PIC.

* Se pueden crear macros con este lenguaje, para después simplificar el código en diferentes desarrollos.

* Con el se pueden controlar los tiempos y los registros bit a bit.

* Excelente para manejar interrupciones simultáneas.

* Cuando se genera el archivo .hex éste es completamente optimizado.


Desventajas:

* Tiempo en desarrollo de un proyecto.

* Los programas hecho de un PIC específicos no te funcionan a otro PIC o a otro microcontroladores como AVR, Motorola, Z80, PIC32. Hay casos que entre PIC se puede con ligera modificación.

* Difícil detectar fallos si es muy grande el proyecto, también se complica la organización de bloques de códigos en algunos casos.



El compilador para este lenguaje es el MPLAB IDE el cual se consigue totalmente gratuito en la página de Microchip y constantemente están sacando nuevas versiones, debe aclararse que este solo funciona bajo ambiente Windows. Para Linux existe un versión alternativa llamada: Piklab la cual presenta simuladores, editores, ensambladores y soporta una gran cantidad de compiladores C para PIC.

Ejemplo: rutina que hace parpadear un led en el pin cero del puerto B cada 200 milisegundos en lenguaje Ensamblador empleando el software de Microchip MPLAB IDE:


CONCLUSIONES:

Después de haber analizado los diferentes aspectos que envuelven la programación de PICs en cuanto a los lenguajes,para trabajos profesionales se aconseja lo siguiente:


* Lo ideal es manejar el lenguaje ensamblador para los rangos de gama baja, media y alta por versatilidad y mejor aprovechamiento de recursos del PIC.

* Si usted va a comenzar con la programación de PICs debería primero dominar el lenguaje Ensamblador, no le aconsejaría el lenguaje BASIC. Una vez haya dominado el lenguaje Ensamblador para gama baja y media puede iniciarse con el lenguaje C.

* El Lenguaje C es un lenguaje de alto nivel y puede resultar útil combinándolo con el lenguaje Ensamblador ya que nos puede ahorrar tiempo de programación, depuración y simulación sobre todo en la gama alta y en los dsPIC.

* Puede emplear el Lenguaje C o el Ensamblador para crear macros que le simplifiquen desarrollos futuros.

#22  
WillyP
Ubicación: Argentina
Registrado: 18 Mar 2008
Mensajes: 28
citar
Estamos hablando de pic, no de PC. Por otro lado hasta que los pics no tengan unos cuantos megas de memoria, da lo mismo usar asm o C.
Estoy de acuerdo en que es una polemica sin sentido.-

#23  
Meta
Ubicación: 16F84A
Registrado: 20 Ene 2008
Mensajes: 1025
citar
La verdad es que si, por lo menos se puede programar y hacer cositas con los PIC.

Una cosa curiosa. Si haces con un PIC 16F84A o 16F628A o el 16F88 un programa en ASM, por ejemplo:

Un control, como dependiendo de la entrada, obtienes unos resultados a su salida.

¿Cuántos €, pesos, plata, $, lo venderías?

Ya les diré de dónde saco esta pregunta.

#24  
microtronic
Ubicación: En venezuela
Registrado: 25 May 2006
Mensajes: 92
citar
WillyP escribió: Estamos hablando de pic, no de PC. Por otro lado hasta que los pics no tengan unos cuantos megas de memoria, da lo mismo usar asm o C.
Estoy de acuerdo en que es una polemica sin sentido.-


pero hay calculos que se te haran perder tiempo en c ya hay micros optmizados para trabajar con el de la seria pic18 pa arriba....los calculos aritmeticos y todas esas cosas son mejor en c haci te ahorras cientos de lineas de programacionq ue te haran perder dias de sueño..

#25  
eidtech
Ubicación: México, DF
Registrado: 23 Jul 2006
Mensajes: 244
citar
hay otro punto muy importante que casi no se ha tocado,

si no eres un experto en ASM, puede ser que tu codigo sea mas ineficiente que el generado por un compilador de C que realiza una optimizacion de codigo.

creo que es mas facil dominar y generar buen codigo en C que en ASM...

#26  
Meta
Ubicación: 16F84A
Registrado: 20 Ene 2008
Mensajes: 1025
citar
eidtech escribió: hay otro punto muy importante que casi no se ha tocado,

si no eres un experto en ASM, puede ser que tu codigo sea mas ineficiente que el generado por un compilador de C que realiza una optimizacion de codigo.

creo que es mas facil dominar y generar buen codigo en C que en ASM...


¿Crees? Tal vez. el inexterto de asm aprende con el tiempo y si lo desea se vuelve experto mediante la práctica. No hay problema, con la práctica todo se consigue.

De todas meneras, es bueno aprender de todo un poco. Da igual con qué lenguaje hagas funcionar un PIC, AVR, Motorola, etc, lo que importa es que seamos capaz de hacer algo y que funcione.

#27  
SigmaOrion
Ubicación: La Plata, Argentina
Registrado: 12 Mar 2008
Mensajes: 115
citar
Por mi parte, yo he programado en assembler siempre y lo sigo haciendo. Sin embargo estoy empezando a meterme con el C porque no sólo es muy potente sino que he perdido mucho tiempo haciendo rutinas de funciones que ya vienen implementadas muy eficientemente en C.
También todo es un tema de equilibrio, yo soy partidario de escribir el programa en C y mezclar con assembler donde realmente se necesite, es lo que se hace en PCs y en cualquier microprocesador aunque sea de lo más sencillo. Ahorra tiempo, es más eficiente.

Slds...

#28  
Meta
Ubicación: 16F84A
Registrado: 20 Ene 2008
Mensajes: 1025
citar
EL C lo implmentaron para los PIC sólo por ahorrar tiempo, el ASM a parte que te cabreas, da más la tabarra y tiempo. Aún así, le estoy cogiendo el gustillo al asm desafiante.

#29  Como todo en la vida lo que siembras es lo que cosechas
fitocondria
Ubicación: Tabasco y Veracruz. Mexico
Registrado: 09 Jun 2007
Mensajes: 64
citar
Hace tiempo estaba desarrollando un compilador de C para pic, pero despues de estarlo desarrollando llegue a la conclusión de ¿para qué?.

A menos que tengas gente que te ayude a crear las librerías. De las cuales muchas nunca he usado, y si las usamos es como un copiar y pegar avanzado, si aprendieramos a usar librerias en asm en realidad vienen siendo lo mismo.

Claro hay un solo C (revolcado por muchos ), Laughing, pero hay muchos lenguajes de ensamblador por el tipo de arquitectura y fabricantes.

Por lo tanto, si solo usaramos un tipo de microcontrolador y solo una familia excelente el asm, pero en entornos empresariales que quieres que salga lo más pronto posible el proyecto, mejor pones al departamento de sistemas a crear un c para tus productos y al departamento de programación que usa C, que realize presentaciones y ejemplos para las empresas, pero desarrollar un buen lenguaje C depende de la arquitectura que se va a emplear y siempre quedan huecos que mejorar como en todo que tiene una embergadura considerable, y esto me recuerda cuando en INTEL se decía que su C era mejor que el GNU C, pero despues el GNU C mejoró su compilador de C y creo código más eficiente. Ahí me pregunte que tan importante es la velocidad de ejecución. No sería mejor implementar un FPGA, o un dispositivo a medida.

Bueno como dicen por ahí, conocete a ti mismo y conocerás a los demás. Si conoces C sabras para que y cuando te va a servir. Si conoces ensamblador de cualquier fabricante para sus familias sabras para que y cuando te va a servir. Y cuando emplear cada uno de ellos.

Codifiquen sin estres

Recuerden que la gente que desarrolla los compiladores son personas como todos nosotros. Laughing

#30  DSP (Procesador Digiral de Señales)
LaloMon
Ubicación: manzanillo
Registrado: 20 Jun 2008
Mensajes: 4
citar
Hola amigos.... yo tengo poco en este foro... quisiera que me ayudaran en como generar codigo ensamblador por medio del codigo de c.

en otras palabas convertir el codigo de c en codigo ensamblador.. alguien save si se puede hacer esto y como..

esto lo ocupo para realizar unas practicas con en DSP (Procesador Digital de señales)
el modelo este es TMS 320c50..
mi correo es eduardohrdz@ hotmail.com

 Responder





 Otros temas de interés 
No hay mensajes nuevos Destacado: Programador de microcontoladores PIC Puerto USB
No hay mensajes nuevos Programar un PIC para controlar un TFT
No hay mensajes nuevos Programar el PIC16C765 por el puerto serial y el USB
No hay mensajes nuevos Programar un lm35 en visual basic por el puerto paralelo
No hay mensajes nuevos programar en assembler

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||