Lauflicht programmieren

OP #660912
Lesenswert?

Hallo,

also irgendwie steig ich nicht dahinter....

Ich würde gern ein Blinklich programmieren doch irgendwie sind meine 
Lichter immer beide an.

So sieht mein quellcode aus:

sbit led0=0x80;
sbit led1=0x81;
main (void)
{
unsigned int x,y;

for (y=0; y<100000;y++)
{
led0=0;
led1=1;
}

for (x=0; x<100000;x++)
{
led0=1;
led1=0;
}

}

Es sollte ja also immer von 0 bis gezählt werden und solange die LED 
einegschaltet sein. Wenn die For schleife beendet ist, gehts zur 
nächsten, bei der das gleiche nur mit anderer LED passiert. Es ist 
ausserdem immer eine LED ausgeschaltet.
Also sollten die LEDs Wechselweise hin und her springen.
Stattdessen bekomme ich beide Lampen eingeschaltet.
Auch bei utopisch hohen werten für die beiden Variablen kein 
unterschied.

Habt ihr einen Tip?
OP #660933
Lesenswert?

Aaah es funktioniert :)

Es lag am Datentyp und an der Zähllänger.

Ich habe nun einfach 2 For schleifen ineinander geschachtelt, sodass 
6500 bis 600 gezählt wird. Also insgesamt 4 For schleifen um abwechselnd 
leds zum leuchten zu bringen.

Nun muss ich nurnoch die Zählzeit anpassen um einen schönen Wechsel zu 
haben.


Danke für die Hilfe!
#660956
Lesenswert?

Oliver D. wrote:

> Nun muss ich nurnoch die Zählzeit anpassen um einen schönen Wechsel zu
> haben.

Man kann auch nen Timer nehmen, dann muß man nicht planlos rumprobieren, 
sondern kann alle Zeiten auf den Takt genau ausrechnen.


Peter

P.S.:
Genau dafür sind die Timer da.
#1637229
Lesenswert?

Thomas schrieb:
> braucht man dazu überhaupt einen Timer?
> Oder geht das auch ohne?

Sachen wir mal so:
Wenn das Ziel nur darin besteht ein paar LED zum blinken zu bringen, 
dann gehts auch ohne.

Übrigens: diese Zählschleifen sind meistens Murks. Wann immer möglich, 
wird der Optimizer des Compilers sein Pflicht tun und sie einfach 
rauswerfen :-)

Im WinAVR gibt es Wartefunktionen: _delay_ms( zeit )
Damit macht man Warteschleifen, wenn man denn unbedingt keinen Timer 
benutzen will.

Aber Hand aufs Herz: Wie oft hat man den Fall, dass ein µC wirklich nur 
ein paar LED blinken lassen soll und sonst nichts.

In allen anderen Fällen ist der Warteschleifenansatz meistens nicht zu 
gebrauchen.

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