Ich weiss im Moment nix Besseres, aber immerhin, es funzt
Code:Const Konstant_name = 20000 Const Kons_h = Konstant_name / 256 $asm ldi r24, Konstant_name ldi r25, kons_h $end Asm
Hallo,
kurze Frage.
Ich verwende BascomAVR und schreibe ein paar Inline-Assembler-Routinen für ATMega-Controller.
Ich stehe vor dem Problem, eine in Basic definierte Konstante (16 Bit)
in der Assembler-Routine in die Register einzulesen.
AVR Studio macht das so
ldi r24,Low(Konstant_Name)
ldi r25,High(Konstant_Name)
Leider funktioniert das Low() und High() mit Konstanten in Bascom nicht.
Wie macht man das in nun Bascom?
Mitch.
Ich weiss im Moment nix Besseres, aber immerhin, es funzt
Code:Const Konstant_name = 20000 Const Kons_h = Konstant_name / 256 $asm ldi r24, Konstant_name ldi r25, kons_h $end Asm
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Die Idee ist ja schon mal brauchbar!
Naja besser als kein High-Byte.
Mir wäre als Alternative noch eingefallen, anstelle der Konstanten eine Variablen zu verwenden:
Code:Dim Var_Konstante as Word Var_Konstante=&h1234 LDI r24,{Var_Konstante} LDI r25,{Var_Konstante+1}
Logo, geht auch, braucht aber Memory und Code.
Der Bascom-Assembler ist halt eine dünne Sache.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
nimm doch overlay variablen ?
Vor den Erfolg haben die Götter den Schweiß gesetzt
eigentlich wollte ich eine Konstante verwenden.
Aber ist auch eine Möglichkeit um ans Ziel zu kommen.
In BASCOM-Inline-Assembler kann/muss man LByte und HByte verwenden, also z.B.:
Code:Const c1 = &H1234 ldi r16, lbyte(c1) ldi r17, hbyte(c1)
Viele Grüße
Josef
-------------------------------------------------------------------------------------
DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel
Super!!!
Genau das habe ich gesucht! Vielen Dank.
Es funzt wunderbar!
Lesezeichen