Otra técnica usual es utilizar macros. Todo el código que se diferencia debido al tipo de PIC lo colocas en una macro que contiene los defines para cada uno de los PIC.
Luego en el programa principal llamas a la macro, que se encarga de traducir el código necesario dependiendo del tipo de PIC, de la frecuencia del reloj o de cualquier otro cambio de hardware o configuración.
Así el código queda mucho más limpio y comprensible. Las macros son un poco más complejas de entender, pero una vez escritas casi no se tocan. serían el equivalente de una 'librería'.
Esto se utiliza mucho por ejemplo con las macros para temporización que dependen de la frecuencia de reloj:
DELAY_MILLISECONDS(100)
Dependiendo de la frecuencia de reloj se convertirá en un código u otro para que al final todos los micros terminen esperando 100 milisegundos, independientemente de los cambios de su frecuencia de reloj. Por supuesto hay que definir en una línea anterior la frecuencia del reloj del micro.
Bueno, no quiero marearte demasiado. Si los defines solucionan tu problema y no necesitas más, entonces estupendo.
Solo quiero comentarte las demás técnicas para que puedas echarles un vistazo por si algún día las necesitas. Si las aprendes, el esfuerzo merece la pena porque una vez que las conozcas las utilizarás todas.
Un saludo.