Hallo, endlich bin ich mal dazugekommen ein neues Tutorial-Kapitel zu schreiben. Es erklärt ausführlich (und hoffentlich verständlich) die Ansteuerung eines LCDs im 4bit-Modus. Ihr findet es auf http://www.mikrocontroller.net/tutorial4.htm (ich habe wiedermal die Numerierung geändert). Kritik und Verbesserungsvorschläge sind willkommen, Fragen bitte ins Forum posten! MfG Andreas
Gast
#874
Ich hab ein kleines Makro geschrieben, mit dem es möglich ist, recht
einfach einen kompletten String auf dem LCD auszugeben.
Den folgenden Code-Schnipsel einfach in die LCD.inc einfügen.
;------String auf LCD ausgeben----------
.MACRO str_lcd
str_out: lpm ;lädt Byte des Strings adressiert durch ZH und ZL in
R0
and r0, r0 ;Ende des Strings?
breq str_end ; ja?..dann spring!
mov temp, r0 ; sonst Byte in Register "temp" laden
rcall lcd_dta ; Ausgaberoutiene aufrufen
inc zl ; auf nächstes Byte zeigen
rjmp str_out ; und zurück...weitere Bytes einlesen
str_end: ;String ausgegeben :)
.ENDMACRO
;---------------------------------------
Im eigentlichen Programm werden nur 3 Zeilen benötigt, um einen String
auzugeben:
rcall lcd_init
rcall lcd_clr
.
.
.
LDI ZH,HIGH(2*bsp1) ;Die Adresse des Strings bsp1 wird in ZH
und ZL hinterlegt
LDI ZL,LOW(2*bsp1)
str_lcd ;ruft das Makro auf
Und so wird der String am Ende des Programms definiert
bsp1: .db "Irgend ein Text",0x00
Gast
#875
Hätt ich mir wohl sparen können. Hab gerade im Forum etwas ähnliches gelesen :| Naja... Ciao Steffen
Hallo, ursprünglich war eine ähnliche Routine im Programm enthalten (wie du es im Forum gefunden hast), ich hatte es jedoch erstmal rausgekürzt und wollte es in einem anderen Tutorial bringen. Nebenbei bemerkt ist es besser, deinen Code mit "call" aufzurufen, da das Programm viel mehr Speicher benötigt wenn das Makro öfter verwendet wird. MfG Andreas
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.