Holaaa!!, como dije antes, resolvi el problema pero me he dado cuenta (mirando el datasheet) que en algunos pines de algunos puertos, que no son definidos como analógicos, sino digitales y ttl, no haria falta configurar ningun registro (tipo ADCON1) para configurarlos como entrada .Solo bastaria poner la sentencia TRISDbits.TRISD1= 1 (por ejemplo).
He probado a realizar eso con el siguiente codigo :
//Para pic18f4550
TRISDbits.TRISD7=1;//Definimos D7 como entrada (Ojoo en el pic18f4550 este pin no es analogico)!!
TRISCbits.TRISC6=0;//Definimos como salida, para testear en que rama se introduce.
while(1)
{
if(PORTDbits.RD7 == 0)//valor 0 en RD7
PORTCbits.RC6 =0;//PARA TESTEO;
if(PORTDbits.RD7 ==1)//Valor 1 (5v) en Rd7
PORTCbits.RC6 =1;//PARA TESTEO;
}
Sin embargo , no obtengo el comportamiento esperado. y cuando pongo 5v en RD7, RC6 vale 1, pero cuando los quito sigue Rc6 valiendo 1 ( cuando deberia valer 0)
Alguien sabe que se puede hacer para que funcione esto en los pines no definidos como analogicos ( ya que en los definidos como analogicos , he comprobado que esto funciona correctamente siempre que se configure bien el ADCON1 (Ver datasheet).
Yo creo que esto puede hacerse correctamente en estos pines , ya que en el datasheet pone que si pones el TRis = 1 debe poner ser definido como entrada (input)
Saludos y muchas gracias!