mikrocontroller.net

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


Autor: lopder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: lopder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ??

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: lopder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gut danke ! nochmal :)

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.