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