Forum: Mikrocontroller und Digitale Elektronik m8515def.inc Frage


von Jannik S. (Gast)


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 :)

von johnny.m (Gast)


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.

von johnny.m (Gast)


Lesenswert?

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

von Jannik S. (Gast)


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

von johnny.m (Gast)


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...

von Lars Lochmann (Gast)


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

von Jannik S. (Gast)


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.ä.

von johnny.m (Gast)


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...

von johnny.m (Gast)


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...

von johnny.m (Gast)


Lesenswert?

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

von johnny.m (Gast)


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)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.