Pregunta: ¿Los vas a modificar?, ¿Como pensas usarlo?
NO en mucho tiempo (y sobra mucha Flash), o NO directamente: Entonces usa la flash.. Ya que es mucha cantidad.
struct Grados {
float lat;
float long;
};
const struct Grados[100] = {{6.10128833,-75.210038},{6.10128833,-75.210038},{6.10128833,-75.210038},......}
SI regularmente, o SI cada tanto:Si los datos cambian, entonces vas a necesitar una EEPROM externa para un PIC.
Si usas un float de 32bits que creo que es lo que usa CCS, tenes que cada uno de los numeros va a ocupar 4 bytes, es decir 8bytes por cada par lat/long, para 100 numeros son 800 bytes a guardar. Los unicos de 8bits que conozco con mas de 512Kb son los ATmega (hasta 4K) sino usas una EEPROM externa como te dije.
¿Los quiero como numeros o como letras?Existe la posibilidad tambien de guardarlo como char ( en ASCII), todo depende para que los usas, los cuales son 11 bytes por cada dato, 22 bytes para un par, y 2.2Kb para tener los 100 datos. Pero eso te permitiria no tener que lidiar con float para pasarlo a texto, o si debes enviarlo por la UART o mostrarlo en un LCD, lo tenes directo, solo tenes que leerlo y usarlo. No perdes precision, y el costo es un poco mas de espacio en una EEPROM, que la diferencia de tamaños no es grande. Dependiendo que vayas a hacer, creo que es una de las mejores opciones.
En la FLASH tambien podrias guardar los datos como char.
PD: Vas a tener error por usar floats ejemplo:
Para 6.10128833, el valor que vas a tener es de: 6.101288318634033203125
Y para -75.210038, el valor guardado es de: -75.2100372314453125
En caso de querer usar float, en el manual de CCS hay un codigo de como hacer para almacenar esos float dentro de la memoria EEPROM