Fehler in einer if-Bedingung

Gast #164144
Hallo,

Ich habe einen PIC16F877 mit 20MHz und ich benutze CC5x.

Ich hab zwei LED's die abwechselnd blinken. Am Anfang mit 1ms Abstand
und dann werden die Abstände immer verdoppelt bis 1024ms. Dann sollte
er eigentlich die Abstände bis 1ms wieder halbieren, um dann wieder von
vorn anzufangen. Das tut er aber nicht! Ich hab schon eine Kontroll-LED
eingebaut die angeht wenn er anfängt runter zu zählen.

Komisch ist, dass die Kontroll-LED zwar angeht er, aber das Blinken
nicht wieder schneller wird. Das kann ich mir nicht erklären, da die
Kontroll-LED erst auf high geht, wenn er anfängt zu teilen.

Dazu bitte unbedingt den angehängten Sourcecode ansehen!!!

Danke für die Hilfe!
Angehängte Dateien:
Gast
Dann geh Deinen Spaß doch einmal Schritt für Schritt durch:

Wenn Du bei 1024 bist, setzt Du Dein Flag, daß es wieder abwärts gehen
soll, aber den Wert läßt Du auf 1024, damit wird der Teil, wo
runtergezählt wird, nie mehr erreicht.
Gast
Ja, aber warum so umständlich?

if (up_down)
 {
  time <<= 1;
  if (time == 1)
    up_down = 0;
 }
else
 {
  time >>= 1;
  if (time == 1024)
    up_down = 1;
 }

Wenn man so programmiert statt mit solchen Bedingungskaskaden,
1) kann es nicht passieren, daß man eine Zustandskombination vergißt
2) kann man auf einen Blick verstehen, was da passiert
3) wird der Code kleiner

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.