LED mit Taster Ein / Aus schalten

OP #3599488
Lesenswert?

Hallo Freunde,

abgesehen vom Entprellen... Möchte ich wenn ich meine Taste drücke 
(INT0, dort springt er auch rein) meine LED mit dem ersten Tastendruck 
EINschalten & mit dem zweiten AUSschalten... Ich bin gerade durch den 
Wind... Wieso klappt das nicht ?
1
#define alle_AN      PORTB |= (0b00001111)
2
#define alle_AUS    PORTB &= ~(0b00001111)
3

4
ISR (INT0_vect)
5
{
6
  //INT0_DISABLE;
7
  
8
  if (alle_AUS)
9
  {
10
    alle_AN;  
11
  }
12
    else  
13
  {
14
    alle_AUS;
15
  }
16
}
#3599574
Lesenswert?

Hallo Jan,

besser nicht nur Code-Schnippsel posten, sondern alles, ggf. als Anhang.

Denn jetzt kommt die Frage: Hast Du den Port zu Beginn auch als Ausgang 
deklariert mit
1
  DDRB |= 0b00001111;

Ansonsten klappt das nicht mit dem
1
  if (alle_AUS)

denn wenn zu Beginn alles aus ist, dann erhälst Du
1
  if (PORTB &= ~0b00001111)

d.h. wird hier in der if-Bedingung bereits eine Zuweisung vorgenommen 
und sie danach ausgewertet, also PORTB auf 0b00000000 gesetzt, danach 
stellt das IF fest, dass der Ergebnis wert "0" ist und nimmt den 
"else"-Zweig.
Der wiederum setzt alle Pins auf 0.
Gast #3599697
Lesenswert?

kopfkratz
Rhetorische Fragen zum 1 April hmmm, sind denn die "NSA Witze" schon 
ausgegangen ?
Was schreibst Du denn als erstes in Deinem Post ?
Achja und wie ist denn so bool deklariert in C ?
Und welche Fehler wirft eigentlich Dein Compiler so aus ?
Da hinten ein dreiköpfiger Affe !!!!!111!!1ELF!!!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren