Ok, danke!

"Curser off" ist klar

Ich glaub Lowerline und und Upperline statt "locate x,y" sollten deckungsgleich sein. Jedenfalls sind die beiden erstgenannten Befehle in der Hilfe explizit aufgeführt. Ich hab's mal getetstet und alles durch locate Befehle ersetzt - leider gleiches Ergebnis.

Initlcd braucht man IMHO nicht - die Hilfe sagt dazu folgendes:
The LCD display is initialized automatic at start up when LCD statements are used by your code.

If fore some reason you would like to initialize it again you can use the INITLCD statement.
hwstack, swstack und framesize hatte ich bei den Compileroptionen eingetragen - greift dann ja hoffentlich auch. Sicherheitshalber hab ich es jetzt nochmal in den Code übernommen.

Config Debounce brauch ich doch auch nur, wenn ich nicht die 25ms Standardzeit haben will, oder?

Mein Code sieht jetzt so aus: (Die LED-aufrufe sind zu debugzwecken)

Code:
$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 10
$framesize = 40



'**** Konstanten ****

Const Fw_rev = "0.9"




'**** LCD Initialisieren ****

Dim ___lcdno As Bit
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.5 , Db6 = Porta.7 , Db7 = Porta.2 , E = Porta.0 , Rs = Porta.1




'**** Variablendeklaration ****


Config Debounce = 30


'**** Ports etc. Parametrieren ****


Config Portd.0 = Input
Config Portd.1 = Input
Config Portd.2 = Input
Config Portd.3 = Input

Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input

Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output


'**** Sprungverteiler

Initlcd
Cls
Cursor Off

Do

   Locate 1 , 1
   Lcd " *** Test 1 *** "
   Locate 2 , 1
   Lcd "Lrn Prg Tst Fw?"



   Debounce Pind.0 , 0 , Pr , Sub
   Portb.2 = 1

Loop

End


Pr:
   Cls
   Locate 2 , 1
   Lcd "test1"
   Portb.0 = 1
   Wait 1
   Portb.1 = 1
Return

Leider gleiches Ergebnis - funktioniert nicht. Die LEDs zeigen mir, dass er zum Label springt.

Wie ist denn das? Der Code wird doch sequenziell abgearbeitet, oder? Eigentich sollte doch der Code zwischen Do ... Loop erst weiter ausgeführt werden wenn mit return aus dem Sub zurückgesprungen wird, oder?
Wenn das nämlich nicht so wäre, dann würde ja u.U. schon wieder der alte Texte ins Display geschieben...