¿Qué macros de nombre de chip están disponibles en el compilador HI-TECH C?

1

Estoy usando el compilador HI-TECH C para el microcontrolador PIC16, y me gustaría compilar condicionalmente diferentes trozos de código dependiendo de qué microcontrolador específico haya sido seleccionado.

Sé que puedes compilar condicionalmente el código 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á seleccionar el microcontrolador específico.

    
pregunta rashid

3 respuestas

4

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:

  • _16F88
  • _16F84A
  • _16F505
  • _16F777
  • _16F1823
  • ...

etc.

    
respondido por el Majenko
1

Si pregunta por un código de compilación condicional para diferentes PIC usando el nombre definido, puede usar la macro _CHIPNAME predefinida que se menciona 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.

    
respondido por el Oli Glaser
0

Parece que desea un ensamblaje condicional (o compilación) dependiendo del chip de destino, aunque su ejemplo no está muy claro. No creo que puedas poner DEFINE en el objetivo de un #IF como en tu primer caso, y parece que estás 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 comandos de MPASMWIN o con la directiva LIST. Los archivos de inclusión específicos del modelo tienen una marca de verificación para asegurarse de que se seleccione el modelo correcto para que coincida con el archivo de inclusión. Por lo tanto puedes escribir:

#ifdef __18f2520
     ;code here is only included when target is PIC 18F2520
  #endif
    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas