02.05.2013 Aufrufe

beginner_de

beginner_de

beginner_de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Avr-Asm-Tutorial S. 62<br />

;<br />

.equ fck = fc / 1000 ; Taktfrequenz in kHz<br />

;<br />

; Verzoegerungsroutine<br />

;<br />

Delay1ms: ; 1 ms Routine<br />

.equ c1ms = (1000*fck)/4000 - 1 ; Konstante fuer 1 ms<br />

ldi R25,HIGH(c1ms) ; la<strong>de</strong> Zaehler<br />

ldi R24,LOW(c1ms)<br />

rjmp <strong>de</strong>lay<br />

;<br />

Delay100ms: ; 100 ms Routine<br />

.equ c100ms = (100*fck)/4 - 1 ; Konstante fuer 100 ms<br />

ldi R25,HIGH(c100ms) ; la<strong>de</strong> Zaehler<br />

ldi R24,LOW(c100ms)<br />

rjmp <strong>de</strong>lay<br />

;<br />

; Verzoe<strong>de</strong>rungsschleife, erwartet Konstante in R25:R24<br />

;<br />

Delay:<br />

sbiw R24,1 ; herunter zaehlen<br />

brne Delay ; zaehle bis Null<br />

nop ; zusaetzliche Verzoegerung<br />

Hinweise: Die Konstanten c1ms und c100ms wer<strong>de</strong>n auf unterschiedliche Weise berechnet, um bei<br />

<strong>de</strong>r Ganzzahlen-Verarbeitung durch <strong>de</strong>n Assembler einerseits zu große Rundungsfehler und an<strong>de</strong>rerseits<br />

Überläufe zu vermei<strong>de</strong>n.<br />

Verlängerung!<br />

Mit folgen<strong>de</strong>m Trick können Sie wie<strong>de</strong>r etwas Verlängerung herausholen:<br />

.equ c1 = 0 ; 0 Takte, macht <strong>de</strong>r Assembler alleine<br />

ldi R25,HIGH(c1) ; 1 Takt<br />

ldi R24,LOW(c1) ; 1 Takt<br />

Loop: ; Schleifenbeginn<br />

nop ; tue nichts, 1 Takt<br />

nop ; tue nichts, 1 Takt<br />

nop ; tue nichts, 1 Takt<br />

nop ; tue nichts, 1 Takt<br />

nop ; tue nichts, 1 Takt<br />

nop ; tue nichts, 1 Takt<br />

sbiw R24 ; 2 Takte<br />

brne Loop ; 2 Takte wenn nicht Null, 1 Takt bei Null<br />

Je<strong>de</strong>r Schleifendurchlauf (bis auf <strong>de</strong>n letzten) braucht jetzt zehn Takte und es gelten folgen<strong>de</strong> Formeln:<br />

nc = 2 + 10*(c1 - 1) + 9 o<strong>de</strong>r nc = 10 * c1 + 1<br />

Maximal sind jetzt 655361 Takte Verzögerung möglich.<br />

10.4 Das Blinkprogramm<br />

Damit sind wir beim beliebten "Hello World" für AVRs: <strong>de</strong>r im Sekun<strong>de</strong>nrhytmus<br />

blinken<strong>de</strong>n LED an einem AVR-Port. Die Hardware, die es dazu<br />

braucht, ist beschei<strong>de</strong>n. Die Software steht da:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!