PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verzögerung



21.06.2004, 10:14
Hallo,

Wie bringe ich meinen AVR dazu, eine bestimmte Zeitspanne zu warten?
(So wie der Pause-Befehl in C-Control Basic)
Ich programmiere in Assembler für einen ATMega8.

Bitte helft mir - wäre auch für eine Code-Beispiel sehr Dankbar!

AlexAtRobo
21.06.2004, 11:18
wenn du nichts anders tun willst einfach eine Schleife.

ldi r16, 10
ldi r17, 255
loop1:
dec r17
brne loop1
dec r16
brne loop1

macht 10x255 pause, aufpassen, dec frisst einen Takt, brne 1 oder 2 Takte je nachdem ob er springt oder nicht.
Wenn du nur kurz warten willst, reicht auch mal ein oder mehrere nops

Wenn du inzwischen was anderes tun willst, mußt du einen Timer setzen und dann in der interruptroutine darauf reagieren.

lg
Alex

21.06.2004, 19:46
Danke Alex!

Ganz versteh ich den Code nicht.Was genau macht der brne-Befehl?

DerInder
21.06.2004, 19:51
brne?
branch if not equal = verzweige falls nicht gleich (rtfm)

google mal nach avrdelay ein nettes progrämmchen mit dem man sich beliebig lange verzögerungsschleifen produzieren kann

21.06.2004, 20:09
Danke!

Das Prog is geil!
Werde es gleich mal testen!

[/quote]