Mira te cuento como yo lo plantearía, a falta de comprobación evidentemente:
1º Después de los bloques de inicializar puertos, timers etc. Leería los valores de la EEPROM.
2º En una posición de la memoria tendría guardado, en un registro creado previamente un valor. Por ejemplo registro "estado_EEPROM"
3º Comprobaría el valor de la posición de memoria del punto 2º. Por ejemplo si su valor fuese 0.
4º En caso afirmativo, seguiría con el programa tal cual tienes planteado, asignado unos valores iniciales y guardándolos en la EEPROM. Evidentemente, además de tus valores pondría =1 el valor del registro creado en el punto 2º.
5º Si el resultado de la comprobación del punto 3, ya no fuese 0, significaría que ya previamente se habrían inicializado unos valores iniciales y por tanto desde este punto del valor de "estado_EEPROM" pasaría directamente al punto 5º. Por tanto no asignaría ningún valor inicial y directamente pasaría al resto del programa.
6º Seguiría con todo el proceso de tu programa.
Voy a ver si puedo ponerte de forma resumida un ejemplo en un fichero adjunto. En el también te pondría como seria el uso de las etiquetas.
F.