ASM Datei in C-Projekt einbinden

Gast #367968
Lesenswert?
• ▲
▼
Hallo,
ich habe eine Asm datei mit diversen funktionen und die soll in mein
c-projekt mit eingebunden werden so das ich die funktionen dort drin
ganz normal benutzen kann. Nur alle versuche sind fehl geschlagen..
Als compiler benutze ich WinAVR 20060125, µC ist ein normaler avr
mega161.

Kann mir jemand helfen?
Gast #367970
Lesenswert?
• ▲
▼
naja, ich hab im makefile das asm source file hinzugefügt ich nenne es
mal test.S also im makefile: ASRC = test.S

beim compiliern kommen dann sehr viele fehler, unter anderem:
"Error: number must be less than 32"
bei der Anweisung: cbi  SPCR,SPE

und ich hab herausgefunden das er die Registernamen vom mega161 nicht
kennt, abwohl ich mit der anweisung "#include <avr/io.h>" diese doch
hinzugefügt haben müsste...
wenn ich dazu noch eine ander .h datei includen will kommt solche
Fehler wie:

C:/WinAVR/avr/include/ctype.h:72: Error: unknown opcode `extern'


weiss nich was ich machen soll...
Moderator Persönliche Seite #367971
Lesenswert?
• ▲
▼
> "Error: number must be less than 32"
> bei der Anweisung: cbi  SPCR,SPE

Dann ließ dir bitte den Abschnitt über <avr/sfr_defs.h> im avr-libc
Manual durch.  Dort stehen die Optionen beschrieben, die du dafür
hast, z. B.

cbi _SFR_IO_ADDR(SPCR), SPE

> wenn ich dazu noch eine ander .h datei includen

Das ist für Assemblerdateien nicht gestattet, effektiv wird nur
<avr/io.h> unterstützt.  Was soll der Rest auch, die beschreiben
doch C-Interfaces?
Gast #367972
Lesenswert?
• ▲
▼
ööhm sorry, aber was du erzählst ist schwachsinn...
in der io.h sind die portname für den aktuellen benutzen µC included
somit auch SPCR = 0x0D und SPE = 6....
ersetze ich die namen mit dem wert, kommt der Fehler nicht mehr, obwohl
das ja nicht sein dürfte da alles mit eingebunden wurde...also erzähl du
mir nich ich soll irgendwas durchlesen!

Und das mit der ander .h datei einbinden ist auch nicht richtig, bei
anderen projekten gehts und wieso auch nicht, man bindet genauso
#defines ein wie es die io.h datei auch macht...
Gast #367974
Lesenswert?
• ▲
▼
Jörg hat recht, ich habe ebenfalls ehemals alten ARV-assembler Code für
einen neuen Prozessore von AVR mit C gemischt.

@Moe001 schau Dir das Manual durch oder lass es bleiben die Leute mit
'Schwachsinn' zu beleidigen :-((.

gruss herbert
Gast #367975
Lesenswert?
• ▲
▼
Sorry, aber ich war wütend, weil Jörg so herablassend gemeint hab ich
hab keine ahnung und solls mir was durchlesen, obwohl es damit garnix
zu tun hat. Ich hab auch schön öfter asm files eingebunden und es hat
funktioniert, nur jetzt nicht mehr, muss mit der neuen Winavr version
zusammenhängen...
ausserdem hab ich niemanden persönlich beleidigt, meinte ja nich das er
schwachsinnig ist, sondern nur seine aussage zu meinem problem...na gut
jetzt könnte jemand sagen, schwachsinnig ist der, der schwachsinniges
tut....aber dann wär ichs wohl auch, also sorry...
Moderator Persönliche Seite #367976
Lesenswert?
• ▲
▼
> obwohl es damit garnix
> zu tun hat.

Wenn du meinst...

Ich denke sehr wohl, dass es genau damit was zu tun hat, und
wenn du dir die entsprechende Doku durchlesen würdest, wüsstest
du auch, welche Optionen du alle so hast.

Im Übrigen, wenn du dir die entsprechende ioXXX.h mal ansiehst,
wird du feststellen, dass die Definitionen für die IO-Register
eben keineswegs so einfach sind, wie von dir behauptet.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.