Tengo una placa Arduino UNO con una ATMEGA328-PU y estoy tratando de controlar el LED en la salida 13 que está en el pin B5 del procesador.
Tengo un interruptor conectado en el puerto 7 de Arduino, que se encuentra en el pin D8 del procesador. Este es el programa que estoy ejecutando en el IDE de Arduino como este:
#include <util/delay.h>
void setup() {
DDRB = DDRB | 0xff;
DDRD = DDRD & 0x7f;
PORTD=PORTD | 0x80;
}
void loop() {
ReadSwitch();
}
void ReadSwitch()
{
PORTB= PORTB | 0xff;
_delay_ms(500);
if(PIND & 0x80)
{
PORTB=0x00;
}
else
{
PORTB= 0xff;
}
_delay_ms(500);
}
Mi pregunta es: cuando configuro el PORTB en todos los 0, enciende el LED, pero cuando lo configuro en el 1, apaga el LED. ¿Cómo es eso posible? ¿No debería apagarse el LED cuando el PORTB está configurado en 0? ¿Esto es normal o algo está roto en alguna parte?
Para un poco de historia: He estado programando .NET durante muchos años, pero nunca he escrito programas para los microprocesadores directamente. Así que soy realmente nuevo, si esta pregunta es inapropiada para este foro, reenvíeme al lugar correcto.