Gast
#719112
Hallo, hab folgendes Problem: Ich hab mittlerweile sehr viele ASM-Routinen, die ich der Übersichtlichkeit wegen in einzelne Dateien packen möchte, also eine ASM-Datei fürs Display, eine für die Tastatur usw. Die einzelnen Dateien hab ich auch schon erstellt und links im Projektfenster auch eingefügt. Als EntryFile hab ich natürlich meine Hauptprogrammdatei gewählt. Allerdings hab ich jetzt zwei Probleme: 1. Wie mache ich dem Hauptprogramm die Funktionen aus den anderen Dateien bekannt? Bei anderen Assemblern (z.B.8051er) gibts die Schlüsselwörter "public" und "extern" (wie z.B. auch in C). Das scheints beim AVR-Assembler nicht zu geben. Logischerweise erhalte ich dann Fehler, dass call-Aufrufe auf die Routinen der anderen Dateien nicht durchgeführt werden können, weil die Labels nicht bekannt sind. Unprofessionellerweise hab ich das dann so gelöst, dass ich einfach per .include die entsprechenden Dateien eingebunden habe, was zum Fehler Nr.2 führt: 2. Das zweite Problem ist, dass ich den Fehler erhalte, die einzelnen Funktionen würden sich überlagern. Mittels org-Direktive könnte ich das abschalten, aber ich müsste jedesmal das org neu einstellen, wenn meine Hauptapplikation größer wird. Könnte ich auch lösen, wenn ich die Funktion ganz nach hintem im Codespeicher stelle, find ich aber nicht gut. Muss leider wieder das Beispiel des 8051er-Assemblers bringen, bei dem kann ich sogenannte relokatible Segmente einstellen, also der Assembler/Linker entscheidet, wo die Routinen im Speicher liegen, und das möchte ich so auch beim AVR realisieren. Nr. 2 resultiert m.E. aus Nr.1 wegen dem .include. Ich denke also, mit Hilfe zu Nr.1 wäre mir schon geholfen, weil ich dann auf die orgs verzichten kann. Wo liegen meine Fehler? Hoffe, ihr könnt mir helfen. Ralf