Forum: PC-Programmierung Verständnisfrage ASM Code


von Daniel (Gast)


Lesenswert?

Hallo zusammen,

ich werde aus dem folgenden Code Auszug nicht schlau, es sollte bei 
MOTOR_ID =1 52 als Ergebnis kommen. Wenn ich darüber nachdenke kommt 
immer 51 raus!?


.equ  I2C_ADR    = 0x50
.equ  MOTOR_ID  = 1    ; 1, 2, 3 or 4
………………

; i2c init
    ldi  temp1, I2C_ADR+(MOTOR_ID<<1)
    sts  TWAR, temp1
    ldi  temp1, (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA)
    sts  TWCR, temp1

Kommt da jetzt wirklich 52 raus oder habe ich richtig gedacht?
(Ich habe mir schon den Bitmanipulationsartikel durchgelesen)

Grüße
Daniel

von Helfer (Gast)


Lesenswert?

Daniel schrieb:
> Bitmanipulationsartikel durchgelesen
gut. :)

> (MOTOR_ID<<1)
Dann üben wir das gleich mal. 1, 2 oder noch was ganz anderes? ;)

von Daniel (Gast)


Lesenswert?

•<< = Links schieben (Bsp: a<<b ist das gleiche wie a * 2^b)

MOTOR_ID ist 1
Wenn ich das aus dem Beispiel ableite:
1 * 2^1

OK, ich hab da was überlesen.
Danke für den Denkanstoß

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.