2016-04-21 11 views
1

Ich muss den Code in diesem Bild ändern, so dass die LED, die ich an Bit 7 von PORT D angeschlossen habe, nur blinkt, wenn beide Schalter eingeschaltet sind. Ich habe einen Schalter, der auch an Bit 5 von PORT D angeschlossen ist. Dies ist, wo die On-Board-LED für mein Arduino ist. Ich bin total festgefahren. AVR C ProgramÄndern Sie das AVR C-Programm

+1

die Frage a etwas verwirrend ... Sie haben nicht erklärt, was mit Port b verbunden ist, und Sie scheinen zu implizieren, dass Sie 2 Schalter haben ... aber erwähnen Sie nur die 1 verbunden mit Bit 5 von PORT D –

+0

auch Sie scheinen alle Bits gesetzt haben von PORT B ​​zu Ausgängen, sind das nur mehr LEDs? –

+0

Ändern Sie 'if (x & 0b00010000)' (nur Pin 4) in 'if (x & 0b00010000 && x & 0b0010000)' (Pins 4 und 5 beide an). – UncleO

Antwort

0

Ich nehme an, Ihre LED auf D.7 ist und schalten Sie (low-aktiv) D.4 und D.5 (ich weiß nicht, warum PORT B ​​auf dem Code erwähnt.

unsigned char x; 
int main(void) 
DDRD = 0b10000000; 
PORTD = 0b00110000; //activate internal pull just in case 
x=PIND; 
x&=0b00110000; // just in case (again) 
if (x&0b00110000) 
    { 
    PORTD = 0b11000000; //blinks 
    _delay_ms (500); 
    PORTD = 0b00000000; //blinks 
    _delay_ms (500); 
    } 
}