Werbung
Dann muss ichs nochmal probieren, denn das #define hat bei mir nix gebracht, habs wohl nicht richtig gemachtZitat von fluchtpunkt
![]()
PS:
Die Klammer fehlt (fett markiert)
while (1)
{
if (PINB && (1<<PB3))
{
if (++button_counter > DEBOUNCE_TIME )
{
PORTB ^= (1<<PB4);
}
}
else {
button_counter = 0;
}
}
Oder ist das hier nicht notwendig?
Andreas
wenn nur ein einziger Befehl nach if oder else ausgefuehrt werden soll braucht man keine Klammer. Aber setz die ruhig auch dann, ist imho ne schlechte Angewohnheit und Faulheit die wegzulassen.
Also folgender Code wurde von mir gerade erfolgreich kompiliert:
Code:#include <avr/io.h> #define DEBOUNCE_TIME 2 int button_counter; int main(void) { while (1) { if (PINB && (1<<PB3)) { if (++button_counter > DEBOUNCE_TIME ) { PORTB ^= (1<<PB4); } } else button_counter = 0; } return 0; }
man will sich ja schliesslich an den C-Standard halten und keine Warnungen wie:
bla.c:8: warning: return type defaults to `int'
bla.c:8: warning: function declaration isn't a prototype
Zwei Warnungen weniger und ordentlicher Stil sollten einem die acht zusaetzlichen Zeichen wert sein![]()
Was int und void an der Stelle bedeutet ist aber klar, oder?
dann am besten mal C von A bis Z lesen
Da ist noch ein Schnatzer drin... du meinst bestimmt "&" in Vergleich, und nicht "&&"!
Disclaimer: none. Sue me.
Lesezeichen