mikrocontroller.net

Forum: Projekte & Code Doku zu AVR Assembler für komplexe Projekte (deutsch)


Autor: Thomas R. (analogfreak)
Datum:
Angehängte Dateien:

Bewertung
4 lesenswert
nicht lesenswert
Hallo,

ich habe aufgeschrieben, wie man den AVR-Assembler (AVRASM2) bei 
komplexen AVR-Projekten verwenden kann.
Die deutsche Version hängt hier an (PDF, 625 KB).

Das PDF gibt es auch auf meiner Web-Site
 http://web222.webclient5.de/doc/advavrasm2

Ciao
Thomas R.

: Verschoben durch Moderator
Beitrag #5198329 wurde von einem Moderator gelöscht.
Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

es ist immer interessant zu sehen, wie andere Programmierer arbeiten. 
Vor diesem Hintergrund sind solche Beschreibungen immer hilfreich. Danke 
dafür.
Als langjähriger Asm-Verwender mag ich die grundsätzlich einfache 
Struktur und das einfache, zeichenarme Instrumentarium von Asm, welches 
auch komplexeren Programmen genügt. Das Ausschöpfen aller Möglichkeiten 
wie bei Dir beschrieben sehe ich aber eher kritisch, weil es Programme 
letztlich doch unübersichtlicher und unnötig bürokratisch 
überlegungsintensiver macht. So mag beispielsweise Makroprogrammierung 
zwar bequem Code wiederverwendbar zusammenfassen. Mit jeder solchen 
Konstruktion, jeder Definition, jeder bedingten Assemblierung, jedem 
neuen Zeichen welches nicht unmittelbar notwendig Code begründet wird 
der Quelltext aber ganz ohne Not kryptischer und komplexer. Einfache 
Kommentierung genügt letztlich vollauf, um seinen Quellcode für sich und 
andere lesbar zu halten. Ich verwende eigentlich nur die .include 
Anweisung zur funktionalen Strukturierung in verschiedene Files, 
Direktiven wie dseg/eseg zur Auszeichnung der Datenbereiche, equ zur 
Festlegung von Konstanten, db,dw zur Reservierung von Speicherplatz 
sowie high() + low() zum gezielten Ansprechen von 16-Bit Variablen. Das 
ganze wird ergänzt durch ein fixes Konzept der Registerverwendung: R0-R3 
zur freien Verwendung, R4-R8 als systemweite Variablen 
(Systemtick-Counter), R9 für die Registersicherung von SREG in 
Interrupts, R10-15 zur Registersicherung von XL-ZH in Interrupts sowie 
R16-R25, X,Y,Z universell in allen Tasks, wobei R16-R25 in Interrupts 
explizit zu pushen sind sofern XL-ZH dort nicht ausreichen. Das tun sie 
bei überlegter Programmierung aber öfter als man glaubt. Alles in allem 
genügte dieses Vorgehen noch jedem Anspruch, liefert genauso 
wiederverwendbare Funktionen und produziert eine sehr übersichtliche, 
immer gleich ausschauende Code-Niederschrift. Kombiniert mit der genauen 
Pin- und Anschlußbelegung ist das Projekt mit dem Quelltext dann fast 
schon vollständig dokumentiert.

Autor: Thomas R. (analogfreak)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Max,

danke für Deine Rückmeldung und die Skizze Deiner Vorgehensweise.
Wie machst Du es bei Labels und Symbolen?

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

Meine Vorgehensweise: Instruktionen und Labels kleingeschrieben.
Symbole, Register, Variablen, quasi alle „Objekte“ mit denen 
Instruktionen hantieren groß. Labels mit einem treffenden 
Funktions-Kurznamen und nummeriert (am besten mit etwas Abstand, damit 
immer noch neue Sprungmarken zwischendurch Platz haben). Die 
Notwendigkeit, sich bei meist kompakten Asm—Programmen großartig mit 
„Namensräumen“ auseinanderzusetzen sehe ich nicht. Eines ist mir aber 
dann doch unverständlich: Warum man Portpins wie PORTA,0 keinen 
symbolischen Namen geben kann: .equ LAMPE = PORTA,0 ; im Einsatz dann 
also einfach sbi LAMPE! Wär das einzige was mir noch fehlen würde.

Autor: Horst Meier (horst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max schrieb:
> Warum man Portpins wie PORTA,0 keinen
> symbolischen Namen geben kann: .equ LAMPE = PORTA,0 ; im Einsatz dann
> also einfach sbi LAMPE! Wär das einzige was mir noch fehlen würde.

Na, dann mach halt.
  #define LAMPE PORTA,0
  sbi LAMPE

: Bearbeitet durch User
Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Horst M. schrieb:

> Na, dann mach halt.
>   #define LAMPE PORTA,0
>   sbi LAMPE

Funktioniert. Man lernt nie aus. Danke!

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.

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