Forum: Mikrocontroller und Digitale Elektronik Timer verschluckt 1 Minute


von Kai B. (tekasiko)


Angehängte Dateien:

Lesenswert?

Hallo,

habe ein Timer Code angehängt, das Problem ist, das Mein Timmer immer 
zum
Stundenwechsel 1 Minute verschluckt.

Bsp.:

auf

02:01:01 folgt 01:59:59

müsste aber 02:00:59 heißen.

Ich habe die selbe code reihenfolge wie für die sekunden, bei den 
sekunden funktioniert es aber.

Weis jemand woran das liegt?

Code ist im Anhang

Vielen Dank

von Erich (Gast)


Lesenswert?

> auf
> 02:01:01 folgt 01:59:59
> müsste aber 02:00:59 heißen.


Leider ist beides falsch.
Denke doch selbst mal besser nach...

von Εrnst B. (ernst)


Lesenswert?

Kai Burghart schrieb:
> Weis jemand woran das liegt?

Hier:
1
      Minute = Minute - 1
2
      If Minute = 0 Then
3
         Minute = 59
4
         Stunde = Stunde - 1
5
6
      End If

Notfalls mal mit Papier und Bleistift den Sprung duchspielen.

Sekunden haben dasselbe Problem.

von Peter II (Gast)


Lesenswert?

ist doch klar

du lässt es ja gar nicht zu das die Minute 0 werden darf.

Minute = Minute - 1
If Minute = 0 Then
    Minute = 59
    Stunde = Stunde - 1

von Günter (Gast)


Lesenswert?

1
      Minute = Minute - 1
2
      If Minute = 0 Then
3
         Minute = 59

Überleg doch mal was hier passiert wenn wenn Minute==1 ist.
Erst wird es um 1 dekrementiert, dann ist Minute==0 und dann schlägt das 
If zu und setzt es Minute=59.

Wie wäre es mit
1
If Minute = 0 Then
2
    Minute = 59
3
Else
4
    Minute = Minute - 1
5
End If

von Kai B. (tekasiko)


Lesenswert?

Ja stimmt,

02:00:00

das heist, es werden jede Stunde eine Minute und jede Minte 1 Sekunde 
verschluckt.

wie kann ich das dann jetzt richtig stellen?

von Uhr (Gast)


Lesenswert?

Kai Burghart schrieb:
> wie kann ich das dann jetzt richtig stellen?

in dem du bei den ifs nicht auf 0 sondern auf -1 abfragst...

von Kai B. (tekasiko)


Lesenswert?

Hallo Uhr,

ja so funktioniert es,

aber ich verstehe die Logik dahinter nicht.

Wäre dir dankbar wnn du mir das kurz erklären könntest, will ja auch was 
lernen und nicht nur abschreiben.

Vielen Dank

von Kai B. (tekasiko)


Lesenswert?

Allen anderen auch vielen Dank für eure Mühe

von Εrnst B. (ernst)


Lesenswert?

Kai Burghart schrieb:
> aber ich verstehe die Logik dahinter nicht.

Die ist einfach:

Beim Rückwärtszählen kommt nach 01 eben 00 und nicht 59.

Du zählst auf 00 runter, aber überschreibst das 00 sofort mit 59.

oder, mit dem "-1":

auf einem runden Ziffernblatt sind 0 und 60 dasselbe, genau wie -1 und 
59, -2 und 58 usw.

von Karl H. (kbuchegg)


Lesenswert?

Kai Burghart schrieb:
> Hallo Uhr,
>
> ja so funktioniert es,
>
> aber ich verstehe die Logik dahinter nicht.
>
> Wäre dir dankbar wnn du mir das kurz erklären könntest

Nimm dir Papier und Bleistift.
Auf deinem Papier malst du dir Kästchen rauf, die deine Variablen 
repräsentieren. Innerhalb der Kästchen stehen die Werte.

Jetzt  nimmst du besagte problematische Uhrzeit an und gehst deinen Code 
durch. Du spielst Computer(!) der das Programm abarbeitet. Aber mach nur 
genau das, was auch im Programmtext steht. Nicht mehr, nicht weniger.
Wenn in deinem Programm eine Variable lesend bezug genommen wird, dann 
schaust du auf deinen Zettel, welcher Wert für diese Variable im 
Kästchen steht. Wenn in deinem Programm einer Variablen ein neuer Wert 
zugewiesen wird, dann machst du das, in dem du auf deinem Papier im 
richtigen Kästchen die bestehende Zahl ausradierst und statt dessen den 
ermittelten Wert reinschreibst.

> , will ja auch was
> lernen und nicht nur abschreiben.

Genau so lernst du deine eigenen Programme zu analysieren: Indem du dein 
Programm selber durchgehst und nachsiehst, was da eigentlich wirklich 
passiert.

Mit der Zeit werden deine Fähigkeiten besser werden und du brauchst 
Papier und Bleistift immer seltener.

von Kai B. (tekasiko)


Lesenswert?

@ Karl Heinz,

vielen dank für deinen Tip, hat mir wirklich sehr geholfen und ich habe 
die Logik nun verstanden.

Kann dir gar nicht sagen wie dankbar ich dir bin, es ist wirklich schön 
das geschriebene auch zu verstehen und mit eurer Hilfe so viel zu 
lernen.

Vielen Vielen Dank

auch an alle anderen die mich hier im Board sehr unterstützen.

:-)

Lg Kai

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.