Forum: Mikrocontroller und Digitale Elektronik 4433def.inc + SPH fehler


von lopder (Gast)


Lesenswert?

hallo ich hab mal ne menge source runtergelanden und mit denen 
harumgepielt und ich habe immer bei der "gleich zeile" in problem ...

ldi temp, HIGH(RAMEND) ;
out SPH, temp;

da sagt er immer :
error : Undefined variable referenced

hab es mit dem AVRStudio gemacht ...
ich habe einen At90S4433-8PI
und hab .include "4433def.inc" eingebunden
bei anderen "include-files" funktioniert es
aber dann kann ich mit den hexfiles doch nichts anfangen oder ??
die source-files die ich da habe sind für den At90S4433 geschrieben ....
weiß jemmand von euch rat ??

danke cu

von crazy horse (Gast)


Lesenswert?

Tja, der 4433 hat ja auch kein SPH, braucht er auch nicht, da nicht mehr 
als 256 Byte RAM da sind. Insofern geht die Fehlermeldung in Ordnung, da 
SPH beim 4433 eben nicht definiert ist. Schmeiß die Zeilen raus und gut 
ist.

von lopder (Gast)


Lesenswert?

wow ging das schnell mit der antwort :)

so sieht der ganze source aus

;----------------------------
; buttons.asm
; digitale Eingabe und Ausgabe
;----------------------------

.include "4433def.inc"

.def temp = r16
;---- IRQ Sprungtabelle
    rjmp    RESET        ;Reset Handler

RESET:
;---- Initialize stack pointer

        ldi temp, LOW(RAMEND)  ;LOW-Byte der obersten RAM-Adresse
        out SPL, temp
        ldi temp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse
        out SPH, temp

    ldi r16, 0xFF ; 1111 1111
    out DDRB, r16 ; Port B output
    ldi r16, 0x00 ; 0000 0000
    out DDRD, r16 ; Port D input

loop:
    in r16, PIND  ; Eingabe von Port D
    out PORTB, r16 ; Ausgabe zu Port D
    rjmp loop

wie gesagt ein beispiel für den 4433 ...
aber es ist in jedem diese zeile drinn ...
und ich darf die zeile einfach weglassen
und das programm funktioniert gleich .. ??

abgesehen davon muss ich hier überhaupt den stackpointer initalisieren 
?? der wird ja nur benutzt wenn ich was mit call aufrufe oder ??

von crazy horse (Gast)


Lesenswert?

Jo, in diesem Programm brauchst du den SP tatsächlich nicht, aber 
solchen Schluderkram  sollte man sich gar nicht erst angewöhnen. Der SP 
wird immer initialisiert, basta. Die eine Zeile tut nicht weh, die 
eingesparten Bytes nutzen auch nichts (kein Programm, daß den gesamten 
Speicher füllt, kommt ohne SP aus). Schmeiß die 2 Zeilen raus (oder setz 
ein ";" davor), aus die Maus.

von lopder (Gast)


Lesenswert?

gut danke ! nochmal :)

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.