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
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
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
Hi! Schwarzer Balken? Da wird wohl das <lcd_init ;Display initialisieren falsch sein,oder der Kontrast ist zu hoch. MFG Uwe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.