Si está utilizando la familia de compiladores XC16, todo lo que necesita es:
#include <xc.h>
... ya que en su interior, ¡no hay nada más que muchos #ifdefs para cada parte posible!
/*
* xc.h
*
* Generic include file for XC16
*
* Copyright 2012 Microchip Technology
*/
#if defined(__PIC24EP128GP202__)
#include <p24EP128GP202.h>
#endif
#if defined(__PIC24EP128GP204__)
#include <p24EP128GP204.h>
#endif
#if defined(__PIC24EP128GP206__)
#include <p24EP128GP206.h>
#endif
#if defined(__PIC24EP128MC202__)
#include <p24EP128MC202.h>
#endif
#if defined(__PIC24EP128MC204__)
#include <p24EP128MC204.h>
#endif
#if defined(__PIC24EP128MC206__)
#include <p24EP128MC206.h>
#endif
#if defined(__PIC24EP256GP202__)
#include <p24EP256GP202.h>
#endif
#if defined(__PIC24EP256GP204__)
#include <p24EP256GP204.h>
#endif
#if defined(__PIC24EP256GP206__)
#include <p24EP256GP206.h>
#endif
/* ...etc etc and so on */
Por supuesto, esto está condicionado a tener un proyecto de configuración adecuado dentro de MPLABX y un compilador de configuración adecuado.
La configuración del proyecto se encargará de definir la definición __PIC24xxxxxxxxx__ apropiada para la parte objetivo.
En Windows, los archivos .h específicos del dispositivo están en
\vX.XX\support\family\h
donde vX.XX es la versión del compilador, y la familia es la familia de partes (PIC24E, PIC24F, PIC24H, DSPIC30F, DSPIC33E, DSPIC33F).
En cada una de esas subcarpetas hay un archivo de encabezado genérico de familia: por ejemplo
\v1.26\support\dsPIC33E\h\p33Exxxx.h
que, al igual que xc.h, no es más que #ifdefs y #includes, solo para esa familia específica, por supuesto.