Hallo, ich habe ein kleines Problem mit Macro's im AVR-Assembler: .DEF temp = r16 .MACRO outi ldi temp, @1 out @0, temp .ENDMACRO outi DDRB, 100000b ; => DDRB = 00001011b => falsch outi DDRB, 32 ; => DDRB = 32 => richtig outi DDRB, 0x20 ; => DDRB = 0x20 => richtig Warum ist nach dem ersten outi eine falscher Wert im DDRB Register ? Gruß Matthias
Kanns vielleicht dran liegen, daß Binärzahlen nicht mit "100000b" sondern "0b100000" angegeben werden?
Hallo thkaiser, Du hast recht ! Aber als was interpretiert er dann "100000b" ? Gruß Matthias
Hallo thkaiser, Interpretiert er evtl. das letzte Zeichen in Hex ?: 100000b => 00001011b 0xB => 00001011b Gruß Matthias
Nö. Mancher Assembler ignoriert das b einfach ganz. Der ATMEL Assembler gibt noch eine lapidare Warnung "Trash at end of line, ignored!". Ob er das auch macht, wenn der Parameter über einen Makroaufruf übergeben wird, weiß ich nicht. Jedenfalls ist 100000 dezimal soviel wie 0x186A0. Und auch da bekleckert sich der ATMEL Assembler nicht gerade mit Ruhm: er nimmt halt, was passt, nämlich A0. Und ignoriert den Rest. Oder sind die neuen Versionen besser? Ich arbeite noch mit den alten. MfG Gerd
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.