Estoy usando el compilador HI-TECH C para el microcontrolador PIC16, y me gustaría compilar condicionalmente diferentes fragmentos de código según el microcontrolador específico que se haya seleccionado.
Sé que puedes compilar código condicionalmente con algo como:
#if defined(MACRO1)
... compile this code ...
#elif defined(MACRO2)
... compile this code ...
#endif
Lo que necesito saber es qué macros predefinidas están disponibles en el compilador HI-TECH C que me permitirán seleccionar el microcontrolador específico.
La página 98 del Manual HITEC C enumera todas las macros predefinidas.
Una de las entradas es:
_CHIPNAME Para indicar el tipo de chip específico seleccionado, por ejemplo, _16F877
así que tienes, como otros ejemplos:
etc.
Si pregunta sobre la compilación condicional de código para diferentes PIC usando el nombre definido, puede usar la macro predefinida _CHIPNAME mencionada en la página 106 del manual 9.81.
O puede usar la familia (por ejemplo, _PIC12, _PIC14, _PIC14E como se menciona en la misma tabla) o simplemente definir la suya propia.
Parece que desea un ensamblaje condicional (o compilación) según el chip de destino, aunque su ejemplo no está claro. No creo que pueda poner DEFINE en el objetivo de un #IF como en su primer caso, y parece que está probando lo mismo en ambos casos.
En cualquier caso, hay un símbolo definido para el número de modelo PIC específico como se especifica en la línea de comando MPASMWIN o con la directiva LIST. Los archivos de inclusión específicos del modelo tienen una verificación para asegurarse de que se selecciona el modelo correcto para que coincida con el archivo de inclusión. Por lo tanto, puede escribir:
#ifdef __18f2520 ;el código aquí solo se incluye cuando el objetivo es PIC 18F2520 #terminara si
Majenko
Rashid