Doku zu AVR Assembler für komplexe Projekte (deutsch)

OP #5198300
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.
Angehängte Dateien:
Beitrag #5198329 wurde von einem Moderator gelöscht.
Gast #5199145
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.
Gast #5200505
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren