Dietmar Sch. schrieb:
> Vielleicht eine wichtige Zusatzinfo:
> Nicht nur, das ich das nicht verstehe ;-) /
Wie schon gesagt: das ist ein Funktionspointer.
> es gibt auch einen Fehler:
> #173-D invalid type conversion
Das wird wohl der __SFR_FARPTR sein. Der Name suggeriert bereits, dass
es sich dabei wohl nicht um einen normalen Pointer (wohl 16 Bit)
handelt, sondern um einen Pointer, der 24 Bit umfasst.
Der
1 | #define MemstartTest 0x40000
|
passt da auch dazu, weil die Zahl für einen 16 Bit Wert zu gross ist.
Wenn da nicht irgendeine besondere Absicht dahinter steckt, dann hätte
der Cast überhaupt nie so geschrieben werden sollen. Ändere das mal um
auf
1 | DMA0DA = (__SFR_FARPTR)MemstartTest;
|
Und besorg dir ein C Buch und lies über Funktionspointer nach. Wer
Computer programmieren will, sollte seine Programmiersprache kennen!
Auch wenn ich durchaus zugestehe, dass Funktionspointer nicht tägliches
Brot sind.