Bin Anfänger in Sachen Microcontroller programmieren. Möchte wissen wie ich eine Und-Verknüpfung erstellen kann. Habe zwei Taster an PD0, PD1 und eine LED PB0. Möchte jetzt ein Programm schreiben, das mir die LED zum Leuchten bringt, wenn beide Taster gedrückt sind ansonsten soll es aus bleiben. Hier mal der Code den ich bis jetzt habe: #include<avr/io.h> int main(void) { int a=0; outp (0x01,DDRB);//LED outp (0x00,DDRD);//TASTER for(;;) { if (bit_is_set(PIND, PIND0)) //T1 gedrückt wird { if (bit_is_set(PIND, PIND0)) //T2 gedrückt wird sbi (PortB, 0); } cbi (PORTB, 0); //cbi aus } } Vielleicht erkennt ja jemand meinen Fehler.
Zwei mal PIND0 statt einmal PIND0 und einmal PIND1 verwendet... Gruß, Patrick...
Hi #include<avr/io.h> int main(void) { //int a=0; DDRB = 0x01; //outp (0x01,DDRB);//LED DDRD = 0; //outp (0x00,DDRD);//TASTER for(;;) { if((PIND&0x03)==0x03) PORTB|=1; else PORTB&=(unsigned char)~1; } } Alles mit positiver Logik (Tastendruck gleich 1 und LED an gleich 1) Matthias
Hi! Ich weiß jetzt nicht genau, ob die bit_is_set Abfragen so richitg sind, aber von der Logik her brauchst du die "if" nicht verschachteln. C kennt das logische und "&&". Damit sähe der Code so aus: #include<avr/io.h> int main(void) { int a=0; outp (0x01,DDRB);//LED outp (0x00,DDRD);//TASTER for(;;) { if (bit_is_set(PIND, PIND0) && bit_is_set(PIND, PIND1)) { sbi (PortB, 0); } else { cbi (PORTB, 0); //cbi aus } } MfG Sebastian
Mit diesem Quellcode funktioniert es immer noch nicht. Das Lämpchen geht immer noch an, wenn man nur einnen der Taster drückt. Ich weis jetzt wirklich nicht mehr weiter wie das funktionieren soll. #include<avr/io.h> int main(void) { outp (0x01,DDRB);//LED outp (0x00,DDRD);//TASTER for(;;) { if (bit_is_set(PIND, PIND1) && bit_is_set(PIND, PIND0)) { sbi (PORTB, 0); } else { cbi (PORTB, 0); } } }
Hi was tut denn an meinem Code nicht? Sind die Tasten evtl. invertiert angeschlossen? Dann kannst du bei meinem Code einfach "==0x03" durch "==0x00" ersetzen. Matthias
Wie sind die Taster angeschlossen? Vielleicht "floaten" die Eingaenge. Externe Pulldowns/-ups vorhanden? Interne Pullups fuer die Tasten-Pins aktivieren?
>> Habe zwei Taster an PD0, PD1 und eine LED PB0
Das ist jeweils ein "Beinchen" der Bauteile, wo gehen die anderen
Kontakte hin?
grüsse leo9
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.