Forum: Mikrocontroller und Digitale Elektronik Blinklicht 2313 in Assembeler (Anfänger)


von Ingo Stange (Gast)


Lesenswert?

Hallo,

ich fange gerade an mit µC Programmierung in Assembler.
Auf einer Lochrasterplatine haber ich ein 2313 von atmel mit
einen 4 MHz Quarz und ein paar LED's an dem Port B aufgebaut.
Das ansteuernd der LED's bekomme ich schon hin.
Jetzt möchte ich aber das die LED's blinken.
So alle 0.5 Sec. an und dann wieder aus.

Kann mir da bitte jemand weiterhelfen.
Gruß Ingo

von Ralf Kellerbauer (Gast)


Lesenswert?

Jetzt beginnt die hohe Schule der Assembler-Programmierung ...

Variante 1 (einfach):
Mit Verzögerungsschleifen, also (zwei) geschachtelten Schleifen mit 8
Bit Registern (DEC, CMP, Branch). Code einfach mal in Codesammlung
suchen.

Variante 2 (genialer):
Man programmiert sich einen Timer (z.B. jede 2 ms) und zählt eben bis
250 (=500ms) bei jedem Timerüberlauf, sonst Warteschleife.

Variante 3 (die Lösung, oder ?):
Ebenso per Timer; nur man schickt die CPU nach IDLE, während der Zähler
läuft.


Variante 1 kommt noch aus der Computersteinzeit, geht aber.
Variante 2 wird auch in Hochsprachen gerne per 'Wait' realisiert.

Hier im Forum einfach mal stöbern ...
Mein Tip: Sich frühzeitig mit den Timern beschäftigen, sonst verrennt
man sich bei ähnlichen Aufgaben schnell in gigantischen Schleifen.
Variante 3 hat schon die Erweiterung nach Multitasking, da wirds dann
richtig elegant. Und spätestens mit Multitasking stören
Softwareschleifen ungemein (aber, man betrachte das Win95 Problem auf
AMD-K6 II >300 MHz, die Schleifengeschichte ist hartnäckig auch in den
Köpfen von 'Profis')

von Chris (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

mal ein kleines Beispiel. Das Blinken erfolgt einfach durch Hochzählen
eines Bytes innerhalb loop.

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.