PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BASCOM und ASM



Dirk
15.06.2006, 13:13
Hallo BASCOM-Kenner,

nachdem ich mich jetzt mit BASCOM angefreundet habe, habe ich schon 2 LIBs mit Assembler-Teilen geschrieben.
Dabei stosse ich auf ein paar (vielleicht dumme) Fragen:

1. Ich würde gern die Port-Definitionen nutzen, die BASCOM in Form der Definitionsdateien (M32def.dat, 2313def.dat ....) bereit stellt. Dann müßte ich nicht in jeder LIB wieder .equ PORTB = $18 o.ä. angeben.
Ich hätte also gern so etwas wie .include "M32def.dat". Geht das? Wenn ja, wie?

2. Gibt es für den BASCOM-Compiler eigentlich eine Anleitung (mit Aufzählung aller Compiler-Direktiven)? Oder habe ich die in der Doku übersehen?

Gruß Dirk

PicNick
15.06.2006, 16:10
Wieso, du kannst doch die Bascom Symbole mitverwenden ?
Der Library-Part wird ja mit dem Basic mitkompiliert, das ist ja keine "echte" Objectlibrary

https://www.roboternetz.de/wissen/index.php/Bascom_Libraries

ad 2. Was meinst du genau ? (ein Beispiel)

Dirk
15.06.2006, 17:21
Hallo PicNick,


Wieso, du kannst doch die Bascom Symbole mitverwenden ?


Leider ging das bei mir beim Erstellen von LIBs nicht.
Was ich meine: Ich möchte die Konstanten PORTB, OCR1AH, DDRA usw., die z.B. in der M32def.dat definiert sind (Syntax stimmt natürlich nicht ganz!) in den LIBs direkt nutzen und nicht neu definieren müssen. Geht das irgendwie?? Wenn ich z.B. PORTB in einer LIB ohne vorherige Definition verwende, bekomme ich (klar!!) eine Fehlermeldung.


ad 2. Was meinst du genau ? (ein Beispiel)
Wenn ich mir z.B. die mcs.lib ansehe, dann gibt es Ablauf-Steuerungs-Befehle (#if #else ...) und andere Compiler Befehle, die nicht direkt Code erzeugen, sondern eine bedingte Compilierung o.ä.
Meine Frage war, ob es eine Anleitung mit Aufzählung dieser Compiler-Befehle gibt. Dann könnte ich sie auch in meinen LIBs verwenden. Oder sind die soooo universell für alle Compiler gültig, dass ich mir eine allgemeine Anleitung suchen muss, die dann auch für den BASCOM-Compiler gilt?

... Wie gesagt, vielleicht blöde Fragen! #-o

Gruß Dirk

oe9vfj
15.06.2006, 19:22
ASM Befehle mit Adressen welche erst während der Kompilierung des Basic-Programms bekannt sind, müssen als solche gekennzeichnet werden.
Dies geschieht mit einem * vor dem ASM-Befehl. z.B.

* in r24, PortB
Dieser Befehl wird erst während der Kompilierung aufgelöst.

Es ist auch möglich, einen Basic-Befehl direkt in die Library zu schreiben. Hier muss davor allerdings ein *BASIC: gesetzt werden. Z.B.


*BASIC: Set LED1
um einen Pin auf high zu setzen, an dem eine LED angeschlossen ist.
Im Basic-Programm muss dann allerdings diesem Namen ein Pin zugewiesen werden: LED1 Alias PortB.5

Dirk
15.06.2006, 20:27
Hallo oe9vfj,


* in r24, PortB

Ok, verstehe. Das habe ich auch schon so z.B. mit *lds r16,{Variable} gemacht. Für Portbefehle hatte ich das * bisher nicht genutzt. Werde das probieren.


*BASIC: Set LED1

Die Variante kannte ich noch nicht. Danke für die Infos!

Da kommt bei mir noch einmal die Frage hoch, wo diese Infos stehen. D.h. gibt es eine "Anleitung" zu den Möglichkeiten des BASCOM-Compilers?

Gruß Dirk

oe9vfj
16.06.2006, 07:16
Hallo Dirk,

die Hilfe in BASCOM-AVR ist hier leider nicht sehr ausführlich. Etwas steht in der Rubrik Mixing ASM and BASIC.
Du kannst mal in der Library http://members.aon.at/voegel/Downloads/Driver/CF_HD/CF_HD.LIB
einige Beispiele einsehen. Diese Library steht im Zusammenhang mit dem Basic-Programm http://members.aon.at/voegel/Downloads/Driver/CF_HD/Config_CompactFlash_M128.bas wo die Hardware-Konfiguration vorgenommen wird.

Dirk
17.06.2006, 12:01
Hallo Josef,

danke für das Beispiel mit der CF-LIB!

Da kann man einiges abgucken.

Gruß Dirk