SIOSBAS fr DOS
- BASIC52 fr das SIOS-Interface -

Der bekannte BASIC-Interpreter 8052AH-BASIC von Intel ist ein leistungsfhiges System 
fr 8052-Mikrocontroller. Das System wurde fr das SIOS-Interface angepat und um 
einige spezielle Befehle erweitert. Damit besteht nun die Mglishkeit, das SIOS auch mit 
BASIC-Programmen autonom betreiben zu knnen. SIOSBAS.EXE ist ein integriertes 
Editor- und Terminalprogramm  fr autonome BASIC-Programme im SIOS-Interface.

Dieses DOS-Programm kann unter Windows 3.1x gestartet werden. Unter Windows95 
luft es nur im MS-DOS Modus zuverlssig.

Dateien auf der Diskette:

SIOSBAS.EXE		Editor- und Terminalprogramm
SIOSBAS.HLP		Befehlsbersicht
SIOSBAS.DOC		Dieser Text
SIOSBAS.BIN		Download-File des Compilers
SIOSLOAD.BIN		SIOS-Ladeprogramm 
*.BAS			BASIC-Beispielprogramme


1 Programmaufruf

Beim Start des Programms wird der BASIC-Interpreter zuerst in den Speicher des SIOS 
geladen und gestartet. Dazu mu SIOS an einer seriellen Schnittstelle (default: COM2) 
angeschlossen und betriebsbereit sein. Das Interface wird beim Start in den Betriebsmodus 
3 gesetzt, den es nur durch Ausschalten der Betriebsspannung wieder verlt. Ein Neustart 
von SIOSBAS ist also nur nach einem Neustart des SIOS mglich.

Fr eine andere Schnittstelle als COM2  mu beim Programmaufruf ein Parameter mit 
angegeben werden, z.B. SIOSBAS 1 fr COM1. Untersttzt wird COM1 bis COM4.

Nach dem Neustart meldet sich der BASIC52-Interpreter mit seiner Einschaltmeldung:

 MCS-51(tm) BASIC V1.1 SIOS
 READY
 >

Nun kann ein erstes Programm eingegeben und gestartet werden:

10     REM Portausgaben (Test1.bas)
20     FOR N=0 TO 255
30    OUTPORT=N
40     FOR I=1 TO 200 :  NEXT I
50     NEXT N
60     GOTO 20
RUN


2 Der Programm-Editor

Ein bliches Terminalprogramm sendet jedes Zeichen von der Tastatur direkt an das 
BASIC-System. Alle Zeichen werden dort zunchst in einem Eingabepuffer mit einer 
Lnge von 79 Zeichen gesammelt und erst nach <RETURN> ausgewertet. Damit der 
BASIC-Text frei editiert werden kann, wurde das Editor- und Terminalprogramm 
SIOSBAS entwickelt.

SIOSBAS fr DOS hat im Grundmodus zwei Textfenster. Im oberen Fenster arbeitet ein 
einfacher Texteditor mit vielen Editierfunktionen.  Ins untere Fenster werden alle vom 
Mikrocontroller gesendeten Zeichen geschrieben. Jedesmal, wenn im Editor ein 
<RETURN> getippt wird, wird die komplette Zeile an den Controller geschickt. Sein Echo 
erscheint dann im Terminalfenster. Der Benutzer kann jede Zeile vor der bertragung 
beliebig editieren. Dies gilt auch fr Zeilen, die bereits weiter oben im Text stehen, und die 
nachtrglich noch einmal gendert werden sollen. Im Terminalfenster lt sich jeweils 
beobachten, ob eine Zeile angenommen wurde oder eine Fehlermeldung auslst.

Der Editor arbeitet immer im Einfgemodus. RETURN innerhalb einer Zeile fhrt aber 
nicht wie in der Textverarbeitung blich zu einem Teilen der Zeile, sondern der Cursor 
springt nur an den Anfang der nchsten Zeile.  Der Cursor kann beliebig mit den 
Pfeiltasten, mit PgUp und PgDn sowie Home und End verschoben werden. Insgesamt 
knnen 512 Zeilen bearbeitet werden.

Spezielle Funktionen des Programms lassen sich ber die Funktionstasten F1 bis F8 
aufrufen:

F1  Hilfefunktion: Es erscheint ein Fenster mit einer Kurzbersicht der BASIC-Befehle.
F2  Save: Das Programm im Editor wird unter einem whlbaren Dateinamen gespeichert.
F3  Load: Ein Programm wird von der Diskette sowohl in den Editor als auch in den 
Controller geladen.
F4  List: Der Programmtext wird aus dem Controller in den Editor bertragen.
F5  Insert: Eine leere Zeile wird in den Text eingefgt.
F6  Zoom: Es wird ein bildschirmfllendes Terminalfenster geffnet, in dem alle Ausgaben 
des Controllers erscheinen. Eingaben werden direkt weitergeleitet.
F7  RUN: Das Programm wird mit "RUN" gestartet.
F8  STOP: Das Programm wird mir CTRL-C unterbrochen.

Natrlich knnen neben Programmzeilen auch Direktkommandos wie NEW, LIST, RUN 
usw. eingeben werden. Zum Testen knnen auch direkte Abfragen erfolgen wie z.B. 
PRINT InPort. Ein Besonderheit des Gesamtsystems ist es, da geladene Programme schon 
im Controller vorhandene Programme nur insoweit berschreiben, wie sie gleiche 
Zeilennummern ersetzen. Man kann daher eine Sammlung von Unterprogrammen anlegen, 
die bei Bedarf hinzugeladen werden. Um ganz neu anzufangen, mu vor dem Laden eines 
Programms NEW eingegeben werden.


3 Befehlsbersicht

Die folgende bersicht zeigt die wichtigsten Befehle und Funktionen des BASIC-52. 
Zahlreiche Sonderfuntionen sind speziell an die Umgebung des Mikrocontrollers angepat. 
Einige originale BASIC52-Befehle sind mit dem SIOS-Interface nicht nutzbar und werden 
hier nicht aufgefhrt. Vier neue Befehle wurden speziell fr das SIOS hinzugefgt.

Kommandos:
RUN  Ctrl-C  CONT  LIST NEW

Operatoren:
+  -  /  *  =  >  >=  <  <=  <> .AND.  .OR.  .XOR.  ABS()  NOT()  INT()  SGN()  SQR()  
RND  LOG()  EXP()  SIN()  COS()  TAN()  ATN()

Statements:
CALL  DATA  READ  RESTORE  DIM  DO-WHILE  DO-UNTIL  END  FOR-TO-STEP  
NEXT  GOSUB  ON-GOTO  ON-GOSUB  IF-THEN-ELSE  INPUT  LET  ONERR  
PRINT  REM  STOP

Erweiterte Statements des BASIC-52:
ONEX1		Unterprogrammaufruf nach Interrupt 1
ONTIME	Timer-Interruptaufruf
RETI		Ende eines Interrupt-Unterprogramms
PH0., PH1.	Ausgabe einer Hexadezimalzahl ohne/mit Nullstellen
PUSH, POP	Daten zum, vom Argument-Stack
STRING	Speicher fr Textstrings reservieren
IDLE		Warten auf Interrupt

Spezialfunktions-Opreratoren und Systemvariablen:
CBY()  DBY()  XBY()  GET  IE  IP PCON T2CON TCON TIME  TIMER0 TIMER2  PI  
XTAL  MTOP LEN  FREE


Zur direkten Untersttzung der speziellen Ein- und Ausgnge des SIOS wurden vier neue 
Befehle entwickelt:

OutPort  (Schreiben und Lesen)
	OutPort 255		schaltet Ausgnge DO0...DO7 an
	A = Outport		liest die Ausgangszustnde zurck
	Outport = Outport + 2 	liest und ndert die Ausgnge

InPort   (nur Lesen)	
	B = Inport		liest die Zustnde von DI0...DI7

AD (Kanal)    (nur Lesen)
	C = AD (0)		Analogeingabe (0..5V) am Eingang A
	C = AD (3)		Messung (0...2,5V) am Eingang C

DA Kanal, Ausgabewert	
	DA 1,100		Analogausgabe am Ausgang B
	DA 2,128		Einstellung der Referenzspannung C

Die Mebereiche der Analogeingnge betragen 0 bis 5 V fr die vorderen Eingnge A (AD 
(0)) und B (AD (1)) und 0 bis 2,5 V fr die Sensoranschlsse C (AD(2)) und D (AD(3)) am 
hintern Rand des SIOS. Die Mebereiche lassen sich jedoch in weiten Grenzen verndern, 
wie weiter unten noch gezeigt wird. Die Eingnge A und B besitzen einen 
Eingangswiderstand von 100 kW, whrend die Eingnge C und D hochohmig sind und 
deshalb als offene Eingnge zufllige Spannungswerte zeigen. 

Die Analogausgnge besitzen einen Ausgangsspannungsbereich von 0 bis 5 V. Die 
Ausgnge A (DA 0, ..) und B (DA 1,..) sind an den vorderen Anschlssen zugnglich und 
verfgen ber Leistungsausgnge mit einer Belastbarkeit bis ca. 0,3 A. Die Ausgnge C 
(DA 2,..) und D (DA 3,..) bilden die Referenzspannung der Sensoranschlsse C und D und 
sind im Normalfall auf 2,5 V eingestellt. Als Analogausgnge ohne Leistungsverstrker 
haben sie den Vorteil einer greren Genauigkeit und einer kleineren Offset-Spannung. 

Der Anwender hat die Mglichkeit, die Mebereiche des AD-Wandlers fr jeden 
Eingangskanal getrennt zu verndern. Verantwortlich fr die Mebereiche sind die Inhalte 
von vie Speicherstellen im internen RAM, des Mikrocontrollers, die mit DBY gelesen und 
verndert werden knnen. Die folgende Tabelle zeigt die vier Steuerregister mit ihren 
Standardwerten.

Zugriff		Default		Einstellung

dby(28)		0		Kanal 0, 0...5V
dby(29)		0		Kanal 1, 0...5V
dby(30)		255		Kanal 2, 0...2,55V
dby(31)		255		Kanal 3, 0...2,55V


Fr jeden der vier Eingnge kann der Mebereich in weiten Grenzen eingestellt werden, 
wobei jeweils eine untere und eine obere Grenze durch einen 4-Bit-Parameter festgelegt 
sind, die zusammen einen Byte-Parameter bilden. Bit 0...3 legt die untere Grenze als 
Vielfaches von 5V/16 fest, Bit 4...7 ebenso die obere Grenze. Beide Referenzspannungen 
mssen einen Mindestabstand von 1,25V einhalten. Beispiel: 84h bewirkt den Mebereich 
1,25V-2,5V. Ausnahme: 00h=0.5V. Die eingegebenen Mebereiche ersetzen die 
Standardbereiche von 5V, 5V, 2,5V und 2,5V.

 
4 Beispielprogramme

Die folgenden Beispielprogramme sollen keinen BASIC-Grundlagenkurs ersetzen, sondern 
in erster Linie den Gebrauch der SIOS-spezifischen Befehle des Interpreters demonstrieren. 

TEST1.BAS erzeugt fortlaufende Portausgaben an den digitalen Ausgngen. Die 
Programmausfhrung wurde durch eine Warteschleife verzgert, damit die Vernderung 
der Bitmuster gut beobachtet werden kann.
 
10     REM Portausgaben (Test1.bas)
20     FOR N=0 TO 255
30    OUTPORT=N
40     FOR I=1 TO 200 :  NEXT I
50     NEXT N
60     GOTO 20

TEST2.BAS zeigt laufend den Zustand der digitalen Eingnge. Es erscheinen abwechselnd 
Ausgaben im Dezimalformat und im Hexadezimalformat.

10     REM Lesen des Eingangsports (Test2.bas)
20     PRINT INPORT
30     FOR I=1 TO 100 :  NEXT I
40     PH0. INPORT :  REM Hexadezimalausgabe
50     GOTO 20

TEST3.BAS zeigt ein Beispiel fr die Spannungmessung  an den Eingangskanlen A und 
B. Die Funktion AD liefert Bytes im Wertebereich 0 ... 255. Zur Umrechnung in die 
gemessene Spannung in Volt wird hier durch 50 geteilt. Damit entstehen Spannungsstufen 
von genau 20 mV und der Mebereich ist 0...5,1V. Der Skalierungsfehler von 0,1 V oder 
2% entspricht etwa der Genauigkeit der Messung. Will man exakt auf einen Endwert von 
5,0 V skalieren, lautet die Umrechnung (AD(0))/255*5. 

10     REM Spannungsmessung an Kanal 0 (A) und 1 (B) (test3.bas)
20    U1=(AD(0))/50
30    U2=(AD(1))/50
40     PRINT U1,U2
50     FOR I=1 TO 200 :  NEXT I
60     GOTO 20

TEST4.BAS demonstriert die Ausgabe von Analogwerten an den Analogausgngen A und 
B. An DA werden Werte im Bereich 0...255 entsprechend einem Spannungsbereich 0...5V 
bergeben. Im Beispiel werden beide Ausgangskanle mit gegenphasigen, langsamen 
Sinusfunktionen angesteuert. Die Geschwindigkeit der Signale lt sich z.B. durch die 
Angabe  STEP 1 vergrern. Die entstehenden Ausgangssignale eignen sich zur direkten 
Ansteuerung von Lmpchen oder Gleichstommotoren.

10     REM Analogausgabe, Sinus-Signale
20     FOR T=1 TO 360 STEP 5
30     DA 0,128+INT(127*SIN(T/360*2*PI))
40     DA 1,128-INT(127*SIN(T/360*2*PI))
50     NEXT T
60     GOTO 20

Das Programm TEST5.BAS verwendet den Analogeingang A und die digitalen Ausgnge 
zum Aufbau einer Leuchtbandanzeige. Der Mebereich wird in acht gleiche Stufen geteilt, 
die durch die acht LEDs der Leuchtbandanzeige dargestellt werden. 

10     REM Leuchtbandanzeige  (test5.bas)
20    ANZAHL=INT((AD(0))/32+0.5)
25     PRINT ANZAHL
30     ON ANZAHL GOSUB 100,110,120,130,140,150,160,170,180
40     GOTO 20
100   OUTPORT=0 :  RETURN 
110   OUTPORT=080H :  RETURN 
120   OUTPORT=0C0H :  RETURN 
130   OUTPORT=0E0H :  RETURN 
140   OUTPORT=0F0H :  RETURN 
150   OUTPORT=0F8H :  RETURN 
160   OUTPORT=0FCH :  RETURN 
170   OUTPORT=0FEH :  RETURN 
180   OUTPORT=0FFH :  RETURN 

TEST6.BAS zeigt ein Beispiel fr die Verarbeitung analoger Signale mit dem SIOS. Die 
Spannungslupe arbeitet mit einem vernderten Mebereich am Eingang A. Ein kleiner 
Bereich mit einer Breite von 1,25 V wird auf den gesamten Ausgangsbereich von 0...5V 
des DA-Wandlers umgesetzt. Am Ausgang kann ein Zeiger-Voltmeter angeschlossen 
werden, um die geringen nderungen einer Spannungsquelle vergrert ablesen zu 
knnen. In Zeile 20 wird der Mebereich fr den analogen Eingang A festgelegt. 
Experimente mit noch kleineren Abstnden zwischen Unter- und Obergrenze des 
Mebereichs sind mglich, fhren aber zu keiner greren Auflsung als 5 mV, 
derphysikalischen Auflsungsgrenze des AD-Wandlers.   

10     REM Spannungslupe (test6.bas)
20    DBY(28)=0C8H :  REM 2,5V - 3,75V
30    A=AD(0)
40     PRINT 2.5+A/200," V"
50     DA 0,(A)
60     GOTO 30





5



