C18 es el antiguo compilador de Microchip, y XC8 es el nuevo compilador de Microchip que compraron de HiTech (o algún nombre como ese, de todos modos, el compilador Aussie).
XC8 tiene el soporte actual y es con lo que avanza Microchip. Si está empezando desde cero con PIC, entonces esto es probablemente lo que quiere.
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 utilizando un formato binario incompatible con el de C18 y MPASM. Si planea mezclar C y ensamblador, y en particular 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. Si bien 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 elige un diseño que requiere el modo de direccionamiento pre / post inc / dec que el PIC 18 no tiene . Duh! También reserva dos de los tres registros FSR para su propio uso. También utiliza un modelo de pila de limpieza de llamadas para las llamadas de subrutinas. Eso significa que las subrutinas no pueden eliminar los datos de la pila con la que han terminado antes de llamar a otras subrutinas. El resultado es que la pila necesita considerablemente más espacio del que debería.
Personalmente, me atengo a 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 fue más problemático 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, así que principalmente tengo que agregar la lógica específica al proyecto. Cosas como los controladores UART, el dispositivo USB, la pila TCP / IP y muchas otras instalaciones ya están allí.