Antes de nada, aclarar que este es mi segundo proyecto en C, debido a que me he propuesto el ir aprendiendo poco a poco a programar en este lenguaje.
El problema que tengo es que no se si lo estoy realizando bien, seguro que hay algo ,al en el código.
La cuestión es el leer el estado de un puerto completo, asignarle una variable y después comprobar el estado de alguno de los bits de esa variable. Dependiendo de ello, pues encender un led o apagarle.
void main()
{
port_b_pullups (0xFF); //Utiliza las resistencias PULL UP internas del puerto B
set_tris_b(0b11111111); //Pongo el puerto B como entrada
set_tris_d(0b00000000); //Pongo el PuertoD como Salida
PORTD=(0b00000000); // Apago el puerto D
while(TRUE)
{
int entradas=input(PORTB);
delay_ms(200);
{
if (bit_test(entradas,0)==1)
{
output_high(PIN_D0);
}
else
{
output_low(PIN_D0);
delay_ms(400);
}
}
}
}
A la hora de probarlo o bien la salida se me queda siempre a 0 o bien siempre a =1 dependiendo de la comparación del IF.
Adjunto el código para ver si me echan una mano. Estoy utilizando el puerto B como entradas con las resistencias internas a pullup por lo que las entradas siempre estarán =1 y quiero detectar cuando pasen a 0.
Gracias de antemano
F.