Merkwürdiger Code in MSP430-LEDS Beispiel

Gast #217465
Hallo,

ich beziehe mich auf das "leds"-Beispiel im examples-Ordner des
MSPGCC-Compilers. Dort steht:


int main(void) {
    int i;
    int o = 0;

    WDTCTL = WDTCTL_INIT;               //Init watchdog timer

    P3OUT  = P1OUT_INIT;                //Init output data of port1

    P3SEL  = P1SEL_INIT;                //Select port or module
-function on port1

    P3DIR  = P1DIR_INIT;                //Init port direction register
of port1


    while (1) {                         //main loop, never ends...
        for (i=0; i<8; i++, o++) {
            P3OUT = (1<<i) | (0x80>>(o&7));
            delay(0x4fff);
        }
    }
}
----

Im Ausdruck "P3OUT = (1<<i) | (0x80>>(o&7));" ist das (o&7) doch
vollkommen überflüssig, oder? Weil o und o&7 doch vollkommen gleich
sind, solange o < 8...
Verstehe ich nicht, wer kann helfen?

Danke und Gruß
Stephan
Gast #217467
Hi,

da liegt der Hund begraben, du hast natürlich recht. Und ich denke mal
das o bei 255 überläuft und wieder bei 0 anfängt, stimmts?

Gruß Stephan
Gast #217469
Das o wird ständig inkrementiert, während das i nach dem Wert 7 wieder
den Wert 0 erhält.
Da int in ANSI-C mindestens 16 Bit hat, läuft o erst nach Stunden über.

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.