fortlaufend zählen m. Ausgabe auf LCD (18F2550)

Gast #3974579
Lesenswert?
• ▲
▼
Hallo,

ich häng grad total an meinem Programm. hier geht´s darum die 
Sensorwerte von 5 Sensoren - hängen an folgendem PIC 18F2550, an den 
PINs 2, 3, 4, 5 & 7.
Werte einlesen geht ja mittlerweile schon - diese über RS232 auf LCD 
ausgeben - auch kein Problem...ABER nun kommt´s:
Am Display soll folgendes stehen:
Sensor "NR"
"Wert" Pa
(zweizeilig - da auch zweizeiliges Display)
"Sensor"; "Wert" u. "Pa" wird schon brav angezeigt - nur die 
"fortlaufende" Nummer, welche neben "Sensor" hingehört will einfach 
nicht richtig raus - entweder kommen da so zahlen wie 0, 2, 4, 8, 1 oder 
einfach nur "0"...
wer kann mir denn bitte kurz weiterhelfen? hab schon ´nen mächtigen 
Knoten im Gehirn... :-(
Gast #3974609
Lesenswert?
• ▲
▼
sry - hab´s vergessen - aber mittlerweile hat es sich bisschen gebessert 
- mittlerweile zählt er so:
0, 1, 2, 3, 4, 8

-> wie schaff ich nun diesen "8"er wegzu"programmieren"?

hier ein ausschnitt des codes:
1
...
2
  if (act_sensor_number<=3)
3
      act_sensor_number++;
4
      else {
5
        if (act_sensor_number==4)
6
        act_sensor_number=8;
7
        else
8
        act_sensor_number=0;
9
      }
Gast #3974632
Lesenswert?
• ▲
▼
Gugu Kathleen,

etwas mehr Code wäre schick, damit man auch weiß wie die Variablen 
definiert sind und so weiter...
Anstatt mit IF-Anweisung würde ich eventuell mal die CASE-Anweisung 
probieren.
Wenn

if (act_sensor_number==4)
        act_sensor_number=8;

nochmal etwas überdacht wird...
Lustig wäre wenn er Primzahlen ausspuckt, aber man kann ja nicht alles 
haben!

Gruß
dat
Beast
#3974642
Lesenswert?
• ▲
▼
Kathleen Z. schrieb:
> Stefan schrieb:
>> Naja du setzt ja deine act_sensor_number auf 8 falls
>> act_sensor_number==4.
>
> ah jo...hoppla...VIELEN DANK! - jetz is der Knoten auch weg...

Das wundert mich ehrlich gesagt nicht.
Denn deine Code-Formatierung ist, ganz ehrlich und frei gesagt, 
ziemliche Scheisse.

Dass du in
1
  if (act_sensor_number<=3)
2
      act_sensor_number++;
3
      else {
4
        if (act_sensor_number==4)
5
        act_sensor_number=8;
6
        else
7
        act_sensor_number=0;
8
      }

die Logik nicht mehr auf einen Blick erkennen kannst, verwundert nicht 
wirklich. Mit einer konsistenten Einrückung und ein paar Leerzeichen an 
strategischen 'Lese'-Punkten ...
1
  if (act_sensor_number <= 3)
2
    act_sensor_number++;
3

4
  else {
5
    if (act_sensor_number == 4)
6
      act_sensor_number = 8;
7
    else
8
      act_sensor_number = 0;
9
  }

sieht das alles gleich viel besser aus. und wenn man dann auch noch das 
else mit dem if zu einem 'else if' zusammenzieht
1
  if (act_sensor_number <= 3)
2
    act_sensor_number++;
3

4
  else if (act_sensor_number == 4)
5
    act_sensor_number = 8;
6

7
  else
8
    act_sensor_number = 0;

dann sieht man eigentlich das 'Problem' recht schnell.

Fazit: arbeite an deiner Code-Formatierung!
Dein Problem gehörte zu den Dingen, die nicht notwendig sind, wenn man 
seinen Code sauber hält.


Obwohl: Manchmal hat man wirklich Tomaten auf den Augen. Ist uns allen 
schon so gegangen.
Gast #3975891
Lesenswert?
• ▲
▼
danke für die Info - bin aber erst seit kurzem unter den 
C-Programmierern bzw. MUSS ich es machen um die Abendschule positiv 
abschließen zu können.

tdm DANKE für das Feedback und die Infos... ;-)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.