PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Funktionen" in andere Datei auslagern



CowZ
22.08.2008, 23:54
Hi,

ich habe vor (absichtlich ;)) ein größeres (Wecker)projekt in Assembler zu schreiben.

Schreibe ich aber den ganzen Code in eine Datei, so wird das ganze recht schnell unübersichtlich.

Gibt es nun einen sinnvollen/richtigen Weg, Funktionen in externe Dateien auszulagern? Sollte man irgendwie mit Header- und Source-Dateien arbeiten, wie in C?

Gruß, CowZ

fhs
23.08.2008, 06:42
Hi,

Du kannst mit <pre>.include "pfad\name.asm"</pre> andere Assembler-Dateien einfügen. Einen Beitrag dazu gibt es hier (http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=65536). Ich habe keine Erfahrung, wie man dabei optimal mit den Labels und Namen umgeht.

Gruß

Fred

sternst
23.08.2008, 08:42
Und wenn du den GCC-Assembler benutzt, kannst du dort im Prinzip genau so arbeiten, wie in C, also mit separaten Sources und Headern.

bedboy27
23.08.2008, 10:05
Du kannst ja mehrere Datein mit Assembler Code anlegen.
Die musst du dann aber in der "Haupt-Assemblerdatei" oder wie es beim
AVR Studio heißt im "Entry File" mit .include "name.asm" angeben.

Alle Datein, die du angiebst, müssen im AVR-Studio im "Source Files"
geöffnet sein.

Mit Sprungnefehlen gelangst du dann zu den Labels.

Macros kannst du natürlich auch noch anlegen.
Hier kannst du auch noch Werte übergeben.

CowZ
23.08.2008, 18:14
Hi,

ok, danke schön :)

Gruß, CowZ

ikarus_177
23.08.2008, 19:27
Hallo,

kann man das auch mit Bascom machen?
Also eine Datei erstellen mit den ganzen Funktionen (allerdings in Basic geschrieben), und eine zweite, in der die Aufrufe drin sind?

Viele Grüße

thewulf00
26.08.2008, 12:58
Das solltest Du separat fragen, da bei dem Titel "Funktionen in andere Dateien auslagern" im Forumszweig "Assembler-Programmierung" kein Bascom-Experte reinschauen wird.

peterfido
28.09.2008, 20:58
Doch, die gucken hier auch mal rein. Dauert manchmal nur nen bissel...

Das geht auch bei Bascom.

ikarus_177
29.09.2008, 13:00
Hi peterfido,

danke für deine Antwort!

Und wie stelle ich das nun in Bascom an? Muss ich da dann für jede "ausgelagerte" Funktion ne eigene Datei machen? Und wie werden die Funktionen dann aus dem "Hauptprogramm" aufgerufen?

Viele Grüße
ikarus_177

MeckPommER
29.09.2008, 13:13
Schaue dir mal den Befehl $include an.

Der sorgt dafür, das die angegebene Datei so eingebunden wird, als würde der enthaltene Programm-Text direkt anstelle des includes stehen.

Dies bietet sich nicht nur an, wenn einem das Programm zu lang wird, sondern insbesondere dann, wenn man sich Routinen geschrieben hat, die man nicht nur in einem Projekt gut verwenden kann. Anstelle den ganzen Programmtext dieser Routinen nun immer wieder in die diversen Projekte einzukopieren, kann man einfach die Datei mit dem Programmtext includen.

Ein weiterer Vorteil ist, das man, falls einem Verbesserungen an so einem Programmteil einfallen, nicht in allen Projekten Änderungen eintippen muss, sondern nur die jeweilige include-Datei geändert werden muss. (neu compiliert muss es aber in jedem Fall werden)

Nochmal: du behandelst die Funktionen und Prozeduren der include-Datei genau wie Programmtext, der im Hauptlisting steht. Bascom nimmt beim Compilieren den Programmtext der include-Datei und schreibt diesen genau an die Stelle, an der der include-Befehl steht.

Gruß MeckPommER

PCF8574P
29.09.2008, 14:56
kann man auch Programmteile meintetwegen auf einer SD-Card abzwiegen? Also ein hexfile (oder assembler) liegt auf der SD Karte die mit dem Mega verbunden ist, aufrufen?

MFG

MeckPommER
29.09.2008, 15:21
Nein, das geht nicht. Das Programm muss im Flash-Speicher des µC liegen.