6. Beispiel


Digitaler Tongenerator:

Programm „TONGEN.BAS“:


'Digitaler Tongenerator (120...15000Hz) - funktioniert ab Version 1.03g


'Frequenz auf dem Keypad eintippen und mit Return abschliessen. Anzeige auf LCD.

'Ton wird durch Druck auf beliebige Taste gestoppt


10 on err gosub 100

20 lcd1 : cls

30 locate 2,1 : print "Frequenz: " : locate 2,11 : inkey A, 0, 5

40 sound A, 0 : do : wait 3 : loop until  key > 0 : sound 0

50 goto 20


100 return 20

Eine kurze Besprechung:


Zeile 10:

Schaltet den Programmabbruch bei Fehlern aus. Das Programm springt zur Zeile 100, wo die Fehlerbearbeitung erfolgt.


Zeile20:

Ausgabe auf LCD umschalten und Displayinhalt löschen.


Zeile 30:

In die 2. Displayzeile wird „Frequenz: „ geschrieben. Die nächste Schreibposition ist Position 11. inkey setzt den Cursor und wartet auf die Eingabe, die auf 5 Zeichen begrenzt ist. Nach dem Return wird die Eingabe in die Variable A übernommen.


Zeile 40:

sound A, 0  Ton mit Frequenz, die in A gespeichert ist, wird ausgegeben. Die do... loop -schleife wartet auf einen Tastendruck auf dem Keypad. Wird keine Taste gedrückt hat key den Wert 0. wait 3 wartet 300ms zwecks Tastenentprellung.


Zeile 50:

Hier schliesst sich der Kreis. Statt goto hätte man auch eine weitere do -Schleife einsetzen können, dies kann jedoch durch fehlerhafte Eingaben ( und der Fehlerbearbeitung in der folgenden Zeile ) zu Stackfehlern kommen. Daher das gute alte goto...


Zeile 100:

Hier werden fehlerhafte Eingaben „bearbeitet“ - d.h. Es wird lediglich zur Zeile 20 gesprungen und weitergemacht als wäre nichts geschehen. Die Eingabe der Frequenz wird einfach wiederholt. return muss hier trotz Zeilennummer eingegeben werden, damit die gosub-Rücksprungadresse ( on err gosub 100 ) gelöscht wird.


zurück