Ich habe mir hier aus dem Tutorial die LCD-Routine heruntergeladen und wollte mit der einen Text ausgeben, hier der kurze Quellcode: .include "m32def.inc" .include "lcd_routines.asm" .def temp1 = r16 .def temp2 = r17 .def temp3 = r18 ldi temp1, LOW(RAMEND) out SPL, temp1 ldi temp1, HIGH(RAMEND) out SPH, temp1 rcall lcd_init rcall lcd_clear ldi ZL, LOW(text*2) ldi ZH, HIGH(text*2) rcall lcd_flash_string loop: rjmp loop text: .db "Hallo Welt!",0 Durch den Debugger habe ich herausbekommen, dass die lcd_routines beim intialisieren des Displays beim ersten "ret" in der Routine LCD_Enable falsch zurückspringt: ;sendet ein Datenbyte an das LCD lcd_data: [...] rcall lcd_enable andi temp2, 0b00001111 [...] lcd_enable: [...] ret [...] Hier springt der Debugger nicht zu der Zeile "andi [...]" sondern auf den ersten Befehl nach lcd_data. Da ich noch relativ unerfahren mit dem Zeug bin: Wo kann ich nach meinem Fehler suchen? Wie gesagt, die Routine selbst ist hier heruntergeladen und es wurden nur die Portpins geändert.
Ok, gerade den Fehler herausbekommen: dadurch dass ich die Routine der übersichtlichkeit halber am Anfang "includen" wollte, wird diese als erstes durchgearbeitet und dann stimmen die Stack-Adressen noch nicht. Trotzdem scheint das Ding das LCD nicht richtig zu initialisieren... erst seitdem ich die runtergeladene Routine benutze, mit der alten gings einwandfrei... hmm.. ma weitergucken ;-)
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.