Ein Beispielprgramm das ich kurz aus einem meiner programme zusammengeschnitten hab als Demo mit den wichtigsten Funktionen zur LCD-Ausgabe. Es wird ein Text ausgegeben auf das Display welcher in einer Tabelle ist am Ende und danach in Wert angezeigt (8-Bit).

Code:
'----------------------------------------------------------------------------
' Texte und Werte ausgeben
'----------------------------------------------------------------------------

'I/O-Ports definieren
'--------------------
Define LCDPort        BytePort[2]  'LC-Display Port
Define D4             Port[9]      'LCD D4        4-Bit (D0 / D4)
Define D5             Port[10]     'LCD D5        4-Bit (D1 / D5)
Define D6             Port[11]     'LCD D6        4-Bit (D2 / D6)
Define D7             Port[12]     'LCD D7        4-Bit (D3 / D7)
Define RW             Port[13]     'LCD RW        0=Schreiben / 1=Lesen
Define RS             Port[14]     'LCD RS        0=Befehl    / 1=ASCII
Define EN             Port[15]     'LCD E         Datenübernahme (neg. Flanke)


'Variablen definieren
'--------------------
Define TempWort       Word[9]      'Universelles Temp-Wort (16-Bit) für Berechnungen
Define TempByte       Byte[19]     'Universelles Temp-Byte (8-Bit)  für Berechnungen
Define VarLcdData     Byte[20]     'Datenbyte an/vom LC-Display
Define LcdBuf         Byte[21]     'LCD-Buffer
Define LcdParam       Byte[22]     'Übergabewert an LC-Display.
Define VarTextNr      Byte[23]     'Text-Ausgabe (Nr.)
Define kk             Byte[24]     'Zählvariable


'Assembler-Einsprungpunkte definieren
'------------------------------------
Define LcdCmd         &H0101       'Sys: Kommando an LCD senden
Define LcdChar        &H0107       'Sys: Zeichen an LCD senden
Define LcdPulse       &H0120       'Sys: Impuls an Enable ausgeben


'Konstanten definieren
'---------------------
Define LcdClear               &B00000001
Define LcdCursorHome          &B00000010
Define LcdDisplayEin          &B00001100
Define LcdDisplayAus          &B00001000
Define LcdCursorEin           &B00001110
Define LcdCursorAus           &B00001100
Define Z1S1                   &H80             'Zeile 1 Spalte 1
Define Z1S2                   &H81             'Zeile 1 Spalte 2
Define Z1S3                   &H82             '...
Define Z1S4                   &H83
Define Z1S5                   &H84
Define Z1S6                   &H85
Define Z1S7                   &H86
Define Z1S8                   &H87
Define Z1S9                   &H88
Define Z1S10                  &H89
Define Z1S11                  &H8A
Define Z1S12                  &H8B
Define Z1S13                  &H8C
Define Z1S14                  &H8D
Define Z1S15                  &H8E
Define Z1S16                  &H8F
Define Z2S1                   &HC0             'Zeile 2 Spalte 1
Define Z2S2                   &HC1             'Zeile 2 Spalte 2
Define Z2S3                   &HC2             '...
Define Z2S4                   &HC3
Define Z2S5                   &HC4
Define Z2S6                   &HC5
Define Z2S7                   &HC6
Define Z2S8                   &HC7
Define Z2S9                   &HC8
Define Z2S10                  &HC9
Define Z2S11                  &HCA
Define Z2S12                  &HCB
Define Z2S13                  &HCC
Define Z2S14                  &HCD
Define Z2S15                  &HCE
Define Z2S16                  &HCF
Define EOT                    &H00             'Text Ende-Kennung
Define Schreiben              Off
Define Lesen                  On
Define CommandMode            Off
Define AsciiMode              On
Define Lo                     Off
Define Hi                     On
Define Enabled                Off
Define Diabled                On
Define Down                   Off
Define Up                     On


'ASCII-Codes definieren
'----------------------
Define xA_              &H41      ' A
Define xB_              &H42      ' B
Define xC_              &H43      ' C
Define xD_              &H44      ' D
Define xE_              &H45      ' E
Define xF_              &H46      ' F
Define xG_              &H47      ' G
Define xH_              &H48      ' H
Define xI_              &H49      ' I
Define xJ_              &H4A      ' J
Define xK_              &H4B      ' K
Define xL_              &H4C      ' L
Define xM_              &H4D      ' M
Define xN_              &H4E      ' N
Define xO_              &H4F      ' O
Define xP_              &H50      ' P
Define xQ_              &H51      ' Q
Define xR_              &H52      ' R
Define xS_              &H53      ' S
Define xT_              &H54      ' T
Define xU_              &H55      ' U
Define xV_              &H56      ' V
Define xW_              &H57      ' W
Define xX_              &H58      ' X
Define xY_              &H59      ' Y
Define xZ_              &H5A      ' Z
Define x_a              &H61      ' a
Define x_b              &H62      ' b
Define x_c              &H63      ' c
Define x_d              &H64      ' d
Define x_e              &H65      ' e
Define x_f              &H66      ' f
Define x_g              &H67      ' g
Define x_h              &H68      ' h
Define x_i              &H69      ' i
Define x_j              &H6A      ' j
Define x_k              &H6B      ' k
Define x_l              &H6C      ' l
Define x_m              &H6D      ' m
Define x_n              &H6E      ' n
Define x_o              &H6F      ' o
Define x_p              &H70      ' p
Define x_q              &H71      ' q
Define x_r              &H72      ' r
Define x_s              &H73      ' s
Define x_t              &H74      ' t
Define x_u              &H75      ' u
Define x_v              &H76      ' v
Define x_w              &H77      ' w
Define x_x              &H78      ' x
Define x_y              &H79      ' y
Define x_z              &H7A      ' z
Define xae              &HE1      ' ä
Define xoe              &HEF      ' ö
Define xue              &HF5      ' ü
Define x_0              &H30      ' 0
Define x_1              &H31      ' 1
Define x_2              &H32      ' 2
Define x_3              &H33      ' 3
Define x_4              &H34      ' 4
Define x_5              &H35      ' 5
Define x_6              &H36      ' 6
Define x_7              &H37      ' 7
Define x_8              &H38      ' 8
Define x_9              &H39      ' 9
Define x__              &H20      ' Leerzeichen
Define xPz              &H25      ' %
Define xSt              &H2A      ' *
Define xPl              &H2B      ' +
Define xKo              &H2C      ' ,
Define xMi              &H2D      ' -
Define xDt              &H2E      ' .
Define xDP              &H3A      ' :
Define xGl              &H3D      ' =
Define ESC              27        ' ESC-Zeichen
Define Tab              9         ' Tabulator


'Textbeschreibungen
'------------------
Define TxtVersion1         0      'Hochlauf-Text (nach dem Einschalten)
Define TxtVersion2         13


'Initialisierung des Steuergeräts:
'---------------------------------
'  Nach einem Reset oder nach dem Einschalten wird diese Routine durchlaufen. Dabei
'  wird das digitale Potentiometer und das LC-Display initialisiert.
'  Danach wird für drei Sekunden eine Hochlaufmeldung des Steuergeräts angezeigt.

#Programm
  GoSub LCDReset                                                   'Das LC-Display initialisieren im 4-Bit Modus
  Sys LcdCmd LcdClear
  Pause 1
  'Text-String ausgeben (aus der Tabelle)
  VarTextNr = TxtVersion1
  Sys LcdCmd Z1S1
  GoSub LCDWriteText
  VarTextNr = TxtVersion2
  Sys LcdCmd Z2S1
  GoSub LCDWriteText
  Pause 80
  Sys LcdCmd LcdClear
  'Wert ausgeben
  TempByte = 20
  Sys LcdCmd Z2S11
  GoSub LCDWriteCount8Bit
  End

' Routinen für das LC-Display (2x16 Zeichen):
' -------------------------------------------
'   Das LC-Display wird beim Initialisieren auf 4-Bit Modus umgestellt und arbeitet
'   danach nur noch auf den Datenleitungen D4 bis D7. Dabei werden bei jedem
'   Kommando zuerst das niederwertigere Nibble und danach das höherwertige Nibble
'   übertragen. Es stehen Einzelzeichen und komfortable Textausgaben zur Verfügung,
'   welche den Umgang mit dem Display vereinfachen. Desweiteren kann auch vom
'   Display gelesen werden.

#LCDReset
  'Das LC-Display initialisieren und den Display-Inhalt löschen
  'LC-Display initialisieren im 4-Bit Modus
  LcdPort =  &H80                                                  'Alle Ports auf Low setzen
  Sys LcdCmd &H38                                                  '8-Bit-Modus aktivieren
  LcdPort =  &H82                                                  'Mit 8-Bit Kommando in 4-Bit-Modus umschalten
  Sys LcdPulse
  Sys LcdCmd &H28                                                  'Ab jetzt 4-Bit-Modus
  Sys LcdCmd &H0C

#LCDClearZeile1
  'Erste Zeile im LC-Display löschen
  Sys LcdCmd Z1S1
  GoTo LCDClearZeile

#LCDClearZeile2
  'Zweite Zeile im LC-Display löschen
  Sys LcdCmd Z2S1

#LCDClearZeile
  'Ausgewählte Zeile im LC-Display löschen
  For kk = 1 to 16
    Sys LcdChar &H20
  Next kk
  Return

#LCDWriteCount8Bit
  '8-Bit Integer an Display ausgeben
  kk = TempByte / 100
  If TempByte > 99 Then Sys LcdChar &H30 + kk
  kk = (TempByte - (kk * 100)) / 10
  If TempByte > 9 Then Sys LcdChar &H30 + kk
  kk = TempByte MOD 10
  Sys LcdChar &H30 + kk
  Return

#LCDRead
  'Daten von LC-Display lesen als zwei 4-Byte Blöcke (zuerst Higher, dann Lower)
  Deact D4
  Deact D5
  Deact D6
  Deact D7
  RW = Lesen
  Sys LcdPulse
  VarLcdData = &H0F And (LCDPort ShL 4)
  Sys LcdPulse
  VarLcdData = VarLcdData Or (LCDPort And &H0F)
  RW = Schreiben
  Return

#LCDWriteText
  LookTab TabTexte, VarTextNr, VarLcdData
  If VarLcdData = EOT Then Return
  Sys LcdChar VarLcdData
  VarTextNr = VarTextNr + 1
  GoTo LCDWriteText


'Texte für das LC-Display:
'-------------------------
'  Zeichenfolgen welche als gesamtes ausgegeben werden. Es ist immer eine Einsprung-
'  Adresse vorhanden, ab der die Zeichenfolge steht. Am Ende folgt ein ASCII-Code 0
'  der das Ende der Textausgabe anzeigt, damit die Ausgabe beendet wird und der nach-
'  folgende Text nicht ebenfalls ausgfegeben wird.
'
'  Tabellenstruktur:  ASCII-Zeichen 1,  ASCII-Zeichen 2, ... Ende-Kennung (EOT)

Table TabTexte
  xV_  x_e  x_r  x_s  x_i  x_o  x_n  xDP  x__  x_1  xDt  x_0  EOT                       '0   - Version 1.0
  xW_  x_o  x_l  x_f  x_g  x_a  x_n  x_g  x__  xS_  x_c  x_h  x_m  x_i  x_d  EOT        '13  - Wolfgang Schmid
TabEnd

SysCode "LCD.S19"
Die zugehörige LCD.S19 Datei mit dem Assemblerprogramm von mit das die LCD-Routinen enthält:

Code:
S11B0101A680B7B52004A6A0B7B5B69244444444CD011CB692A40FCD70
S11B0119011C81BAB5B7021C021D02811D01B692B1B727F723093CB73B
S11801311801CD014120ED3AB71901CD014120E41A011B0181AA
S9030000FC
Viel Spass damit.

Grüsse Woflgang[/code]