Neues Tutorial-Kapitel: LCD

Admin Persönliche Seite #873
Lesenswert?

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
Lesenswert?

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
Admin Persönliche Seite #876
Lesenswert?

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.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren