Programmierung mit
Spion-Basic
Spion-Basic ist eine sehr kleine und einfache
Sprache. Trotzdem können äußerst sinnvolle Programme erzeugt werden.
Die Programmierumgebung des Programms SPY übersetzt kleine
Basic-Programme sehr platzsparend in Tokens, also Zahlen, die für
die einzelnen Befehle stehen. Einige Befehle benötigen noch einen
Byte-Parameter. Jede Zeile wird also entweder in ein Byte oder in
zwei Bytes übersetzt. Insgesamt können Programme also eine maximale
Länge zwischen 15 und 31 Zeilen besitzen.
 Programmieroberfläche
für Spion-Basic
Laden Sie zunächst ein
fertiges Programm wie z.B. Blink.sbd. Es stellt einen einfachen
Blinkgeber dar. Mit der Schaltfläche "Send" wird das Programm in
lauffähiger Form in den Spion übertragen und sofort gestartet. Sie
sehen nun ein gleichmäßiges Blinken der roten LED.
Wenn Sie nun den Spion vom
Stecker des PC abziehen, wird das Programm so lange weiter arbeiten,
bis der interne Akku erschöpft ist. Sie können aber den Reset-Taster
am Gerät drücken und das Programm damit stoppen. Man sieht dann
wieder das kurze Blinken im Sekundentakt. Durch erneutes Drücken des
Reset-Tasters kann das Programm aber wieder gestartet werden.
Wenn ein Programm geladen ist,
kann es fast beliebig lange bereit gehalten werden. Man stoppt es
dazu mit Reset vom PC aus oder am Gerät. Ohne weitere Aktionen
schaltet sich der Spion nach etwa zwei Minuten ab. Sie können das
Gerät dann erst einmal in den Schrank legen. Bei Bedarf nehmen sie
es zur Hand und drücken erneut den Resetknopf. Das alte Programm
beginnt dann wieder mit seiner Arbeit. Man muss nur beachten, dass
ein laufendes Programm natürlich auf die Dauer den Akku entlädt.
Insgesamt kann man bis zu 60 Stunden lang mit dem Gerät arbeiten.
Typische Aufgaben für die Programmierung in
Spion-Basic sind:
Zahlreiche Beispiele befinden
sich auf der Diskette.
Befehlsvorrat Spion-Basic kennt direkte Ausgabebefehle für die
Ansteuerung der Hardware. Ausgang = 1 Einschalten des digitalen
Ausgangs Ausgang = 0 Ausschalten des digitalen Ausgangs LED =
1 Einschalten der LED LED = 0 Ausschalten der LED Beep
Erzeugen eines Signaltons
Die wichtigsten Befehle zur Programmsteuerung sind
GOTO und END. Weitere Sprungbefehle arbeiten zusammen mit Variablen,
die weiter unten vorgestellt werden. Wartezeiten zwischen 1/16 s und
ca. 15 s erzeugt man mit dem Pause-Befehl. Mit End wird ein Programm
beendet und der Grundmodus eingeschaltet. Mit Sleep schaltet man den
Spion ab.
Goto 1 Sprungbefehl
End Rückkehr in den
Direktmodus
Sleep Abschalten des Spions
Pause 16 Wartezeit in
Einheiten von 1/16 Sekunden
Cmal Goto 2 Zählschleife mit C
Dmal Goto 3 Zählschleife mit D
If A = B Goto Bedingter
Sprungbefehl, Sprung wenn A gleich B
If A < B Goto Bedingter
Sprungbefehl, Sprung wenn A kleiner B
If A > B Goto Bedingter
Sprungbefehl, Sprung wenn A größer B
Spion-Basic kennt vier
Variablen A, B, C und D. Sie nehmen grundsätzlich nur Bytes auf,
also Zahlen im Bereich 0 bis 255.
A dient der Erfassung von
Messwerten. Alle Messungen und die Abfrage des digitalen Eingangs
weisen ihr Ergebnis A zu. A erhält immer das Ergebnis von
Rechenoperationen. Außerdem kann A ein Byte von der seriellen
Schnittstelle abfragen oder aussenden.
A = 100 Zuweisung einer
konstanten Zahl
A = B Zuweisung des Inhalts
von B
A = A + B Addition
A = A - B Subttraktion
A = A + 1 Inkrementieren
A = A - 1 Dekrementieren
Input A Eingabe von der
Schnittstelle
Print A Ausgabe über die
Schnittstelle
A = Spannung Spannungsmessung
A = Licht Lichtmessung
A = Temperatur
Temperaturmessung
A = Lärm Lärmmessung
A = Widerstand
Widerstandsmessung
A = Eingang Lesen des
digitalen Eingangs
A = Batterie Messung der
Batteriespannung
Lärm aus Abschalten des
Mikrophonverstärkers
Alle Messungen mit Sensoren
oder Eingängen liefern ihr Ergebnis in A zurück. Man kann in einem
Programm mit mehreren Sensoren arbeiten. Bei der Lärmmessung muss
beachtet werden, dass intern ein spezieller Verstärker erst
eingeschaltet wird. Die erste Messung sollte verworfen werden, weil
der Verstärker erst einschwingen muss. Soll nach dem Ende von
Lärmmessungen ein anderer Sensor abgefragt werden, dann muss vorher
mit "Lärm aus" der Mikrophonverstärker abgeschaltet werden.
Die Variable B dient
ausschließlich zum Vergleich mit A (If A > B Goto) und für
Rechenoperationen mit A (A = A + B). B kann nur entweder eine
Konstante Zahl oder der aktuelle Wert von A zugewiesen werden.
A = B Zuweisung des Inhalts
von A
B = 255 Zuweisung einer
konstanten Zahl
Beispiel: Langzeittimer
Der Spion kann mit einem
geeigneten Programm leicht als Timer eingesetzt werden. Das Programm
Timer1.sbd generiert eine Wartezeit von 5 Minuten zum Beispiel für
den Einsatz beim Eierkochen. Das Programm schaltet die LED auf
Dauerleuchten, so dass man jederzeit einen Überblick hat, ob die Uhr
noch läuft. Nach 5 Minuten wird ein dreifacher Signalton erzeugt und
die LED abgeschaltet.
Der Pause-Befehl des
Umweltspions verwendet ein Zeitintervall von 1/16 Sekunde. Mit Pause
16 erhält man daher eine Sekunde. Eine Wiederholschleife mit 60
Durchläufen erzeugt eine Wartezeit von einer Minute.
PROGRAMM 1 LED =
1 2 D = 5 3 C = 60 4
Pause 16 5 Cmal Goto 4 6 Dmal Goto
3 7 BEEP 8 Pause 8 9
BEEP 10 Pause 8 11 BEEP 12 LED = 0 13 END
Listing: Ein 5-Minuten-Timer
Das Programm verwendet zwei
Schleifen, die ineinander geschachtelt sind. Die innere Schleife mit
der Zählvariablen C erzeugt eine Wartezeit von einer Minute, die
D-Schleife wird fünf mal durchlaufen, um insgesamt fünf Minuten zu
warten. Nach genau fünf Minuten schaltet sich die LED aus, und ein
dreifacher Signalton ertönt. Dann geht der Spion in seinen
Grundzustand, was man am Sekundenblinken der LED erkennt. Nach
weiteren zwei Minuten schaltet sich das Gerät ganz ab. Es genügt ein
Druck auf Reset, um den Zeitgeber erneut zu
starten.
Datenprotokoll des
Spions
Der Spion hat ein relativ
einfaches Protokoll mit einer überschaubaren Anzahl von Kommandos.
Alle Kommandos können sowohl im Offline-Modus wie auch im
Programm-Modus verwendet werden.
Die serielle Schnittstelle des
Geräts arbeitet mit 9600 Baud, 8 Datenbits, 1 Stoppbit und ohne
Parity. Über die Handshakeleitungen DTR und RTS steuert man das
Aufladen des internen Akkus und den Prozessor-Reset.
Die folgende Übersicht zeigt
alle verfügbaren Kommandos.
Kennung
1 Interaface-Kennung : Antwort
= 32 (Nur im Direktmodus)
Zuweisungen
2,n A=n
3,n B=n
4,n C=n
5,n D=n
6 A=B
7 B=A
8 C=A
9 D=A
Ausgaben
10 Ausgang=1
11 Ausgang=0
12 LED=1
13 LED=0
14 Beep
15 Print A (Byteausgabe an
RS232)
16 Lärm-Power-Off
17 LED blinkt im Sekundentakt
Eingaben
analog
20 A=Spannung
21 A=Licht
22 A=Temperatur
23 A=Widerstand
24 A=Lärm (incl Lärm-Power-ON)
25 A=Ubat
digital:
26 A=Eingang
RS232:
27 Input A (Byte von RS232)
Programmverzweigungen
30,n goto n
31,n C=C-1: if C>0 goto n
32,n pause n
33 end
34,n if A=B goto n
35,n if A>B goto n
36,n if A<B goto n
37,n D=D-1: if D>0 goto n
Rechnen
40 A=A+B
41 A=A-B
42 A=A+1
43 A=A-1
EEPROM
50,adr PutEE Ein Byte ins
EEPROM an adr laden
51,adr Programm im EEPROM ab
adr starten
Speicherbelegung; 1, max 63
Basic-Tokens
52,adr GetEE Byte von Adr. aus
dem EEPROM lesen
Messserie
53 Messserie starten
Speicherbelegung: Kanal 20..24, Time-Hi, Time-Lo,
61 Messwerte
Abschalten
128 Power down < 1µA,
Aufwecken mit Reset (RTS-Hi-Flanke)
Literatur: B.Kainka, Messen, Steuern, Regeln mit dem PC in Haus und
Garten, Franzis-Verlag 2000 |