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.
Grüße,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; }
Bernhard
EDIT:
Wie sehen denn die Taster aus? Wie viele Anschlüsse haben die?







Zitieren

Lesezeichen