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:
-
Warngeräte für
Grenzwertüberschreitungen
-
Zeitgeber und Zähler
-
Testgeräte für elektronische
Bauteile
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
|