Hallo Jens,
>LOW(expression) returns the low byte of an expression
>HIGH(expression) returns the second byte of an expression
>...
Danke. Tatsächlich schreibt die Online-Hilfe von "Functions"
Ich verstehe unter Funktionen wie folgt:
Rückgabe = Funktionsname(Parameter,...)
Also gebe ich der Funktion hight() mal einen Parameter mit, dessen Wert
erst zur Laufzeit bekannt ist:
-------------------------------------
.def parameter = r16
.def rueckgabe = r17
ldi parameter, 256
ldi rueckgabe, high(zahl)
-------------------------------------
Beim Übersetzen meckert Studio4 wie folgt:
C:\Programme\Atmel\AVR
Tools\AvrStudio4\functions\functions.asm(5) : error : Undefined
variable referenced
Assembly complete with 1 error
Erkenntnis: Die Funktion high() erlaubt keinen Ausdruck, dessen Wert
erst zur Laufzeit bekannt ist. Daher ist diese Funktion nur so
einsetzbar:
-------------------------------------
.def rueckgabe = r16
ldi rueckgabe, high(256)
-------------------------------------
Im Diassembler steht folgendes:
----------------------------------------------------------------
+00000000: E001 LDI R16,0x01 Load immediate
----------------------------------------------------------------
Beim Übersetzen wird
ldi rueckgabe, high(256)
nach
ldi r16, 1
übersetzt. Die Funktionen in Studio4 sind daher, wie von Andreas Jäger
schon erwähnt, eigentlich Makros.
MfG
Wolfram Hubert