El micro que estas usando no lo he usado nunca, pero puedo darte algunas pistas que pueden ser utiles en la busqueda del error.
1.- Supongo que no estras haciendo la grabacion con bootloader, de ser asi deberias a/adir una linea al principio con
Define LOADER_USED 1
2.- Desconozco el micro pero al igual que en el 16F877 para usar el puerto A como digital hay que poner un valor en ADCON. Deberias comprobar si el puerto D tiene alguna funcion que se pueda conmutar de estado.
3.- Los fusibles de programacion: el oscilador, el MCLR, etc debes ajustarlos bien.
4.- Comprueba que se graba bien con otro ejecutable que tengas que funcione, por si esta fallando el hard.
Saludos
Ricky