He aprendido que MPLAB IDE tiene diferentes compiladores como C18, XC8 y HI-Tech.
Quiero saber las siguientes cosas:
¿Por qué hay diferentes compiladores cuando uno puede hacer el trabajo?
Porque la gente los mejora con el tiempo.
C18 ha sido reemplazado por XC8. C18 es viejo y basura, por lo que hicieron XC8, que es mucho mejor. También aprovecharon para nombrarlo algo más lógico.
HI-Tech es un compilador de terceros escrito por otra persona a la que Microchip le compró los derechos. También está obsoleto a favor de XC8.
¿Algunos compiladores solo se usan para microcontroladores específicos?
Sí. A medida que se lanzan nuevos chips, el compilador tiene que admitirlos. Los compiladores antiguos que no se actualizan no admitirán los nuevos chips.
¿Hay más compiladores que estos 3 que debo tener en cuenta?
También existe el compilador SDCC de código abierto, pero es muy básico y solo tiene soporte parcial para PIC, y no funciona (que yo sepa) con MPLAB.
Otro, que usa su propio IDE, se llama CCS, aunque nunca lo he usado.
Si no le gusta C, hay varios compiladores BASIC para chips PIC de 8 bits, incluido Swordfish.
Si se puede usar cualquier compilador para, por ejemplo, compilar el código PIC18F, ¿qué decide cuál elegir? Tengo muchas ganas de saber cómo decidir con cuál ir.
Eso es simple: elige XC8 ya que es el compatible actualmente. Todos los demás son viejos y obsoletos.
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?
¿Algunos compiladores solo se usan para microcontroladores específicos?
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 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 C (hasta ese momento, la mayoría de los programas 8-PIC se escribieron en código ensamblador; muchos todavía están en los chips con muy poca memoria flash). .)
Los dispositivos PIC18 agregaron soporte para una pila de software y una 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 es compatible con todas estas familias de PIC de 8 bits. Lo hace utilizando dos compiladores internamente: PICC y PICC18, y eligiendo cuál usar en función del procesador seleccionado.
Hay versiones gratuitas y de pago del compilador XC8; la única diferencia es la cantidad de optimización realizada.
El siguiente paso de los microcontroladores PIC de 8 bits son el PIC24 de 16 bits y el dsPIC33. Estos 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 en bucles muy estrechos o rutinas de servicio de interrupción (ISR) críticas en el tiempo.
Al igual que XC8, existen versiones gratuitas y de pago del compilador XC16; nuevamente, la diferencia es la cantidad de optimización realizada.
Y, por último, 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 manejar 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, al igual que el compilador Like XC16, hay versiones gratuitas y de pago del compilador XC32; nuevamente, la diferencia es la cantidad de optimización realizada, algunas hasta en un 50%.
Russel McMahon