Forum: Mikrocontroller und Digitale Elektronik Zähler zählt nicht wenn Startwert zu klein Wie kann das sein!?


von Max M (Gast)


Lesenswert?

Hallo, kann mir wer erklären, warum die angeschlossene LED mal blinkt 
und mal nicht?
Irgendwie scheinen der Vergleich mit 0xff und ein Resetwert < 256 nicht 
zu funktionieren! Aber warum?
Kann das mal jemand bei sich testen? Mit dem Tiny85 bekomme ich diese 
seltsamen Ergebnisse..

1
int main(void){
2
  DDRB = 0xff;
3
  static uint16_t cnt = 0;
4
5
  while(1){
6
    //if(cnt++==0xff){ PORTB = ~PORTB; cnt = 255u; }  // geht nicht
7
    if(cnt++==0xfe){ PORTB = ~PORTB; cnt = 255u; }    // geht
8
    //if(cnt++==0xff){ PORTB = ~PORTB; cnt = 256u; }  // geht
9
10
    //if(!(cnt++)){ PORTB = ~PORTB; cnt = 255u; }    // geht
11
    //if(cnt++==0){ PORTB = ~PORTB; cnt = 255u; }    // geht
12
13
    uint8_t i = 63;
14
    while(i--);
15
  }
16
17
  return 0;
18
}

Beitrag #5423547 wurde vom Autor gelöscht.
Beitrag #5423552 wurde vom Autor gelöscht.
von Max M (Gast)


Lesenswert?

Ach ich Trottel!... Mal vom Schlauch rutner gehen, etwas anderes machen, 
dann wiederkommen um ihn zu entknoten..

D
a
s

t
u
t

w
e
h
!

von Dieter F. (Gast)


Lesenswert?

Google mal nach "Wahrheitstabelle" und mach Dir eine :-)

von Stefan F. (Gast)


Lesenswert?

> if(cnt++==0xff){ PORTB = ~PORTB; cnt = 255u; }

Das führt zu einer Endlosschleife. Wenn cnt den Wert 0xff (=255) hat, 
wird cnt erhöht und dann wieder auf 255 gesetzt.

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
Noch kein Account? Hier anmelden.