Hola:
Se sabe que C tienes ciertas limitaciones al menos en el campo de CCS frente a C18. Uno de ellos es que cuando sacan un PIC nuevo, el CCS puede tardar un año en hacer una librería para que funcione alguna función de los bancos de memoria.
¿Qué hacer?
Introduces etiquetas y códigos de ASM puro y duro del PIC para que logres funcionarlo. En cuanto al C18, también se puede hacer, la idea real en este caso es ahorrar algo de memoria y sobre todo tener más rendimiento en algunas partes del programa.
La ventaja del C es muy parecido a otros C estandar de otros microcontroladores, hay de todo tipo, desde que aprendas con uno, al introducirte a otra marca o o la misma pero en otra familia que la estructura interna es diferente.
Si ya cuesta adaptar un lenguaje ASM a otro PIC, hacerlo con AVR no es posible, en cambio si usas el C tiene más posibilidades y en menos tiempo.
ASM más eficacia menos eficiente en tiempo.
C lo contrario.
Mezcla de C y ASM un término intermedio.
Para hacer proyectos pequeños como este vídeo para eso está el ASM.
Si en temas de USB 2.0, (USB 3.0 en el posible futuro) o pantallas táctiles a color con menús, se recomienda C. En ASM te puedes pegar media vida.
Quiero hacer un Sistema Operativo a lo Linux solo con ASM. La verdad que ASM se usas para algunas cosas. Gran parte está hecho en C y la mayoría de los programas en C. Si usamos un Microprocesador i7 para hacer nuestras aplicaciones de encender y apagar Led, el ASM para este micro es totalmente compleja y no te vale para los demás como el Pentium IV por poner un ejemplo y eso que es del mismo fabricante.
¿Por qué se usa el C?
Para ahorra tiempo. En temas de microcontroladores se usa mucho el ASM porque es sencillo, para mi no tanto.
¿Por qué no usan C para todas las aplicaciones de Windows hoy en día?
Se suelen usar en temas de Driver, la mayoría es en C o lenguajes de alto nivel, y otros demasiado alto como Java y .NET.
En temas de PIC, lo mejor es empezar con ASM, luego C y así combinas las dos cosas. Si tienes problemas de espacio de memoria, a obien, compra otro PIC de mayor capacidad, o aprende a optimizar a tope tu propio código a toda costa, de paso tendrás mejor rendimiento y menos cuelgues.
Los PIC32 por su gran complejidad, Microchip prefiere que usemos y nos centremos en C, por algo será.
Lo más que me sorprende, le dio al fabricante sacar PIC32 de 28 a 40 pines y que se puede robar más facilmente en la protoboard, cosa que antes no era así. Poco a poro triunfa.
https://www.forosdeelectronica.com/f24/pic32-28-40-pines-69636/
Entre ASM y C a escala mundial, preferiblemente el C ya que se usa para casi todo, hasta programas CustomFirmware, consolas de código cerrado y mil cosas más. No aprender ASM diferentes por cada micro diferentes. ¿Alguna idea cuantas márcas hay de microcontroladores, sin contar microprocesadores y
FPGA?
En resumen, si te dedicas a programar PIC, es bueno el ASM, luego el C, después la combinación. La gente de hoy en día, cada vez más veo que prefieren el C. En mi caso cada vez deseo más el C, por ahora estoy con el ASM a cañón. El C por el tema que te ahorras muchísimo tiempo, haces proyectos mucho más complejo en poco tiempo y ser capaz de hacerlo, frente al ASM que te pegas media vida.
Un saludo.