www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Menübibliothek in ASM


Autor: Pepe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi ... (xaos)
Datum:

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

Autor: Pepe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pepe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Tim Seidel (maxxie)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Pepe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das probier ich doch gleich mal ... Danke.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.