PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerproblem



robodriver
21.09.2007, 15:36
Hallo Leute,
ich wollt jetzt mal meine ersten Schritte mit Assembler machen und scheitere schon bei den ersten Zeilen :(

Hoffe ihr könnt mir weiter helfen.

Ich benutze das AVRStudio zum schreiben des Programmes.
Mein test schaut so aus:



ldi R16, 0b00111111
out DDRB, R16


Beim Compilieren kommt folgender Fehler:
error: Undefined Variable

Wenn ich das Programm so schreibe gehts ohne Fehler:


ldi R16, 0b00111111
out 0x17, R16


Wo liegt der Fehler das er DDRB nicht erkennt?

Habe einen ATMega8 ausgewählt und bekomme in dem "Workspace" auch alle 3 Ports angezeit und auch das DDRB.

Hab auch mal probiert noch diese Zeile voran zu stellen:


.INCLUDE <m8def.inc>


Geht auch nicht...
m8def.inc liegt im gleichen Ordner wie die generierte .asm-Datei
und nochmal im Atmel-Standart-Ordner für die ganzen inc-Dateien.

Also wie bring ich mein AVR-Studio dazu des DDRB zu erkennen?

Rofo88
21.09.2007, 15:42
Die Variable muß erst Declariert werden und das wird im entsprechenden *.inc-File gemacht.



.INCLUDE "m8def.inc"

ldi R16, 0b00111111
out DDRB, R16


Das geht bei mir.

Falls er das Inc-File nicht findet kommt ne Fehlermeldung:C:\Dokumente und Einstellungen\Administrator\xx.asm(2): error: Cannot find include file: m8def.inc

Kanns auch mal schauen ob in deinem M8DEF.INC die richtige Definition drinn steht : .equ DDRB =$17

Du kannst im Atmel-Studio auch den vollen Pfad zur *-INC-Datei angeben : .INCLUDE <C:\Programme\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8def.inc>

A.Hoffmann
21.09.2007, 16:14
Hallo robodriver

Es könnte an der Assembler Version liegen.
Schau doch mal im AVR - Studio unter

Projekt
Assembler Options

nach welche Assembler Version ausgewählt ist.

Versuche es einmal mit jeder Version.

MfG
A.Hoffmann

robodriver
21.09.2007, 17:50
Okay, danke, das hat geholfen.
der fehler lag wohl offensichtlich daran das ich
.include <m8def.inc>
geschrieben hatte. Das kann mein AVR-Studio scheinbar nicht. Aber mit
.include "m8def.inc"
funktionierts jetzt einwandfrei. Vielen Dank nochmal :)

oberallgeier
22.09.2007, 22:06
Grüß Euch,

also die Syntax von
.include <file.ext> - oder #inc....

durchsucht (bei Assembler 2 vom AVRStudio), soweit ich weiss, >>NICHT<< die aktuelle directory, während

.include <file.ext> - oder #inc....
die aktuelle directory durchsucht.

Vielleicht liegts daran? Da wäre dann irgendwie oder irgendwo der Preprozessor schuld.

Joe,
DerAltevomBerg