
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Mit dem Resultat, das ich nicht über das "end funktion" hinauskomme. > Das heißt, kein 2. Piepser ertönt und die Unit hängt sich auf. > Ich habe auch schonmal die LCD initialisierung weggelassen, wobei sich bei einigen wenigen > Versuchen (kompilieren und übertragen) 2 Piepser bemerkbar machten !? > Aber nicht auf dauer. Hallo, vermutlich hast Du das Prinzip von Funktionen nicht verstanden, was vielleicht auch für Neulinge etwas schwierig zu verstehen ist (dafür aber weitgehende Übereinstimmung mit allen anderen gänigen Programmiersprachen übereinstimmt). Ohne expliziten Aufruf führst Du den Code der Funktion: FUNCTION anzeige() dezim = wert *10 /14 'werte umrechnen zehner=dezim /10 'zehner abfragen lcd.print zehner lcd.print "," einer = dezim -(zehner*10) 'einer abfragen lcd.print einer beep 5,5,5 'zur kontrolle END FUNCTION aus. Mit END FUNCTION Springt der Compiler an die Stelle zurück, an der die Funktion ursprünglich aufgerufen wurde (das wird intern von der C-Control im Speicher gesichert). Da jedoch kein Sprungbefehl zur Funktion aufgerufen wurde, sondern der code einfach nach dem Hauptteil weitergefahren ist und zum Code der Funktion kam, springt die C-Control quasi ins Nirvana. Das kannst Du dir im alten CCBASIC so vorstellen: ' tue irgendwas... ' ... pause 50 #test return pause 66 Die letzte Zeile (pause 66) würde hier auch niemals aufgerufen werden, da der Rücksprung nicht gesetzt ist. Damit Dein Code funktioniert müsstest Du also folgendes programmieren: define dezim byte define wert byte define zehner byte define einer byte declare function anzeige() wert = 14 lcd.init lcd.Clear lcd.Pos 1, 4 pause 20 anzeige() beep 10,5,5 end ' Zum Schluss noch Sicherung, dass die C-Control die Funktion nach Beenden des Programms nicht ' ausversehen aufruft. #hang goto hang FUNCTION anzeige() dezim = wert *10 /14 'werte umrechnen zehner=dezim /10 'zehner abfragen lcd.print zehner lcd.print "," einer = dezim -(zehner*10) 'einer abfragen lcd.print einer beep 5,5,5 'zur kontrolle END FUNCTION Meine Homepage: http://www.fdos.de |
| Antwort schreiben |