el LED se ilumina en el puerto bajo ¿está configurado en 0?

0

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.

    
pregunta user1788092

1 respuesta

1

Después de leer los comentarios e investigar un poco más sobre los "registros de recuperación", he llegado a comprender que mi imagen mental de los registros de "recuperación" era incorrecta. Fundamentalmente, cuando se usa la configuración de extracción, el interruptor "presionar" provoca un 0 en el pin. Cuando el interruptor está abierto, causa un 1 en el pin. Pensé que era al revés, de ahí la confusión.

Gracias por toda la ayuda y las sugerencias.

    
respondido por el user1788092

Lea otras preguntas en las etiquetas