AVR Studio mehrere Dateien einbinden

Gast #105325
Lesenswert?

Hallo

Ich habe einen AVR 8535 und Versuche im AVR Studio 4, zusätzlich zu
meinem Hauptprogramm eine ASM Datei mit Unterroutinen einzubinden.
z.B. so :

.include "8535def.inc"
.include "BCD.asm"

Das klappt auch und die Datei lässt sich ohne Fehlermeldungen
Compilieren. Wenn ich aber jetzt mein Programm Simulieren will startet
das Programm nicht mehr in meinem Hauptprogramm sondern fängt mit der
ersten Unterroutine in der eingebundenen Datei an.Also nicht wie im
Hauptprogramm vorgegeben mit der Initialisierung. Hier mal ein
Ausschnitt aus dem Hauptprogramm:

.include "8535def.inc"
.include "BCD.asm"

.def temp =   r16
.def rBin1H = r17
.def rBin1L = r18
.def rBin2H = r19
.def rBin2L = r20
.def rmp    = r21

.cseg
rjmp  Initial  ; nach RESET zum Hauptprogramm
                   .
                   .
Was mache ich falsch, kann mir da jemand weiterhelfen???
Gast #105327
Lesenswert?

Danke genau das war der Fehler.Habe jetzt die include Anweisung nach
meinen Int.Vektoren eingefügt und alles läuft.

Also kann ich das include so verstehen als ob ich den gesamten Code der
Datei einfach an diese Stelle reinkopiert hätte.
Na ja wie der Name ja eigentlich auch sagt.
Gast #105329
Lesenswert?

Es ist aus meiner Sicht empfehlenswert, am Anfang des "Hauptprogramms"
noch ein .org $0000 einzufügen, denn der Reset- und die
Interruptvektoren beginnen normalerweise immer dort.

.cseg
.org $0000
rjmp  Initial  ; nach RESET zum Hauptprogramm

Und dann hätte der Assmebler auch beim obigen Problem (Code-Include vor
dem Startvektor) zumindest eine Warnung ausgegeben.

Gruß
Ingo
Gast #105330
Lesenswert?

Danke für den Hinweis
AVR Studio hat mir sogar 20 gleiche Fehlermeldungen ausgegeben:

D:\Dokumente\Atmel\ADC\ADC.asm(14) : error : Overlap detected in
.cseg

die Meldung hätte mir zwar auch nichts gesagt, ich bin auch noch
blutiger Anfänger.
Man lernt nie aus und auf Fehlern wird man klug.

In dem Sinne

mfG
     Peter

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