PIC24F LED Ansteuerung

OP #3132353
Lesenswert?

Hallo!

Auf einem Explorer 16 Development Board unter Verwendung von dem 
PIC24FJ128GA010 musste ich die Knight Rider LED Schleife nachbauen, das 
habe ich auch ohne Probleme geschafft. Jedoch wollte ich ein paar 
weitere Muster ausprobieren. Es sind 8 LEDs und ich wollte, dass die 
Lichtkette an den beiden Enden startet und sich immer wieder kreuzt, 
dabei bin ich auf ein Problem gestoßen, was ich leider nicht lösen kann. 
Im Anhang habe ich den Quellcode von dem Knight Rider hinzugefügt. Ich 
habe ihn leicht verändert, dabei ist folgendes rausgekommen:
1
while(1) {               
2

3
    for(i=0;i<7;i++) {  
4
        x = x << 1;
5
        y = y >> 1;
6
        LATA = x;
7
        LATA = y;
8
        delay();
9
        }
10

11
    for(i=7;i<0;i--) {  
12
        x = x >> 1;
13
        y = y << 1;
14
        LATA = x;
15
        LATA = y;
16
        delay();
17
        }
18
    }

Dabei sind x = 0x01 und y = 0x80, bevor das Programm in die erste 
Schleife reinkommt. Ich kann es leider nicht hinkriegen, 2 LEDs 
gleichzeitig leuchten zu lassen und es gibt anscheinend ein 
Überlauffehler, jedoch kann ich den Grund nicht finden. Kann mir jmd 
weiterhelfen? Danke

MfG Konstantin
Angehängte Dateien:
OP #3132392
Lesenswert?

Danke, Dominic! So hat es prima geklappt, aber es bleibt ein 
überlauffehler(nehme ich an), das Program läuft nur 1 mal hin und her. 
Ich habe es mit einem schlechten Schlechten Programmierstil gelöst:
1
while(1) {
2
    int x = 0x01,y = 0x80,i;
3
    LATA = x | y;
4
    delay();
5

6
    for(i=0;i<7;i++) {  
7
        x = x << 1;
8
        y = y >> 1;
9
        LATA = x | y;
10
        delay();
11
    }
12

13
    for(i=7;i<0;i--) {  
14
        x = x >> 1;
15
        y = y << 1;
16
        LATA = x | y;
17
         delay();
18
    }
19
}

Der Idee nach, sollten die Bits immer weiter verschoben werden. Also x: 
0x01, 0x02, 0x04 etc. und y 0x80, 0x40, 0x20 etc... Am Ende soll doch 
x=0x80 sein und y=0x01, jedoch läuft das Programm nur 1 mal hin und 
zurück. Weiß jmd, woran es liegen könnte?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren