Timer in ms - LED an bei voller Sec

Gast #1048195
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 ...
Gast
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
Gast
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
 }
Gast
>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?
Gast
>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...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.