Forum: Mikrocontroller und Digitale Elektronik Menübibliothek in ASM


von Pepe (Gast)


Lesenswert?

Hallo zusammen,
ich muss eine größere Menüstruktur auf einen Atmega in
Assembler abbilden.
Habe dabei statische Menüeinträge, teilweise aber auch
dynamische Einträge ( weitere Punkte können angefügt oder
gelöscht werden ). Dummerweise haben genau diese dynamischen
Einträge auch nochmal 2 Ebenen Untermenüs...

Mein erster Gedanke war eine "Case"-Lösung. Da tippe ich mir
aber die Finger wund bei der vorgegebenen Struktur.

Habe schon einiges durchsucht. Bin aber bisher noch nicht
auf eine "universelle Bibliothek" gestossen.

Kann mir hier vielleicht jemand helfen ?

Danke,
Pepe.

von gast (Gast)


Lesenswert?

in ASM nicht ...

aber ein array von strukturen  die menüpunkte darstellen und bei 
aktionen auf eine funktion zeigen
man kann dann einträge ins das array schreiben und schon fertig

von TestX .. (xaos)


Lesenswert?

nimm c++ fürs menu....und den rest...ggf inline asm für zeitkritische 
dinge...

von Pepe (Gast)


Lesenswert?

mein Problem ist, dass wir mittlerweile
ca. 30 verschiedene Schaltungen mit den unterschiedlichsten
Anwendung auf Atmega's haben.
Wir haben mittlerweile richtig viele einzelne "Teillösungen"
für unsere täglichen Programmieraufgaben, aber alles in Assembler.

Somit kann ich aus der Ecke nicht wirklich raus...

von Mark B. (markbrandis)


Lesenswert?

Pepe schrieb:
> Wir haben mittlerweile richtig viele einzelne "Teillösungen"
> für unsere täglichen Programmieraufgaben, aber alles in Assembler.

Es ist gar nicht sooo unüblich, Teile des Codes in Assembler zu haben 
und andere Teile in C. Gerade wenn C für den entsprechenden Zweck besser 
geeignet ist, sehe ich eher wenig Sinn darin, hart auf Assembler zu 
bestehen?

Siehe auch: Tinykon

von Pepe (Gast)


Lesenswert?

Geb ich Dir vollkommen recht. Da wäre C sicherlich der bessere
Ansatz.
Nur haben wir in dem aktuellen Projekt knappe
17000 Zeilen in Assembler.

Wie kann ich eigentlich außer als inline ASM Assembler in ein
C Projekt einbinden ?

von Tim S. (maxxie)


Lesenswert?

In C ganz einfach. Du lässt die Assembler-Dateien ganz normal in 
Objektcode übersetzen, erzeugst eine Headerdatei mit den 
Funktionsdeklarationen und gibst die Objektdatei als Quelle beim Linken 
mit an.

Bei C++ packst du den Header in ein 'extern "C" {}' ein.
(Damit der Linker die Funktionen findet und nicht nach den verkleideten 
C++ Namen sucht)


So kannst du aber auch andersherum C Code in ein Object-File compilieren 
und anschliessend in ein Assemblerprojekt beim Linken als weiteres 
Objekt angeben um die darin enthaltenen Funktionen aus dem Assemblercode 
nutzen zu können.

von Pepe (Gast)


Lesenswert?

Das probier ich doch gleich mal ... Danke.

von Uwe (Gast)


Lesenswert?

Hi!
>Habe dabei statische Menüeinträge, teilweise aber auch
>dynamische Einträge ( weitere Punkte können angefügt oder
>gelöscht werden ). Dummerweise haben genau diese dynamischen
>Einträge auch nochmal 2 Ebenen Untermenüs...
Ich denke das ist kein Problem der Prog.sprache sondern ein 
Konzeptproblem.
Statische Menüs sind ja kein Probl., dynamische schon. Wenn die max. 
Anzahl
dyn. feststeht geht das Ganze auch noch über einfache Statusbits und 
Adresszeiger(Menueintrag) die zum jeweiligen Menue gehören.
Wenn aber absolut dynamisch, dann ist richtig Hirnschmalz gefragt, weil 
du
ja alle möglichen Grenzen austesten musst. Ich will jetzt nicht 
ketzerisch
sein, aber es könnte durchaus sein das das in C sogar sehr
speicherfressend wird. Du kommst aber aus der ASM-Ecke und kannst
vermutlich gut beurteilen wie das von dir gewollte umgesetzt wird.

Viel Erfolg, Uwe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.