beginner_de
beginner_de
beginner_de
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Avr-Asm-Tutorial S. 60<br />
Jetzt braucht je<strong>de</strong>r Schleifendurchlauf (bis auf <strong>de</strong>n letzten) acht Takte und es gelten folgen<strong>de</strong> Formeln:<br />
nc = 1 + 8*(c1 - 1) + 7 o<strong>de</strong>r nc = 8 * c1 Das verlängert die 8-Bit-Registerschleife immerhin<br />
auf 256 * 8 = 2048 Takte o<strong>de</strong>r - bei 1,2 MHz - auf ganze 1,7 ms.<br />
10.2 Das Summprogramm<br />
.inclu<strong>de</strong> "tn13<strong>de</strong>f.inc" ; für einen ATtiny13<br />
.equ c1 = 0 ; Bestimmt die Tonhöhe<br />
sbi DDRB,0 ; Portbit ist Ausgang<br />
Loop:<br />
sbi PORTB,0 ; Portbit auf high<br />
ldi R16,c1<br />
Loop1:<br />
nop<br />
nop<br />
nop<br />
nop<br />
nop<br />
<strong>de</strong>c R16<br />
brne Loop1<br />
cbi PORTB,0 ; Portbit auf low<br />
ldi R16,c1<br />
Loop2:<br />
nop<br />
nop<br />
nop<br />
nop<br />
nop<br />
<strong>de</strong>c R16<br />
brne Loop2<br />
rjmp Loop<br />
Gut brumm!<br />
10.3 16-Bit-Schleife<br />
Immer noch nicht für die Blink-LED geeignet, aber immerhin für ein<br />
angenehmes Brummen mit 586 Hz im Lautsprecher. Schließen Sie<br />
einen Lautsprecher an Port B, Bit 0, an, fairerweise über einen Elko<br />
von einigen µF, und lassen Sie das folgen<strong>de</strong> Programm auf <strong>de</strong>n ATtiny13<br />
los:<br />
Hier wird eine 16-Bit-Zeitschleife mit einem Doppelregister erklärt. Mit dieser können Verzögerungen<br />
um ca. eine halbe Sekun<strong>de</strong> realisiert wer<strong>de</strong>n. Damit wird eine Blinkschaltung mit einer LED<br />
realisiert.<br />
Co<strong>de</strong> einer 16-Bit-Schleife<br />
Eine Zeitschleife mit einem 16-Bit-Doppelregister sieht in Assembler folgen<strong>de</strong>rmaßen aus:<br />
.equ c1 = 50000 ; Anzahl Durchläufe <strong>de</strong>r Schleife<br />
ldi R25,HIGH(c1) ; La<strong>de</strong> MSB-Register mit Schleifenwert<br />
ldi R24,LOW(c1) ; La<strong>de</strong> LSB-Register mit Schleifenwert