¿Decidir qué compilador para PIC18F26K22 en MPLAB X, C18 o XC8?

Estoy tratando de programar un microprocesador por primera vez y tengo muchas, muchas dudas.

He instalado los compiladores C18 y XC8, además de algunos otros. Cuando creo un nuevo proyecto y selecciono mi microprocesador, PIC18F26K22, puedo elegir entre estos dos compiladores, además de los dos ensambladores mpasm. Cuando ambos están disponibles para elegir, ¿eso significa que ambos funcionan?

¿Cómo decido cuál usar? He intentado buscar en Google pero parece que no puedo encontrar la respuesta; tal vez porque no sé qué buscar en Google y no sé cómo leer los resultados. ¿O tal vez no hace ninguna diferencia real cuál elijo?

Use XC8, el compilador C18 quedó obsoleto hace algún tiempo.

Respuestas (2)

Como dice Roger, usa XC8. Es el compilador más nuevo.

El compilador C18 está obsoleto y no admitirá ningún dispositivo más nuevo.

Otra desventaja de C18 es que solo admite la familia de microcontroladores PIC18 a diferencia del XC8, que admite todos los microcontroladores PIC de 8 bits: PIC10, PIC12, PIC16, PIC18.


También diría que XC8 (que se basa en el compilador HI-TECH C) es un poco más fácil de usar que C18. Solo eche un vistazo a cómo declararía una ISR en ambos compiladores:

C18 :

void isr(void)
{
   /* ... */
}

#pragma code high_vector=0x08

void interrupt_at_high_vector(void)
{
    _asm GOTO isr _endasm
}

#pragma code

#pragma interrupt isr

contra XC8 :

void interrupt isr(void)
{
   /* ... */
}

C18 es el antiguo compilador de Microchip, y XC8 es el nuevo compilador de Microchip que compraron a HiTech (o algún nombre así, de todos modos, el compilador australiano).

XC8 tiene el soporte actual y es con lo que Microchip está avanzando. Si está comenzando desde cero con PIC, entonces esto es probablemente lo que desea.

Sin embargo, hay algunos problemas a tener en cuenta de cualquier manera. XC8 no implementa una pila de software. También hace su propio enlace usando un formato binario incompatible con el de C18 y MPASM. Si planea mezclar C y ensamblador, y particularmente si tiene módulos MPASM existentes, o espera obtener alguno de otros, entonces manténgase alejado de XC8.

Por otro lado, C18 también tiene sus problemas. Mientras que el generador de código parece ser robusto, algunas de sus estrategias de cómo usar el hardware PIC 18 son "menos que brillantes". Implementa una pila de software, pero eligió un diseño que requiere el modo de direccionamiento pre/post inc/dec que el PIC 18 no tiene. ¡Eh! También reserva dos de los tres registros FSR para su propio uso. También utiliza un modelo de pila de llamadas limpias para llamadas a subrutinas. Eso significa que las subrutinas no pueden eliminar datos de la pila con la que terminaron antes de llamar a otras subrutinas. El resultado es que la pila necesita mucho más espacio del que debería.

Personalmente, me quedo con MPASM en los PIC de 8 bits. He usado C18 en el pasado para algunos proyectos mixtos de C/ASM, pero eso fue solo porque recibí el código de esa manera. Siempre había más problemas cuando el compilador estaba involucrado, en comparación con un proyecto MPASM puro. También tengo muchos subsistemas escritos en MPASM ya en el disco, por lo que principalmente solo tengo que agregar la lógica específica del proyecto. Cosas como controladores UART, dispositivo USB, pila TCP/IP y muchas otras instalaciones ya están allí.