Forum: Mikrocontroller und Digitale Elektronik Pause mit Register Steuern ZL Registe rmacht Probleme


von C. H. (hedie)


Lesenswert?

Hallo

Ich möchte bei einem ATmega 8515 dem register ZL so eitwas abziehen
1
;///////////////////////////////////
2
;     Pause
3
;///////////////////////////////////
4
pause:
5
sbiw ZL,r17        ;Den Registern ZL:ZH r17 abziehen.. ZL ist 65535 gross
6
brne pause        ;ZL bei 0? nein? dann zu Pause....
7
ret
8
;///////////////////////////////////

Jedoch meldet er dann das r17 keine zahl ist... Logisch aber wie kann 
ich den abzieh wert variabel machen?

Grüsse
Claudio

von Johannes M. (johnny-m)


Lesenswert?

sbiw geht nur mit immediate-Werten! Wenn Du ein Register subtrahieren 
willst, musst Du sub und sbc nehmen, z.B.
1
clr r16
2
sub ZL, r17
3
sbc ZH, r16

von mmerten (Gast)


Lesenswert?

Bei 8 Bit einfach:
sub  ZL,R17
Bei 16 Bit z.b.:
ldi  R18,0
sub  ZL,R17
sbc  ZH,R18

von C. H. (hedie)


Lesenswert?

Danke für eure antworten :D

von Spess53 (Gast)


Lesenswert?

Hi

Mit 'sbiw' lassen sich nur Konstanten Subtrahieren
Beisp.:  sbiw ZH:ZL,1

MfG Spess

von Peter D. (peda)


Lesenswert?

Claudio H. wrote:
> Erfüllt das dan den gleichen zweck?

Wenn Du wirklich eine reziproke Abhängigkeit (Z/R17) willst, dann ja.

In der Regel wollen die Leute aber eine lineare Zeiteinstellung, d.h. Z 
mit dem Wert vorladen und in der Schleife 1 abziehen.


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.