Forum: Mikrocontroller und Digitale Elektronik schleifendurchgang in asm über 255


von bastler (Gast)


Lesenswert?

hallo, ich habe einen schleifenzaehler von 266.
ich weiss jetzt nicht, wie ich den in einem durchlauf reingekomme mit 
asm.
brauche mal eine denkanstoss.
habe jetzt aufgeteilt in 255 und in 11.

Sub Ir_code_6666()
   ldi r17,255
Wgloop1:
   Portb.1 = 1
   Waitus 12
   Portb.1 = 0
   Waitus 12
   dec r17
   brne wgloop1

   ldi r17,11
Wgloop2:
   Portb.1 = 1
   Waitus 12
   Portb.1 = 0
   Waitus 12
   dec r17
   brne wgloop2
End Sub

von bastler (Gast)


Lesenswert?

wieviel schaltvorgänge/schleifendurchgänge werden eigentlich 
durchgeführt , wenn ich 200 eingebe? sind es 200 oder 201.

von Karl H. (kbuchegg)


Lesenswert?

bastler wrote:
> hallo, ich habe einen schleifenzaehler von 266.
> ich weiss jetzt nicht, wie ich den in einem durchlauf reingekomme mit
> asm.
> brauche mal eine denkanstoss.
> habe jetzt aufgeteilt in 255 und in 11.

Ist eine Möglichkeit.
Eine andere wäre es 2 mal je 133 Durchgänge zu fahren

     ldi r18, 2
Wgloop0:
     ldi r17, 133
Wgloop1:
     Portb.1 = 1
     Waitus 12
     Portb.1 = 0
     Waitus 12

     dec r17
     brne Wgloop1

     dec r18
     brne Wgloop0

von Karl H. (kbuchegg)


Lesenswert?

bastler wrote:
> wieviel schaltvorgänge/schleifendurchgänge werden eigentlich
> durchgeführt , wenn ich 200 eingebe? sind es 200 oder 201.

Spiel es mal in Gedanken durch, wenn du 1 angibst. Wieviele
Durchgänge sind es bei einer Angabe von 2? Bei 3? Was schlieest
du daraus für 200?

von Michael U. (amiga)


Lesenswert?

Hallo,

da der AVR nicht angegeben ist:

ldi r16,low(266)
ldi r17,high(266)

loop:

 ; hier Deine Geschichten

   dec r16
   brne loop

   dec r17
   brne loop


oder

ldi zl,low(266)
ldi zh,high(266)

loop:

 ; hier Deine Geschichten

 sbiw Z,1
 brne loop

Gruß aus Berlin
Michael

von bone (Gast)


Lesenswert?

ldi r16,low(266)
ldi r17,high(266)

loop:

 ; hier Deine Geschichten

   dec r16
   brne loop

   dec r17
   brne loop


^^ AUTSCH
wären das nicht 12 * 255 durchgänge????

von Peter D. (peda)


Lesenswert?

bone wrote:
> ldi r16,low(266)
> ldi r17,high(266)
>
> loop:
>
>  ; hier Deine Geschichten
>
>    dec r16
>    brne loop
>
>    dec r17
>    brne loop
>
>
> ^^ AUTSCH
> wären das nicht 12 * 255 durchgänge????

Nein, das sind nur 10 Durchgänge.

Richtig wäre:
1
ldi r16,low(266)
2
ldi r17,high(266)
3
4
loop:
5
6
 ; hier Deine Geschichten
7
8
   subi r16, 1
9
   sbci r17, 0
10
   brne loop


Peter

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.