Hasta ahora, la respuesta dada se limita a la microelectrónica PIC de 8 bits, pero el OP preguntó (en parte):
-
¿Por qué hay diferentes compiladores cuando uno puede hacer el trabajo?
-
¿Se utilizan ciertos compiladores solo para microcontroladores específicos?
Voy a responder a estas dos preguntas juntas. Microchip no solo fabrica microcontroladores de 8 bits (PIC10, PIC12, PIC16, PIC18) sino también de 16 bits (PIC24 / dsPIC33) y de 32 bits (PIC32).
Cada uno de los PIC de 8 bits (excepto el PIC18) tiene conjuntos de instrucciones similares, utilizando un solo acumulador (W0), una pequeña cantidad de RAM (25-256 bytes) y una pila de llamadas de hardware. El conjunto de instrucciones originalmente tenía 35 instrucciones, pero se amplió a 49 instrucciones en dispositivos más nuevos para adaptarse mejor a los compiladores de C (hasta ese momento, la mayoría de los programas 8-PIC estaban escritos en código de ensamblador; muchos aún están en los chips con muy poco flash .)
Los dispositivos PIC18 agregaron soporte para una pila de software y una memoria RAM mucho más grande. Tienen 75 instrucciones (83 para dispositivos más nuevos).
A pesar de todas estas diferencias (particularmente las diferencias entre el conjunto de instrucciones PIC de 8 bits de gama baja y el PIC18 de gama alta), el compilador XC8 soporta todas estas familias de PIC de 8 bits. Lo hace haciendo uso de dos compiladores internos: PICC y PICC18, y seleccionando cuál usar según el procesador seleccionado.
Hay versiones tanto gratuitas como de pago del compilador XC8, la única diferencia es la cantidad de optimización realizada.
El siguiente paso desde los microcontroladores PIC de 8 bits son el PIC24 de 16 bits y el dsPIC33. Son muy similares: el dsPIC incluye el conjunto de instrucciones PIC24, pero también agrega instrucciones adicionales para hacer DSP (Procesamiento de señal digital), de ahí su nombre. Estos procesadores PIC de 16 bits son compatibles con el compilador XC16. Aunque se pueden programar en lenguaje ensamblador, rara vez se hace excepto para bucles muy ajustados o rutinas de servicio de interrupción de tiempo crítico (ISR).
Al igual que XC8, existen versiones gratuitas y de pago del compilador XC16, de nuevo la diferencia es la cantidad de optimización realizada.
Y finalmente, está la familia PIC32 de 32 bits, con un conjunto de instrucciones derivado de los MIPS de estilo RISC. Los dispositivos más nuevos pueden abordar hasta 2 MB de memoria flash y 512 K de datos. Los procesadores de 32 bits son compatibles con el compilador XC32. Al igual que el PIC24, rara vez se programan en lenguaje ensamblador. Y también como el compilador Like XC16, existen versiones gratuitas y pagas del compilador XC32, una vez más la diferencia es la cantidad de optimización realizada, hasta un 50%.