TLScript - Sprachumfang
Elektronik-Labor
Projekte
Mikrocontroller
TLScript

TestLab Script kennt nur vier Byte-Variablen, A, B, C und D. Dabei ist A
die wichtigste davon, vergleichbar mit dem Akku früherer Mikrocontroller. Alle
Rechenergebnisse landen in A, und über A kann man Daten an Ausgänge übertragen
oder von Eingängen lesen. B wird als zweite Variable in Rechnungen verwendet. C
und D werden hauptsächlich für Zählschleifen gebraucht.
Es gibt ein 256 Bytes großes Datenarray, das den Adresszähler B verwendet. Mit
jedem Schreib- oder Lese-Zugriff wird B um 1 erhöht.
Es gibt acht digitale IO-Pots an P0 bis P7, die als ein Byte behandelt werden.
Die Datenrichtung wird mit Pdir = festgelegt. Portausgaben können mit Pout =
Konstante oder mit Pout = A erfolgen. Pullup- und Pulldown-Widerstände
können mit Pullup = Konstante und Pulldown = Konstante eingeschaltet werden.
Zwei quasi-analoge PWM-Ausgange PWM1 und PWM2 haben eine
Auflösung von 8 Bit. Die PWM-Ausgabe kann über eine Konstante (0…255) oder
über eine Zuweisung des Inhalts von A erfolgen.
Drei analoge Eingänge AD0, AD1 und AD3 können mit einer Auflösung von 8 Bit
abgefragt werden, wobei das Ergebnis in A landet.
Zuweisung von Konstanten
A =, B =, C = D = Die im Feld rechts daneben
eingegebene Zahl wird der Variablen als Konstante zugewiesen.
PWM1 =, PWM2 = Die Byte-Konstante (0…255) rechts wird
an einen PWM-Ausgang gesandt.
Label L steht für eine Adresse, die angesprungen werden kann. Die
Konstante steht zuerst auf 0 und wird mit jedem neunen Label um 1 erhöht, L1,
L2, L3 usw.
Jmp L1, JMP L2 usw. Ein Sprung zum angegebenen Ziel. Die Nummer des
Labels wird als Konstante eingegeben.
Call L1, Call L2 Aufruf eines Unterprogramms, das mit Ret
abgeschlossen wird.
If A=B Jmp L, If A>B Jmp L, If A<B Jmp L Ein Sprung
zum Label L, wenn der Vergleich von A und B wahr ist.
C*Jmp L, D*Jmp L Zählschleifen, es wird so oft nach L gesprungen,
wie in C bzw. D angegeben wurde.
Delay µs =, Delay ms =, Delay s =, Delay min = Wartebefehle mit
konstanter Wartezeit in Mikrosekunden bis Minuten

Rechenbefehle
A = A + 1 bis A = NOT A stehen für Rechenoperationen, deren Ergebnis
grundsätzlich in A erscheint
Zuweisungen
B = A bis A = D Der Inhalt einer Variablen wird in
eine andere Variable kopiert.
A = [B+] Der Inhalt des Daten-Arrays wird an der Adresse B
ausgelesen und in A kopiert. B wird um 1 erhöht.
[B+] = A Der Inhalt von A wird an der Adresse B des
Daten-Arrays geschrieben. B wird um 1 erhöht.
A = AD0 bis A = AD2 Ein analoger Eingang wird
ausgelesen und das Byte-Ergebnis in A übergeben.
A = Din Alle acht digitalen Ports werden gelesen und
als ein Byte in A übergeben.
A = Din0 Nur der Zustand des ersten digitalen Ports wird
gelesen und als 1 oder 0 in A übergeben.
Input A Wenn ein Byte vom PC gesendet wurde, wird es A zugewiesen,
ansonsten bleibt A unverändert.
Print A Der Inhalt von A wird an den PC gesendet.
PWM1 = A, PWM2 = A Der Inhalt von A wird über den
angegebenen PWM-Ausgang ausgegeben.
Pout = A Alle acht digitalen Ausgänge werden entsprechend
dem Inhalt in A gesetzt.
Programmsteuerung
Ret Rücksprung aus einem Unterprogramm an die dem Aufruf
folgende Adresse.
End Ende eines Programms in einer Endlosschleife.
Nop Ein Leerbefehl, der nichts tut, aber einige Mikrosekunden
verbraucht und als geringe Verzögerung eingesetzt werden kann.
Rem Ein Kommentar im Quelltext
Ein Klick auf Open öffnet ein Dateimenü mit zahlreichen Beispiel-Scripts,
die man in das Editor-Fenster laden kann. Darin sieht man in jeder Zeile links
den übersetzten Code und recht die Script-Zeile. Der übersetzte Code besteht
aus einer 16-Bit Hexzahl, wobei das linke Byte für den Befehl und das rechte
Byte für die Daten steht. Im Verzeichnis Start findet man die einfachsten
Scripts, die sich gut für die erste Einarbeitung eignen.

Ein Programm (Script) kann mit Run gestartet werden. Dabei werden die
Codes an den Controller gesendet und ausgeführt. Voraussetzung ist, dass die
TestLab-Firmware geladen wurde und die korrekte COM-Nummer gewählt wurde. Ein
mit Run übertragenes Programm geht mit dem Ausschalten des Controllers
verloren. Wenn ein Programm für den dauerhaften Einsatz gedacht ist, muss es
mit einem Klick auf EEPROM übertragen werden. Es läuft dann ebenfalls sofort, wird
aber auch nach einem Reset des Controllers oder nach einem neuen Einschalten
sofort gestartet.
Ein geladenes Programm kann verändert und mit Save unter demselben Namen wieder
gespeichert werden. Oder man editiert den Programmnamen und behält so das alte
Programm. Wenn man mit New ein leeres Programm erzeugt und neu eingibt, kann
ein neuer Programmname eingegebenen werden, wobei die Endung .tls automatisch
angefügt wird.
Eine Programmzeile erzeugt man durch Anklicken des entsprechenden Befehls. Neue
Befehle werden immer vor die gerade markierte Zeile angefügt. Man kann jedoch
nachträgliche Änderungen eingeben, indem man eine Zeile durch Anklicken
markiert, mit der Entf-Taste löscht und dann durch einen neuen Befehl ersetzt. Durch
Löschen oder Einfügen von Zeilen können sich die Adressen vorhandener Labels
ändern. Sie werden automatisch angepasst, sodass die Sprungziele korrekt
bleiben.
Bei jedem Programmstart sieht man im unteren Fenster die an den Controller übertragenen Daten. P 5 bedeutet, dass fünf Befehle übertragen werden sollen. Es folgen die fünf 16-Bit-Zahlen im Dezimalformat. Es handelt sich dabei um dieselben Daten, die in der linken Spalte des Programmfensters in hexadezimaler Form zu sehen sind.
Programmzustand beim Start
Beim Start eines neuen Programms werden alle vier Variablen A bis D auf null gesetzt. Anders ist es mit dem Datenspeicher, der mit A = [B+] ausgelesen werden kann. Er behält seinen Inhalt über einen Programmstart hinweg. Man kann den Speicher daher mit einem Programm füllen und mit einem anderen Programm auslesen.
Alle Portzustände und der Zustand der PWM-Ausgänge bleiben ebenfalls bei einem Neustart erhalten. So kann man z.B. den zuletzt erreichten Portzustand des letzten Programms im folgenden Programm auslesen.
Anders verhält sich TLScript nach einem Hardware-Reset. Danach sind alle Ports Eingänge, die PWM-Ausgange sind im Zustand 0 und der Datenspeicher enthält nur noch Nullen. Wenn ein PicoBasic-Programm von diesem Grundzustand aus gestartet werden soll, kann man den Controller neu einschalten oder resetten.