PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einbinden einer Bibliothek in ein Assembler Programm



EGS-3
12.07.2006, 13:29
Hi,

ich möchte eine Bibliothek(AN617) in mein Assemblerprogramm einbinden
bekomme aber immer nur Fehlermeldungen.
Ich benutze einen PIC 16F628.
Und wollte fragen ob einer vielleicht weiss wie ich sowas richtig mache und mir ein Programmbeispiel posten würde

danke schonmal :)

Mobius
12.07.2006, 16:24
Da ich deinen Scource-Code nicht kenne, kann ich nur raten, wie du das eingebunden hast.

Aber ein Knackpunkt bei dem einbinden von Bibliotheken in den Assemblercode war, dass ich dann duzende von "Sekotr zwei mal beschrieben"-Fehlermeldungen bekommen habe. Dieser tritt auf, wenn du den Code ungefähr so einbindest (und der, wie der AN617 Assembler-Code enthält)



#include <FMX.A17>

org 0x00
goto main

org 0x04
---do some interrupts---

main:
---do something else---

end

Das Problem ist nun bei dem Preprocessor (der für das Abbarbeiten aller Befehle, die mit einem # beginnen verantwortlich ist), dass er den Inhalt von something.inc nimmt und in 1:1 in dein Source-Code einfügt. Erst dann läuft der Compiler über den Code und wandelt diese in HEX um. Da in dem aber schon Assembler Befehle enthalten sind, aber kein "org" Befehl, haut der Compiler diese Standardmäßig auf die Adresse 0x00. Nun, bis jetzt erkennt er noch kein Fehler, aber dann hast du ja aber den "org 0x00"-Befehl dort stehend, womit du dem Compiler sagst, dass du ab da alle Befehle auf die Adresse 0x00 haben willst (welche aber schon von dem Programmcode des Includes besetzt ist, der Compiler meckert natürlich ^_^ (noch immer besser, als wenn er es nicht tun würde und du dann Tage bei der Fehlersuche sitzt.

Um den Fehler auszumerzen setzt du den Include am besten ganz unten hin, am besten vor End (wenn du eeprom-Daten hast, natürlich davor). Damit wird der Source-Code der Bibliothek erst am ende deines Programms eingefügt und du bekommst die oben genannten Fehler nicht mehr.



org 0x00
goto main

org 0x04
---do some interrupts---

main:
---do something else---

#include <FMX.A17>

end

Naja, wenn das nichts hilft, post mal die Fehlermeldungen ^_^ und, wenn es geht und du es möchtest dein Source-Code. Die Fehlersuche ist dann um einiges einfacher, da vor allem man nciht mehr Raten muss ;).
MfG
Mobius

kalledom
12.07.2006, 21:55
Hallo,
Mobius hat das Wesentliche schon geschrieben.
Du kannst vor dem ORG, also am Anfang einer Assembler-Datei, (Register-) Definitionen oder Macros per INCLUDE einbinden. Programm-Code kommt hinter dem ORG für die Start-Adresse.
Unter http://www.domnick-elektronik.de/picasm.htm gibt es Beispiele.