ES537 - Anwenderhandbuch


1. Allgemeine Beschreibung

Das Entwicklungssystem ES537 mit 80C537-Prozessor ist ein vielseitiges System sowohl für die Programmentwicklung als auch für den direkten Einsatz als universelles Meß- und Steuerungssystem. Neben der Möglichkeit, Programme über die serielle Schnittstelle in das RAM des Systems zu laden und zu starten, gibt es zahlreiche Di-ektkommandos, die einen Einsatz als Meß- und Steuerungs-Interface ermöglichen, das vom PC aus einer Hoch-sprache heraus verwendet werden kann. Zusätzlich läuft das System mit einem angepaßten BASIC52-Interpreter.

Die Mikrocontrollerplatine ist identisch mit dem 80C537-TFH Board und wurde entwickelt an der Fachhochschule der DMT in Bochum. Es wurde beschrieben in Elektor 6/87 [P.Groppe, 80C537-Einplatinencomputer] und in einem Buch im Elektor-Verlag [B.v.Berg/P.Groppe, Das 8051er-Lehrbuch]. Die Autoren gehen dabei besonders auf den Einsatz des Systems mit dem Nili-Pascalcompiler ein.

Das ES537-Betriebssystem ist weitgehend indentisch mit dem ES535-System, wie es in [B.Kainka, Erfolreich Messen, Steuern, Regeln mit Mikrocontrollern, Franzis-Verlag, 2, 1998] beschrieben wurde. Das System erlaubt zum einen den direkten Zugriff auf alle Ports und die Hardware-Register des Mikrocontrollers aus Hochsprachen heraus. Zum anderen ist es für den Einsatz des Makrocompilers MC537 ausgelegt. Die Vollversion des Makrocomilers MC wurde entsprechend erweitert.

Zusätzlich wurde der BASIC-52 Interpreter an das System angepaßt. Er steht nun in Form eines EPROMs BASIC-537 und eines zugehörigen Editorprogramms zur Verfügung.

Technische Daten:

Prozessor:              80C537
RAM:                    32K ... 64 k
EPROM:                  32K
Taktfrequenz:           12MHz
Baudrate:               9600 Baud
Stromversorgung:        5V, stabilisiert
Stromaufnahme:  ca. 70mA
Anschlüsse:             VG-Leiste mit allen Ports und Systembus 
                        für den Einsatz in 19-Zoll-Einschubgehäusen.
                        - 12 analoge Eingänge 8/10 Bit (DB15-Buchse)
                        - RS232 (DB9-Buchse)
Software:               - Assembler
                        - Makrocompiler MC
                        - Pascal- und C-Compiler einsetzbar
                        - BASIC-52-Interpreter

Der Prozessor 80C537 ist weitgehend kompatibel zur 8051-Familie und verfügt mit P0.0 bis P0.7 über einen kom-binierten Daten- und Adreßbus. Das Adreßlatch 74HC373 trennt unter Steuerung des ALE- Signals die unteren acht Adreßsignale A0 bis A7 ab. Die höheren Adreßleitungen werden vom Port P2 geliefert. Im Normalfall ver-walten 80537-Prozessoren völlig getrennte Programm- und Datenspeicher.Ein RAM 62256 wird jedoch beim ES535 durch eine Verknüpfung von /PSEN- und /RD-Signal im GAL 20V8 als gemeinsamer Daten- und Pro-grammspeicher verwendet. Dadurch ist es möglich, Programme ins RAM zu laden und zu starten. Im Monitor-Modus des Systems ist das EPROM 27256 (TFH-System oder ES537-System) als Programmspeicher aktiv, wobei das RAM als Daten- und Programmspeicher im Adreßbereich 0000h bis 7FFFh fungiert. Programme können ins RAM geladen und dort gestartet werden. Anders als beim ES537 ist ein Reset vom PC aus nicht möglich, sondern es muß ein Reset-Schalter betätigt werden, bevor ein neues Programm geladen werden kann.

2. Anschlußbelegungen

Alle Anschlüsse werden ausführlich im Manual zum TFH-Board aufgelistet. Für die ersten Versuche wird der Ein-satz des Starterboards empfohlen. Es enthält einen 5V-Spannungsregler und kann mit einem einfachen Stecker-netzteil (9V...12V) arbeiten. Für einfache Versuche sind vier vollständige Prozessorports (P1, P4, P5 und P6) her-ausgeführt und über Schraubklemmen zugänglich.

Im Auslieferungszustand sind die folgenden Jumper gesetzt und können als Grundeinstelung angesehen werden:

J2: offen (Watchdog MAX691 nicht aktiv)
J3 geschlossen (Analoge Masse an GND)
J4 geschlossen (Prozesor-Watchdog aktiv, wenn per Programm eingeschaltet)
J5 geschlossen (Power-Down-Modi erlaubt)
J6 offen (keine Interrupts durch Echtzeituhr)
J7 1-2 (Prozessorversion 80C537-N)
J8 geschlossen (AD-Referenz an +5V)

3. Speichermodi

Das Jumperfeld Jumper 1 besitzt sechs Kontakte, die je nach Betriebssystem und Modus gesetzt werden müssen:

J1A-J1B: Monitorbetrieb für das TFH-Syszem und das ES537-System. 
In beiden Fällen enthält IC3 das Betriebssystem im EPROM. 
Es läuft bei 8000h und lädt Programme ab 0000h in ein RAM im Sockel  IC2. 
Das RAM dient als kombinierter Programm- und Datenspeicher.

J1A-J1C: Stand-Alone-Modus für eigene Programme und für BASIC-537.
IC2 enthält das EPROM (z.B. BASIC537) und bildet den Programmspeicher 
ab 0000h. IC4 enthält ein RAM als reinen Datenspeicher ab 0000h. 

Im Monitor-Betrieb wird das Betriebssystem durch das GAL des Systems beim Start automatisch auf den Adreßbe-reich ab 8000h hochgeschaltet. Der Adreßbereich ab 0000h kann mit eigenen Programmen im RAM belegt werden. Die einfache Download-Möglichkeit erleichtert die Programmentwicklung mit unterschiedlichen Programmiersy-stemen. Programme im RAM dürfen Systemroutinen im EPROM oberhalb 8000h aufrufen. Diese Möglichkeit wird vom Makrocompiler MC genutzt.

Monitor-Modus:
    Programmspeicher     Datenspeicher     I/O-Bereich
    ---------------------------------------------------
                         RAM IC2
                         0...32K
    ----------------------------------------------------
    EPROM                RAM IC5
    32K...64K            32K...64K         FE00h...FFFFh
    ----------------------------------------------------

Der Stand-Alone-Modus entsricht der klassischen Konfiguration für 8051-Controller mit getrenntem Daten- und Adreßraum ab 0000h. Dieses Speichermodell wird auch vom BASIC535-Interpreter verwendet.

Stand-Alone-Modus:
    Programmspeicher     Datenspeicher     I/O-Bereich
    ---------------------------------------------------
    EPROM IC2            RAM IC4
    0...32K                                     0...32K
    ----------------------------------------------------
                         RAM IC5
                         32K...64K         FE00h...FFFFh
    ----------------------------------------------------

Der I/O-Bereich für externe Bus-Erweiterungen liegt in allen Betriebsmodi bei 8000h bis FFFFh. In diesem Bereich kann z.B. ein externer Datenspeicher liegen, der Über die Adreßleitunge, die Datenleitungen und die /WR- und /RD-Leitungen angesprochen wird.

4. Befehlsvorrat des Betriebssystems ES537

Das ES537 verfügt über ein eigenes Betriebssystem im EPROM, um sowohl direkte Interface-Funktionen ausführen zu können als auch Programme zu laden und auszuführen. Alle Betriebskommandos bestehen aus einzelnen Bytes, die über die serielle Schnittstelle übertragen werden.

Senden               Empfangen     Funktion
-----------------------------------------------------------
  Portausgaben:
10h, Byte                         Ausgabe Port 1
11h, Byte                         Ausgabe Port 3
12h, Byte                         Ausgabe Port 4
13h, Byte                         Ausgabe Port 5

  Porteingaben:
20h                 Byte          Lesen Port 1
21h                 Byte          Lesen Port 3
22h                 Byte          Lesen Port 4
23h                 Byte          Lesen Port 5
24h                 Byte          Lesen Port 6

  Analogeingaben, 8 Bit (nur AD0...AD7):
30h                 Byte          Messen Kanal 0
31h                 Byte          Messen Kanal 1
...
37h                 Byte          Messen Kanal 7

  Analogeingaben, 10 Bit(nur AD0...AD7):
38h                 Highbyte      Messen Kanal 1
 1                  Lowbyte
...
3Fh                 Highbyte      Messen Kanal 1
 1                  Lowbyte

  Analogausgaben, externer Wandler MAX505 an P3/P4
40h  Byte                         Analogausgabe Kanal 0
...
43h  Byte                         Analogausgabe Kanal 3

  reserviert für Timer-Funktionen:
50

  Speicherzugriffe:
60h HiAdr, LoAdr                  Code laden
                     1
    1, Byte                       1. Byte
                     1
    1, Byte                       2. Byte
    ...
                     1
    0                             Ende
61h HiAdr, LoAdr                  Programmstart
62h HiAdr, LoAdr, Byte            RAM-Adresse beschreiben
63h HiAdr, LoAdr         Byte     RAM-Adresse auslesen
64h Adr, Byte                     Register beschreiben
65h Adr                  Byte     Register auslesen
66h SFR, Byte                     SFR beschreiben
67h SFR                  Byte     SFR auslesen
68h HiAdr, LoAdr                  Speicherbereich auslesen
    1                    Byte     1. Byte
    1                    Byte     2. Byte
    ...
    0                             Ende

Die Interface-Kommandos des Systems können z.B. mit einer Prozeßsprache oder Spracherweiterung in einer Hochsprache genutzt werden. Dies erleichtert die Programmentwicklung auf dem PC, wenn es um nicht-zeitkritische Aufgaben geht. Das folgende Programm zeigt ein einfaches Lauflicht in Pascal.

Analogausgaben (Kommandos 40h...43h) setzen einen extern angeschlossenen DA-Wandler vom Typ MAX505 voraus. Der Wandler ist Bus-orientiert und wird hier über Prozessorports angesteuert, so daß er leicht an St1 ange-schlossen un dauf dem Punktrasterfeld untergebracht werden kann. Dabei erfolgt die Ausgabe von acht parallelen Datenbits über Port P4. Zusätzliche sind drei Steuerleitungen über Port P3 bereitzustellen: P3.2-A0, P3.3-A1, P3.4-/WR. Es gibt zahlreiche ähnliche DA-Wandler, die entsprechend angeschlossen werden können. So ist z.B. der Einkanal- Wandler ZN426 einsetzbar, der ohne die Steuersignale von Port P3 auskommt.

5. Programme laden

Autonom im ES537 lauffähige Pragramme lassen sich bequem mit dem Makrocomiler MC entwickeln und in ei-nem frei wählbaren Modus des Systems starten. Darüber hinaus können beliebige anders entwickelte Programme wie z.B. übersetzte Assembler-Pogramme oder compilierte C-Programme geladen werden. Vor jedem Download muß der RESET-Taster des Systems betätigt werden.

Das Programm erwartet Programmcode im Binärformat. Programme können z.B. mit dem Assembler TASM oder mit dem Makrocompiler MC erstellt werden. Auch der 8051-Pascal-Compiler NiliPas wurde erfolgreich eingesetzt.

6. Das erweiterte Basic52

Da ES537verfügt über einen angepaßten BASIC-52-Interpreter im EPROM. Zum Starten den Interpreters mußder Stand-Alone-Modus gewählt werden.

Anders als das originale BASIC-52 wartet das System nicht auf ein erstes Zeichen vom Terminal, sondern sendet nach kurzer Initialisierung mit 9600 Baud seine Einschaltmeldung:

         MCS-51 BASIC V1.1 / ES537

Nun lassen sich mit einem beliebigen Terminal BASIC-Programme eingeben und starten. Zu empfehlen ist die Verwendung des speziellen Editor- und Terminalprogramms BASEDIT. Beim Start wird automatisch die Um-schaltung in den Modus 3 durchgeführt. Außerdem erlaubt das Programm ein einfaches Editieren und Laden von Programmen.

Das angepaßte BASIC-52 hat folgende Eigenschaften:

Die folgende Übersicht listet die vorhandenen BASIC-Befehle auf:

Kommandos:
RUN  Ctrl-C  CONT  LIST  LIST#  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:
BAUD           Baudrate für List#, Print#
ONEX1          Unterprogrammaufruf nach Interrupt 1
ONTIME         Timer-Interruptaufruf
RETI           Ende eines Interrupt-Unterprogramms
PH0., PH1.     Ausgabe einer Hexadezimalzahl ohne/mit Nullstellen
PH0.#, PH1.#,
PRINT#, LIST#  Serielle Ausgabe über P1.7
PUSH, POP      Daten zum, vom Argument-Stack
PWM            Pulsweitenmodulation über Port 1.4
STRING         Speicher für Textstrings reservieren
UO1, UO0       User-Output aktiv/inaktiv
IDLE           Warten auf Interrupt

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


AD (Kanal)    (nur Lesen)
        C = AD (0)              Analogeingabe (0..5V) am Eingang AD0
        C = AD (11)             Analogeingabe (0... 5V) am Eingang AD11

DAPR (nur Schreiben)
        DAPR = 128              Umschalten des Meßbereichs auf 2,5 V 

SFR (nur Lesen)
        print SFR (90H) Lesen von Spezialfunktionsregistern

WrSFR (nur Schreiben)
        WrSFR 90H,255           Beschreiben von Spezialfunktionsregistern

Die Meßbereiche der zwölf möglichen Analogeingänge betragen 0 bis 5 V. Die Meßbereiche lassen sich jedoch mit Hilfe des Befehls DAPR in weiten Grenzen verändern, wie weiter unten noch gezeigt wird.

Für jede Messung 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.

7. Einsatz des Makrocompilers MC

Die Programmierumgebung MC wurde speziell für die vereinfachte Programmentwicklung mit Mikrocontrollern entwickelt und enthält neben einem vielseitigen Compiler auch einen Editor, Download-Funtionen, ein Terminal-programm und einen Speicher-Editor. MC unterstützt das ES537, so daß sich leicht Programme für eigene 80537-Systeme entwickeln lassen. Auch die Programmentwicklung für 8051-Controller kann mit dem ES537 und MC erfolgen.

MC liefert sehr schnellen und sehr kompakten Code, so daß sich auch zeitkritische Aufgaben lösen lassen. Gegen-über Assembler ergibt sich vor allem eine geringere Einarbeitungszeit und eine erhebliche Zeitersparnis bei der Entwicklung von Programmen. Insbesondere sind sehr schnelle Testzyklen möglich, weil Programme ins RAM geladen und z.B. mit dem integrierten Terminal in der selben Programmumgebung getestet werden können.

Das folgende Programmbeispiel zeigt die schnelle Erfassung von 20000 analogen Meßwerten in zwei Sekunden. Die Messung startet nach einer Triggerung durch Überschreiten einer Triggerschwelle. Die Daten lassen sich nach der Messung aus dem RAM des Systems auslesen (Datenbereich ab 0800h) und verarbeiten.