kleiner Tip
wenn du die Reihenfolge, in der du am Anfang r16 und r17 setzt umgedreht
hättest, wäre es dir vielleicht aufgefallen
1 | ldi r17,0xFF
|
2 | ldi r16,0x80
|
3 | warte1:
|
4 | dec r16
|
5 | brne warte1
|
6 | dec r17 ;sich dieser Port bei jedem durchlauf der
|
7 | ...
|
8 | brne warte1 ;"Schleife" ändert
|
und zwar deshalb, weil beide brne zur selben Stelle gehen.
das kann aber so nicht recht stimmen, denn wenn du 0xFF mal bis 0x80
zählen willst, dann musst du das auch jedes mal machen
1 | ldi r17,0xFF
|
2 | warte0:
|
3 | ldi r16,0x80
|
4 | warte1:
|
5 | dec r16
|
6 | brne warte1
|
7 | dec r17 ;sich dieser Port bei jedem durchlauf der
|
8 | ...
|
9 | brne warte0 ;"Schleife" ändert
|
Alternativ kannst du natürlich auch anstelle von r16 r17 kleinere setzen
und so anstatt 0xFF mal nur 0xAB mal von 0x80 bis 0 herunterzählen
1 | ldi r17,0xAB
|
2 | warte0:
|
3 | ldi r16,0x80
|
4 | warte1:
|
5 | dec r16
|
6 | brne warte1
|
7 | dec r17 ;sich dieser Port bei jedem durchlauf der
|
8 | ...
|
9 | brne warte0 ;"Schleife" ändert
|
Das allegemeinere Muster dahinter sieht so aus:
Klammere mal, wie die Schleifen ineinander geschachtelt sind
1 | ldi r17,0xFF
|
2 | warte0: --------------+
|
3 | ldi r16,0x80 |
|
4 | warte1: ---------+ |
|
5 | dec r16 | |
|
6 | brne warte1 ---------+ |
|
7 | dec r17 |
|
8 | ... |
|
9 | brne warte0 --------------+
|
solange diese Klammerschachtelung sich nicht überkreuzt, die Dinge also
sauber ineinander geschachtelt sind, tun wir Menschen uns seltsamerweise
leichter die Dinge zu überblicken.