Como dijo manwewe, podes hacer todo lo que haces con un compilador de una PC. De manejarse hay 3 compiladores actuales y 1 desfasado, eso no quita que puedan existir otros.
- CCS
A mi gusto se aleja mucho del C de los demas compiladores, tiene directivas propias, tiene funciones especificas que la fuente no esta en ningun lado, el compilador toma algunas decisiones por vos implicitamente, que si no lo sabes no tenes idea porque esta haciendo esas cosas.
Permite rapidamente gracias a esas directivas configurar algunos modulos y hacer prototipos , pero sin saber como funciona el micro/funciones podrias entrar en problemas.
Presenta ademas una mayor abstraccion del hardware que los demas compiladores, ya que no tenes que estar cambiando registro a registro para configurar un modulo.
Es pago... Pero no se puede hablar de pirateria en el foro, asi que de donde lo consigas es tu problema, lo mismo para todos los demas compiladores nombrados.
- XC8/XC16/XC32/XC32++
Esta es la familia mas actual del fabricante Microchip, XC8 es un poco especial, ya que su programacion en assembler (ASM) es propio de Microchip, es decir la sintaxis del ASM, por lo cual no podriamos juntarlos con los demas como XC16/XC32/XC32++ que como dijo manwewe son un port o caso especial de GCC. Lo bueno es que sus directivas y su forma de trabajo asimila a muchos otros lenguajes. XC8 como te decia es distinto en ves de usar direcciones de memoria en defines tiene unas definiciones de estructuras propias del compilador aunque no vas a nunca definir algo asi vos, pero esto es lo que mas se aleja de C de una PC en una programacion normal. Los demas pueden tener distintos __attrib__ pero su sintaxis es como al de GCC incluso en la parte de ASM.
Tiene algunas funciones BUILT-IN en el compilador, para facilitar algunas cosas, como generador de delays, o en algunos registros se requiere una secuencia como proteccion, entonces te ofrecen alguna funcion que hace todo eso como si fuera un solo paso nomas. XC8 posee algunas librerias para algunos PIC pero no es libre el contenido, XC16 en adelante, los codigos se encuentran en una carpeta aparte. Tambien XC8 posee una diferencia para las interrupciones propia al igual que CSS. Para que quede claro, XC8 = PIC12/16/18 , XC16 = dsPIC/PIC24, XC32/XC32++ = PIC32
Este tambien es pago.. o por subscripcion..
- MikroC
Este compilador es el que menos veo, pero se parece bastante a los compiladores XC de Microchip en el sentido de como hace para acceder a los registros del micro. Ayudando a gente vi que posee algunas funciones extras, no se si seran "privadas" las funciones o te daran el codigo (librerias) para poder acceder a las mismas y ver que hace. Es casi lo mismo que XC pero por ser una tercera parte no posee el soporte a todos los micros como es XC.
Tambien es pago.
- HI-TECH C, C18, C32, ASM30 (assembler para los otros PICs)
Estos fueron los primeros compiladores de C para los PIC y que Microchip como fabricante le daba soporte ( de Hi-Tech ), todavia se pueden bajar desde la pagina de Microhip, dentro de sus "archivos". La ultima version dentro de la pagina pertenece a 2011 para los PIC10/12/16, C18 para PIC18 la ultima es de 2014. Lo bueno es que te ofrecen las versiones PRO, por lo cual podes tener optimizaciones de forma gratuita, lo malo a mi gusto es que ya no tenes mas soporte para los mismos.
Estos compiladores son totalmente capaces de realizar las mismas funciones que un compilador nativo como DEVC++:
Es decir si pueden hacer/manejar estructuras de datos como pilas, colas, punteros, etc. o bien existen "ciertas limitantes" en comparación a DEVC++, ya que son orientados a pics. Debo añadir que escuche de un profesor mío comentarios sobre que hay cosas que luego no puedes hacer con ellos del leguaje C.
Y .. de igual modo alguno de estos compiladores esta mas cercano o alejado al lenguaje ???.
Entonces ahora a aclarar tus ideas:
- La mayoria es son compiladores C y no C++ ( como el DEVC++) eso ya hace que sea distinto lenguaje.
- Podes realizar todo lo que podes hacer en C en una PC, las limitantes de Hardware como te dijeron y la potencia de los mismos hacen que por ejemplo la memoria dinamica sea irrealizable (no conveniente), multi-thread podes si es que el micro puede almacenar un SO que maneje tareas pero recorda que tenes 1 solo nucleo, En casi la mayoria de las aplicaciones de microcontrolador simples no tiene sentido ocupar y gastar el espacio para un SO, ya en cosas mas avanzadas si ( exigiendo micros con mas memoria)
- No te pondrias nunca a usar la libreria stdio para sacar datos, a lo sumo como maximo usar la funcion sprintf, todo lo demas corre por cuenta tuya realizarlo.
- Muchas funciones son mejores ser realizadas por uno que usar de las librerias, ya que la funcion de uno sirve para lo que solamente necesitas, aumentando la velocidad.
Y creo que no es acerca de cual esta mas cercano o alejado al lenguaje... Todos son C y se manejan igual, todas la forma de estructuras, arrays, uniones, control de flujo, manejo del stack, etc son iguales en todos, la unica forma que se diferencian entre uno u otro es la forma de acceder al hardware (y tal ves la forma en que pasan los parametros en ASM). El acceso a registros algunos mediante funciones y otros a traves de estructuras. Esto respecto a los compiladores.
Luego tenes que entender la limitaciones de hardware como dijo manwewe, los PIC10/12/16/18 poseen una pila limitada, los micros de 16bits en adelante usan la RAM para tener la Pila, asi que quita esa limitacion. Otros micros pueden ser diferentes, como los Attiny de la ex-Atmel ahora Microchip, son distintas arquitecturas.
Mi opinion: Absolutamente mia y que no se tome como una orden o una verdad que se deba respetar, por lo observado en el foro solo hablando de los PICs lo mejor para mi es XC.
- Los compiladores Cxx. no tienen mas soporte. Hay gente que lo sigue usando por el tema de las optimizaciones.
- CCS, por lo que veo en el foro la mayoria que comienza no tiene problemas en el tema del flujo del programa, sino en como usar las directivas , o que el compilador les cambia cosas por si solo, Por supuesto si a esto le sumas que recien comienza en C y no posee manejo del flujo del programa se vuelve peor. Tiene una curva un poco mayor de aprendizaje respecto al compilador, y cuando tienen que tratar cosas del micro en si, empiezan los problemas ya que tenes que estar definiendo registro a registro. Pero no todo es malo, es excelente para prototipos rápidos que es lo que la mayoría hace cuando aprende. No es lo mismo escribir 1 linea sin saber nada del micro que modificar 5 registros para 1 solo modulo y tener que leer el datasheet del micro. Y cuadno ya conoces las cosas que hace el compilador y sus funciones, seguramente sea mas rapido (Tiempo de desarrollo ) hacerlo con CCS. El otro tema es el soporte a TODOS los PICs, no creo que los soporte a todos, aunque eso no importa mucho porque casi siempre se usan algunos en especial.
- MikroC no se quien podria querer complicarse con esto. No hay mucha gente que lo use por lo visto aca en el foro. Lo bueno es que segun donde lo consigas podrias tener un "XC..." con optimizaciones.
- XC es genial porque te permite tener el control completo del micro, se cuando voy a limpiar algun flag de interrupcion, se que registro estoy modificando y que valor le pongo, puedo modificar registros de forma rapida sin necesidad de declarar otra cosa. Todo lo que se ejecute es por que yo lo escribi. Lo malo es que necesitas pagar para obtener las optimizaciones, y eso mata al compilador. Pero a no ser que tus requerimientos sean bastantes puntuales no creo que tengas problemas, FLASH deberia sobrar siempre, sino por unos $$ mas obtenes uno mucho mejor y con mas FLASH/PINES/RAM/etc.
Y mi ultima opinion... Hay mas fabricantes de micros, que ofrecen herramientas de desarrollo muy baratas con programador incluido, Compiladores totalmente gratuitos con optimizaciones (GCC), con nucleos ARM. No voy a nombrar marcas porque existen muchas, vos elegis que te parece mas conveniente.