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


von Thomas R. (analogfreak)


Angehängte Dateien:

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.
von Max (Gast)


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.

von Thomas R. (analogfreak)


Lesenswert?

Hallo Max,

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

von Max (Gast)


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.

von Horst M. (horst)


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.
1
  #define LAMPE PORTA,0
2
  sbi LAMPE

: Bearbeitet durch User
von Max (Gast)


Lesenswert?

Horst M. schrieb:

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

Funktioniert. Man lernt nie aus. Danke!

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.