Hallo Ezalo,
du hast geschrieben, der Taster zieht auf Masse. Deine If-Abfrage prüft jedoch, ob am Eingang "1" anliegt, d.h. wenn der Taster NICHT gedrückt ist.
Mit einem Ausrufezeichen vor der if-Bedingung wird das umgedreht.
Oder du lässt den Inhalt der if-Bedingung gleich und tauschst die LED-An und LED-Aus-Befehle.
Code:
int main(void){
DDRA |= 0b00000001; //PA0 als Ausgang definieren
PORTA &= ~(1<<PA0); //PA0 auf Low schalten (LED aus)
PORTA &= ~(1<<PA1); //PA1 auf High setzen
while(1){
if(!(PINA&(1<<PIN1))){ //Hier vorne das Ausrufezeichen beachten! Wenn Taste gedrückt...
PORTA |= (1<<PA0); //... schalte LED ein
}
else{
PORTA &= ~(1<<PA0);
}
}
while(1); //das kannst du noch weglassen, hier kommt der Atmega nie hin!
return 0;
}
Grüße,
Bernhard
EDIT:
Wie sehen denn die Taster aus? Wie viele Anschlüsse haben die?
Lesezeichen