mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm aus Tutotial Eeprom Fehlermeldung


Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe versucht aus dem Tutorial das Programm EEprom nach Mega 8
umzuändern aber ich bekomme immer bei den Befehlen
        ldi r19, HIGH(address)              ; Adresse laden
        ldi r20, LOW(address)
Eine Fehlermeldung Undifinierd Variabel

Was kann das sein ?

Vielen Dank im vorraus

Gruß

Jürgen

anbei noch der vollständige Code

.include "m8def.inc"

.def temp             = r16
.def address          = r17
.def data             = r18
.def temp1            = r19
.def Temp2            = r20
.def temp3            = r21

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

           ldi temp, 0xFF    ;Port C = Ausgang
           out DDRC, temp1

            rcall lcd_init     ;Display initialisieren
           rcall lcd_clear    ;Display löschen
           ldi temp1, 'M'     ;Zeichen anzeigen
           rcall lcd_data
           ldi temp1, 'e'     ;Zeichen anzeigen
           rcall lcd_data


        ldi r19, HIGH(address)              ; Adresse laden

        ldi r20, LOW(address)
        rcall eep_print





loop:   rjmp loop

eep_print:
        out EEARH, r19
        out EEARL, r20
        sbi EECR, EERE                    ; Lesevorgang starten
        in data, EEDR                     ; gelesenes Byte nach
"data"
        tst data                          ; auf 0 (Stringende testen)
        breq eep_print_end                ; falls 0, Funktion beenden
        rcall lcd_data                    ; ansonsten Byte senden...
        inc address                       ; ... Adresse um 1
erhöhen...
        rjmp eep_print                    ; ... und zum Anfang der
Funktion
eep_print_end:
        ret


.include "m2.asm"            ;LCD-Routinen werden hier eingefügt


.eseg
text1:
.db "Strings funktionieren auch ", 0

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
als HIGH(addess), LOW(address) musst du die Address von text1 einsetzen,
also HIGH(text1) und LOW(text1). Du must ja diese Addresse auch auf
Daten im EEPROM zeigen lassen.

Gruß Hagen

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank, manchmal übersieht man die kleinsten Fehler. Habe noch ein
Bug entdeckt aber trotzdem habe ich nur einen schwarzen Balken, was
kann das sein?

Gruß

Jürgen

.include "m8def.inc"

.def temp             = r16
.def address          = r17
.def data             = r18
.def temp1            = r19
.def Temp2            = r20
.def temp3            = r21

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

           ldi temp, 0xFF    ;Port C = Ausgang
           out DDRC, temp1

            rcall lcd_init     ;Display initialisieren
           rcall lcd_clear    ;Display löschen
           ldi temp1, 'M'     ;Zeichen anzeigen
           rcall lcd_data
           ldi temp1, 'e'     ;Zeichen anzeigen
           rcall lcd_data


       ldi r19, HIGH(text1)              ; Adresse laden
       ldi r20, LOW(text1)
        rcall eep_print





loop:   rjmp loop

eep_print:
        out EEARH, r21
        out EEARL, r20
        sbi EECR, EERE                    ; Lesevorgang starten
        in temp1, EEDR                     ; gelesenes Byte nach
"data"
        tst temp1                          ; auf 0 (Stringende testen)
        breq eep_print_end                ; falls 0, Funktion beenden
        rcall lcd_data                    ; ansonsten Byte senden...
        inc r19                           ; ... Adresse um 1
erhöhen...
        inc r20                           ; ... Adresse um 1
erhöhen...
        rjmp eep_print                    ; ... und zum Anfang der
Funktion
eep_print_end:
        ret


.include "m2.asm"            ;LCD-Routinen werden hier eingefügt


.eseg
text1:
.db "Strings funktionieren auch ", 0

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Schwarzer Balken? Da wird wohl das
<lcd_init     ;Display initialisieren

falsch sein,oder der Kontrast ist zu hoch.

MFG Uwe

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.