TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Fer_TACA en 10 de Julio de 2022, 07:18:16
-
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.
-
Me respondo a mi mismo.
tenia mal escrita la linea de lectura del puerto B.
La coloque como: int entradas=input_B();
y ya me comprueba el estado del bit 0.
¡¡¡ Cosas de novato!!!!
Ahora a seguir comprobando el resto de los bits.
F.