Problem mit Funktion um Text blinken zu lassen

Gast #1116609
Hi,

vielleicht kann mir jemand schnell auf die Sprünge helfen. Ich hab ein 
Ausbildungssystem, welches mir über einen Software-Kernel bereits einige 
Funktionen zur Verfügung stellt, wie z.B. Display-Ansteuerung. Ausserdem 
wird ein Flag im 0,5s-Takt getoggelt.

Jetzt würde ich gern eine Funktion schreiben, der ich einen Text 
übergeben kann, welcher wiederum blinkt. Soweit zur Problemstellung.

Mein bisheriger (Pseudo-)Code:
1
void BLINK_TEXT(uchar * Text, uchar Pos) {
2
  static bit TxtFlash;
3

4
  while(*Text != 0x00) {
5
    if(TxtFlash != btToggle) {
6
      TxtFlash = btToggle;
7
      if(btToggle == 0) {
8
        LCD_PUTCHAR(" ", Pos);
9
      }
10
      else {
11
        LCD_PUTCHAR(*Text, Pos);
12
      }
13
      Text++;
14
      Pos++;
15
    }
16
  }
17
}

Ein Ausgabe erfolgt nur, wenn festgestellt wurde, dass sich der Zustand 
des btToggle-Flags geändert hat. In Abhängigkeit des Flags wird entweder 
der Text ausgegeben, oder eben Leerzeichen.
Soweit, so gut.

Ein Problem gibts, wenn ich mehrere unabhängige blinkende Texte ausgeben 
will, da ja bereits die Angleichung von TxtFlash an btToggle erfolgt 
ist.

Das einzige (sinnvolle) was mir momentan einfällt, ist noch ein 
zusätzlicher Parameter, der das angleichen unterbindet, aber vielleicht 
hat noch jemand ne Idee, wie man das lösen kann?

Ralf
Gast #1116633
Hi Holger,

> Mehrere btToggle verwenden die unabhängig voneinander sind.
Ja, die Idee kam mir auch schon, hab ich aber Bedenken, wenn ich 
einigermaßen platzsparend programmieren will, müsste ich ja vorher immer 
wissen, wieviele ich brauche (andersrum gesehen ist das aber ja auch ein 
Weg, wie's die Profis machen, denke ich).

Ralf

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.