SIOSBAS
- BASIC52 für das SIOS-Interface -


Der bekannte BASIC-Interpreter 8052AH-BASIC von Intel ist ein leistungsfähiges System für 8052-Mikrocontroller. Das System wurde für das SIOS-Interface angepaßt und um einige spezielle Befehle erweitert. Damit besteht nun die Möglishkeit, das SIOS auch mit BASIC-Programmen autonom betreiben zu können. SIOSBAS.EXE ist ein integriertes Editor- und Terminalprogramm für autonome BASIC-Programme im SIOS-Interface.

Das SIOS-Basic ist bei der Firma Modul-Bus (www.ak-modul-bus.de) als Diskette mit Interpreter und Editor/Terminal unter DOS und Windows erhältlich. Beim Start des Terminal-Programms wird der Basic-Compiler in das RAM des SIOS geladen.

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:

3 Befehlsübersicht

Die folgende Übersicht zeigt die wichtigsten Befehle und Funktionen des BASIC-52. Zahlreiche Sonderfuntionen sind speziell an die Umgebung des Mikrocontrollers angepaßt. Einige originale BASIC52-Befehle sind mit dem SIOS-Interface nicht nutzbar und werden hier nicht aufgeführt. Vier neue Befehle wurden speziell für das SIOS hinzugefügt.

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 für 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 Unterstützung der speziellen Ein- und Ausgänge des SIOS 
wurden vier neue Befehle entwickelt:

OutPort  (Schreiben und Lesen)
        OutPort 255             schaltet Ausgänge DO0...DO7 an
        A = Outport             liest die Ausgangszustände zurück
        Outport = Outport + 2   liest und ändert die Ausgänge

InPort   (nur Lesen)    
        B = Inport              liest die Zustände 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 Meßbereiche der Analogeingänge betragen 0 bis 5 V für die vorderen Eingänge A (AD (0)) und B (AD (1)) und 0 bis 2,5 V für die Sensoranschlüsse C (AD(2)) und D (AD(3)) am hintern Rand des SIOS. Die Meßbereiche lassen sich jedoch in weiten Grenzen verändern, wie weiter unten noch gezeigt wird. Die Eingänge A und B besitzen einen Eingangswiderstand von 100 kW, während die Eingänge C und D hochohmig sind und deshalb als offene Eingänge zufällige Spannungswerte zeigen.

Die Analogausgänge besitzen einen Ausgangsspannungsbereich von 0 bis 5 V. Die Ausgänge A (DA 0, ..) und B (DA 1,..) sind an den vorderen Anschlüssen zugänglich und verfügen über Leistungsausgänge mit einer Belastbarkeit bis ca. 0,3 A. Die Ausgänge C (DA 2,..) und D (DA 3,..) bilden die Referenzspannung der Sensoranschlüsse C und D und sind im Normalfall auf 2,5 V eingestellt. Als Analogausgänge ohne Leistungsverstärker haben sie den Vorteil einer größeren Genauigkeit und einer kleineren Offset-Spannung.

Der Anwender hat die Möglichkeit, die Meßbereiche des AD-Wandlers für jeden Eingangskanal getrennt zu verändern. Verantwortlich für die Meßbereiche sind die Inhalte von vie Speicherstellen im internen RAM, des Mikrocontrollers, die mit DBY gelesen und verändert werden können. 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

Für jeden der vier Eingänge kann der Meßbereich 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 müssen einen Mindestabstand von 1,25V einhalten. Beispiel: 84h bewirkt den Meßbereich 1,25V-2,5V. Ausnahme: 00h=0.5V. Die eingegebenen Meßbereiche ersetzen die Standardbereiche von 5V, 5V, 2,5V und 2,5V.

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 Ausgängen. Die Programmausführung wurde durch eine Warteschleife verzögert, damit die Veränderung der Bitmuster gut beobachtet werden kann.

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

TEST3.BAS zeigt ein Beispiel für die Spannungmessung an den Eingangskanälen 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 Meßbereich 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".

TEST4.BAS demonstriert die Ausgabe von Analogwerten an den Analogausgängen A und B. An DA werden Werte im Bereich 0...255 entsprechend einem Spannungsbereich 0...5V übergeben. Im Beispiel werden beide Ausgangskanäle mit gegenphasigen, langsamen Sinusfunktionen angesteuert. Die Geschwindigkeit der Signale läßt sich z.B. durch die Angabe "STEP 1" vergrößern. Die entstehenden Ausgangssignale eignen sich zur direkten Ansteuerung von Lämpchen oder Gleichstommotoren.

Das Programm TEST5.BAS verwendet den Analogeingang A und die digitalen Ausgänge zum Aufbau einer Leuchtbandanzeige. Der Meßbereich wird in acht gleiche Stufen geteilt, die durch die acht LEDs der Leuchtbandanzeige dargestellt werden.


TEST6.BAS zeigt ein Beispiel für die Verarbeitung analoger Signale mit dem SIOS. Die Spannungslupe arbeitet mit einem veränderten Meßbereich 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 "vergrößert" ablesen zu können. In Zeile 20 wird der Meßbereich für den analogen Eingang A festgelegt. Experimente mit noch kleineren Abständen zwischen Unter- und Obergrenze des Meßbereichs sind möglich, führen aber zu keiner größeren Auflösung als 5 mV, derphysikalischen Auflösungsgrenze des AD-Wandlers.

Weitere Informationen:

SIOS-BASIC mit Autostart-Funktion im ES535-SIOS