Zitat Zitat von Exodus
Ich glaube ihr versteht mich nicht ganz!

Ich will von PA0 - PA7 dass eine LED mit 25ms Takt hin un herbewegt!
(fast) gleichzeitig soll von PB0 - PB4 immer eine LEd hin und herbewegt werden mit 50ms.
Quasi ein Lauflicht?:
+------+
-+----+-
--+--+--
---++---
--+--+--
-+----+-
+------+
Stellt den Zeitlichen verlaufvon PortA dar. (+) = LED AN! (-) = LED AUS!

Wo liegt das Problem?
Hier brauchst du sogar nur eine Variable die vom Timer gezählt wird!

UND SIE MACHEN ES SORAG SO GUT WIE GLEICHZEITIG.. Ich denke die 3 µC-Zyklen die machen die Suppe nicht salzig!!!

ALSO:

Nochmal dein Vorhaben:
Takt0: +------+
Takt1: -+----+-
Takt2: --+--+--
Takt3: ---++---
Takt4: --+--+--
Takt5: -+----+-
Und dann beginnt das Spiel wieder von vorne!!!

Also machen wir uns eine Variable TAKT!
Die Variable TAKT soll von 0 bis 5 hochgezählt werden.
Anstatt dann weiter auf 6 gezählt zu werden, soll sie auf 0 zurückgestellt werden. Und der Vorgang beginnt von neu!

Also machen wir das SO: Wir brauchen einen Timerinterrupt!
Der Timer wird so eingestellt, dass er den Interrupt alle 25ms ausführt!

Timerinterrupt{
WENN TAKT KLEINER 5 IST,
DANN ZÄHLE TAKT UM 1 HOCH
ANSONSTEN SETZE TAKT AUF 0.
}



IM HAUPTPROGRAMM WIRD TAKT UNTERSUCHT!

WENN TAKT GLEICH 0, DANN PORTA = 0b10000001
WENN TAKT GLEICH 1, DANN PORTA = 0b01000010
WENN TAKT GLEICH 2, DANN PORTA = 0b00100100
WENN TAKT GLEICH 3, DANN PORTA = 0b00011000
WENN TAKT GLEICH 4, DANN PORTA = 0b00100100
WENN TAKT GLEICH 5, DANN PORTA = 0b01000010



Ich denke sowas ist wirklich nicht schwierig zu realisieren....