Forum: Mikrocontroller und Digitale Elektronik Blinkschaltung mit Atmel


von Dominik F. (dominik1202)


Lesenswert?

Hallo,

ich würde gerne die LED LED0 im 500ms-Frequenz blinken lassen.

Wie würde dazu der passende Assembler-Code aussehen?
Finde keine passenden Zeitfunktionen.

Danke im Vorraus!

Dominik

von Peter D. (peda)


Lesenswert?

Welcher Atmel, AT89C51ED2 ?

LED0 hat kein MC, er hat nur Portpins, an die man LEDs anschließen 
könnte.

Dann hat er noch Timer, mit denen man CPU-Takte zählen lassen kann.

Oder man zählt in Schleifen mit den 8 Registern.

Wie weit man zählen muß für 500ms, hängt vom Quarz ab.


Peter

von Stefan Oberpeilsteiner (Gast)


Lesenswert?

Du kannst dir bei gegebener Taktfrequenz die anzahl an Befehlen während 
500ms ausrechnen und ebensoviele NOP Befehle einfügen ;-), oder du 
zählst zB in einer schleife ein register hoch und überprüfst wann es 
einen bestimmten wert erreicht hat (dazu musst du aber wissen wie lange 
ein Schleifendurchlauf dauert - geht zB mit Simulator oder du schaust 
dir an welcher Befehl wie viele Taktzyklen braucht), oder Möglichkeit #3 
du liest dich in die verwendung von Timer/Counter ein.

lg Stefan

PS: So weit meine erfahrungen - bin aber eher ein Anfänger

von Stefan Oberpeilsteiner (Gast)


Lesenswert?

Da war wohl einer schneller ;-)

von Dirk (Gast)


Lesenswert?

Eine Möglichkeit waere es es eine Variable zu erhoehen / verkleinern , 
diese abzufragen und dann bedingt zu springen.

Falls dein AVR mit einem 1MHz Takt arbeitet koenntest du auch 500k mal 
"nop" in deinen Code tippen.

Gruß,
Dirk

von Peter D. (peda)


Lesenswert?

Hier mal ein einfaches Programm, welches alle Pins togglen läßt:
1
start:
2
        djnz   p0, start
3
        djnz   p1, start
4
        djnz   p2, start
5
        djnz   p3, start
6
        jmp    start

P3.7 toggled dabei etwa jede Stunde bei 12MHz


Peter

von Metaller (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang findest Du meine Timer_Lib (Timer2/8Bit) ohne Interupt in ASM 
für einen 8MHz Takt. Für eine andere Clock mußt Du es halt anpassen.

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.