mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik m8515def.inc Frage


Autor: Jannik S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, bin wirklich blutiger anfänger und versuch mich gerad ein
bisschen mit dem AVR-Studio 4. Beim Assemblieren kommt bei mir jedoch
der fehler: E:\Eigene Dateien\Test001\m8515def.inc(372): error:
Attempt to redefine keyword 'or'
Die Zeile lautet:
.equ  OR  =3    ; old name kept for compatibilty

was auch immer das bedeuten mag?!
Möchte diese Zeile auch nicht einfach löschen, da diese ja mit der UART
in verbindung steht.

Würde mich über Hilfe freuen, damit ich endlich mal den simulator
testen kann :)

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"or" ist ein Assembler-Befehl, und da der Assembler im Unterschied zu
den meisten Compilern nicht Case-sensitiv ist, darfst Du nicht einen
Assembler-Befehl redefinieren.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, muss natürlich heißen:
[...], würdest Du mit der Anweisung den Assembler-Befehl redefinieren.

Autor: Jannik S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhm, danke für die antowrt, aber ich habe quasi 0 verstanden.. :) Was
bedeutet denn Case-Sensitiv? Wie bekomm ich das denn hin, das er das
8515def annimmt?
Mein Source lautet ledigiglich:
.include "m8515def.inc"

ldi r16, 0b11111111

out DDRD, r16

out PortD, r16

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Case-sensitiv heißt, dass GROSS- und kleinschreibung nicht unterschieden
werden. "or" ist in Assembler ein Befehl, also ein Schlüsselwort, und
ist demzufolge reserviert. Auch wenn man anstatt "or" "OR"
schreibt, ist das für den Assembler dasselbe. Das ist anscheinend ein
Fehler in der m8515def.inc, wie ich grad festgestellt habe. Öffne mal
die m8515def.inc und kommentiere die betreffende Zeile aus (Semikolon
davor) oder lösche sie gleich komplett und speichere das ganze. Was den
Atmel-Leuten da eingefallen ist, kann ich mir so nicht denken...

Autor: Lars Lochmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuche es mal so:

.include "8515def.inc"
.org 0x00

loop:

ldi r16, 0b11111111

out DDRD, r16

ldi r16, 0xFF  ;hier kannst du nen Ausgabewert des Ports festlegen

out PortD, r16

rjmp loop


...Die ganzen include Dateien stehen alle im AVR-Assembler Verzeichnis
und helfen dem Compiler dein PortD... zu verstehen

Autor: Jannik S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, danke für die Erklärung.
Dachte nur bevor ich die einfach lösche, bekomm ich evtl. später
probleme mit dem UART o.ä.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> bekomm ich evtl. später probleme mit dem UART o.ä.

Nö, direkt drunter steht ein ".equ DOR = 3", das das (anscheinend
veraltete) OR ersetzt. Ist nur eine Sache der Abwärtskompatibilität.
Wenn Du nicht irgendwelche alte Software, die für andere AVRs
geschrieben wurde, übernehmen und auf Deinen µC umschreiben willst,
sondern alles selber schreibst, verwende DOR anstatt OR und die Sache
ist geritzt. Kann mir so gar nicht vorstellen, dass der Fehler mir hier
im Forum noch gar nicht untergekommen ist. Du warst ja vermutlich nicht
der erste, bei dem es geklingelt hat...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab grad mal ein Programm in ASM geschrieben und bekomme keine
Fehlermeldung. Hast Du im AVRStudio unter "Project | Assembler
Options" den Assembler Version 2 ausgewählt? Der benutzt nämlich eine
neuere "m8515def.inc", in der das OR nicht mehr drin ist. Wenn Du
noch Version 1 benutzt, dann schalte mal um auf Version 2. Dann gehts
auch ohne Manipulationen an den .inc-Dateien...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab noch mal mit Assembler Version 1 probiert. Gibt bei mir auch keine
Fehlermeldung, trotz OR in der Header-Datei... Ist schon seltsam

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also zum guten Schluss: Die von Dir beschriebene Fehlermeldung bekomme
ich nur, wenn ich die Zeile ".equ OR = 3" direkt ins Programm
reinschreibe. Sonst läuft alles normal (assembly complete with no
errors)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.