Hallo, ich habe in Bascom einen Timer laufen, der mir in jeder ms eine Variable hochzählt.(diese Springt bei 65000 wieder auf 0 und geht dort weiter) Jetzt möchte ich das eine Led angeht, sobald der ms Zähler ne 1000er Marke erreicht hat. Also bei 1000, 2000, 3000, usw. Wie kann ich das machen, ausser über eine ewig lange If Then Anweisung...
Anfänger :-) wrote: > Hallo, > > ich habe in Bascom einen Timer laufen, der mir in jeder ms eine Variable > hochzählt.(diese Springt bei 65000 wieder auf 0 und geht dort weiter) > > > Jetzt möchte ich das eine Led angeht, sobald der ms Zähler ne 1000er > Marke erreicht hat. > > Also bei 1000, 2000, 3000, usw. > > > Wie kann ich das machen, ausser über eine ewig lange If Then > Anweisung...
1 | static unsigned char zaehler_variable = 0; |
2 | |
3 | zaehler_variable += 1; |
4 | zaehler_variable = zaehler_variable % 1000; |
5 | /* Modulo 1000 --> wenn zaehler variable 1000 erreicht wird durch modulo 1000 der wert wieder auf 0 gesetzt*/
|
6 | |
7 | if (zaehler_variable == 0){ |
8 | /* fuehre deinen Code aus */
|
9 | }
|
achsooo BASCOM... wie man das in bascom realisiert weiß ich leider nicht! Das war c ...
1 | zaehler_variable += 1; |
2 | zaehler_variable = zaehler_variable % 1000; |
3 | if (zaehler_variable == 0) |
4 | {
|
5 | ...
|
Das ist natürlich sehr gut für die Auslastung. Sinnvoller wäre das:
1 | if ( ++zaehler_variable == 1000 ) |
2 | {
|
3 | zaehler_variable = 0; |
4 | ...
|
Aber in Bascom musst du das selbst übersetzen
Noch weniger rechenintensiv, da nicht bei jedem Durchlauf auf == 1000 geprüft werden muss:
1 | if (zaehler_variable) zaehler_variable--; |
2 | else { |
3 | zaehler_variable = 1000; |
4 | ... DEIN CODE |
5 | }
|
>Noch weniger rechenintensiv, da nicht bei jedem Durchlauf auf == 1000 >geprüft werden muss: Hm.. Wo ist der Unterschied, ob ich auf Null oder 1000 prüfe?
Auf 0 prüfen geht wesentlich schneller als auf 1000 (als 16-Bit-Zahl). Funktionell geht natürlich beides.
>Auf 0 prüfen geht wesentlich schneller als auf 1000 (als 16-Bit-Zahl)
Wesentlich? Ich glaube, du sparst 2 asm-Befehle...
Dafür ist bei dir ein else dabei...
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.