. |
ES535
Download: ES535.zip (228K)
enthält MC535, Basic535, Beispielprogramme und diesen Text
Allgemeine Beschreibung
Anschlussbelegungen
Speichermodi
Befehlsvorrat des Betriebssystems
Programme laden
Das erweiterte Basic-52
Einsatz des Makrocompilers MC
zum
Shop
|
Allgemeine Beschreibung
Das Entwicklungssystem ES535 mit 80C535-Prozessor ist ein vielseitiges System sowohl für die Programmentwicklung als auch für den direkten Einsatz als universelles
Mess- und Steuerungssystem. Neben der Möglichkeit, Programme über die serielle Schnittstelle in das RAM des Systems zu laden und zu starten, gibt es zahlreiche Direktkommandos, die einen Einsatz als
Mess- und Steuerungs-Interface ermöglichen, das vom PC aus einer Hochsprache heraus verwendet werden kann. Zusätzlich enthält das System einen
angepassten BASIC52-Interpreter. Erweiterungen und Versuchsaufbauten werden durch das Punktraster- Versuchsfeld der Platine erleichtert. Alle wichtigen Anschlüsse sind über Pfostenstecker erreichbar.
Das ES535 besitzt zwei Tastschalter: "RESET" dient zum Zurücksetzen des Prozessors und zum Beenden eines geladenen Programms. "MODE 0" setzt das GAL in seinen Grundzustand (Modus 0) zurück. Beide Funktionen gemeinsam können auch über die serielle Schnittstelle durch ein geeignetes PC-Programm ausgelöst werden.
Technische Daten:
Prozessor: 80C535
RAM: 32K
EPROM: 32K
Taktfrequenz: 12MHz
Baudrate: 9600 Baud
Stromversorgung: 5V, stabilisiert
Stromaufnahme: ca. 70mA
Anschlüsse: - drei universelle 8-Bit-Ports
- 8 analoge Eingänge 8/10 Bit
- Prozessorbus herausgeführt
- LCD- Anschluss
Software: - Assembler
- Makrocompiler MC
- Pascal- und C-Compiler einsetzbar
- BASIC-52-Interpreter
(Achtung! Der NMOS-Prozessor 80535 darf nicht auf dem ES535 eingesetzt werden, da er eine etwas andere
Pinbelegung als der CMOS-TYP 80C535 hat!)
Der Prozessor 80C535 ist weitgehend kompatibel zur 8051-Familie und verfügt mit P0.0 bis P0.7 über einen
kombinierten Daten- und Adressbus. Das Adresslatch 74HC573 trennt unter Steuerung des ALE- Signals die unteren acht
Adresssignale A0 bis A7 ab. Die höheren Adressleitungen
werden vom Port P2 geliefert. Im Normalfall
verwalten 80535-Prozessoren völlig getrennte Programm- und Datenspeicher. Das RAM 62256 wird jedoch beim ES535 durch eine Verknüpfung von /PSEN- und /RD-Signal im GAL 16V8 als gemeinsamer Daten- und
Programmspeicher verwendet. Dadurch ist es möglich, Programme ins RAM zu laden und zu starten. Im
Grundzustand des Systems ist das EPROM 27256 als Programmspeicher aktiv, wobei das RAM als Datenspeicher im
Adressbereich 0000h bis 7FFFh fungiert. Es wird jedoch als Programmspeicher im Bereich 8000h bis FFFFh
gespiegelt, so dass in diesem Bereich nachgeladene Programme ablaufen können.
Die programmierte Logik des GALs erlaubt eine Umschaltung in drei weitere Betriebsmodi, die sich durch eine andere Zuordnung des Programm- und Datenspeichers auszeichnen. Die Umschaltung wird jeweils durch Programm- Zugriffe auf bestimmte Adressen eingeleitet. Das GAL dekodiert hierzu die höheren
Adressleitungen A10 bis A15 und die PSEN-Leitung. Der jeweils aktive Betriebsmodus ist am Zustand der GAL-Anschlüsse SEL1 und SEL2 erkennbar. Über einen Taster "Modus 0" und über die Master- Reset-Leitung RTS an der seriellen Schnittstelle kann das GAL in seinen Grundzustand zurückversetzt werden. |
Anschlussbelegungen
St1: Pfostenstecker 50-polig:
Vcc (+5V) 1 2 GND
1) VAREF 3 4 VAGND 2)
/RESET 5 6 /PE 3)
P4.0 7 8 P4.1
P4.2 9 10 P4.3
P4.4 11 12 P4.5
P4.6 13 14 P4.7
P5.0 15 16 P5.1
P5.2 17 18 P5.3
P5.4 19 20 P5.5
P5.6 21 22 P5.7
AN0 23 24 AN1
AN2 25 26 AN3
AN4 27 28 AN5
AN6 29 30 AN7
P1.0 31 32 P1.1
P1.2 33 34 P1.3
P1.4 35 36 P1.5
P1.6 37 38 P1.7
Vcc (+5V) 39 40 GND
P3.2 41 42 P3.3
P3.5 43 44 P3.4
4) TXD (PC) 45 46 RXD (PC) 4)
NC 47 48 GND 4)
5) T2in 49 59 T2out 5)
Anmerkungen:
1. VAREF sollte an +5V (Pin1) oder an eine externe Referenz mit +5V gelegt werden.
2. VAGND sollte an GND (Pin2) gelegt werden.
3. /PE muss an GND gelegt werden, um den power-down-mode zu nutzen.
4. Die Anschlüsse der seriellen Schnittstelle können hier oder am DB9-Stecker (ST3) verbunden werden.
5. T2in und T2out sind als Eingang und Ausgang eines weiteren RS232-Leitungstreibers im MA232 frei verfügbar.
St2: Pfostenstecker 40-polig:
Vcc (+5V) 1 2 GND
A14 3 4 A15
A12 5 6 A13
A10 7 8 A12
A8 9 10 A9
A6 11 12 A7
A4 13 14 A5
A2 15 16 A3
A0 17 18 A1
D1 19 20 D0
D3 21 22 D2
D5 23 24 D4
D7 25 26 D6
Vcc 27 28 GND
/RD 29 30 /WR
1) IO/2 31 32 /PSEN
2) SEL1 33 34 LCD 3)
2) SEL2 35 36 /Reset2 (Mode 0) 4)
Vcc 37 38 GND
5) T2in 39 40 T2out 5)
Anmerkungen:
1. IO/2 selektiert externe Peripherie als /CS-Signal im
Adressbereich 8400...87FF.
2. SEL1 und SEL2 können als Ausgänge den Betriebsmodus des Systems anzeigen.
3. LCD selektiert das LCD-Display für Schreib- und Lesezugriffe (ach an St4 verfügbar).
4. Hier kann eine zweiter Reset-Schalter für den Betriebsmodus 0 gegen Masse geschaltet werden.
5. T2in und T2out sind als Eingang und Ausgang eines weiteren RS232-Leitungstreibers im MA232 frei verfügbar.
St3: RS232-Anschluß DB9, weiblich, zur direkten Verbindung mit dem PC:
NC 1
6 NC
(ES535 sendet Daten) RXD 2
7 RTS (Master-Reset)
(ES535 empfängt Daten) TXD 3
8 NC
NC 4
9 NC
GND 5
Anmerkung:
Zur Verbindung mit dem PC ist ein 9-poliges, nicht gekreuztes Verlängerungskabel zu verwenden. Beim Betrieb mit üblichen Terminalprogrammen ist zu beachten,
dass RTS und DTR üblicherweise gesetzt werden und damit einen RESET ausgelöst wird.
St4: Pfostenstecker 14-Polig zum
Anschluss eines Standard -LCD-Moduls
GND 1 2 Vcc
Kontrast 3 4 RS (A0)
R/W (A1) 5 6 E (LCD-Signal vom GAL)
D0 7 8 D1
D2 9 10 D3
D4 11 12 D5
D6 13 14 D7
Anmerkung:
Statt des Pfostensteckers kann eine Buchse bestückt werden. Ein LCD-Display mit verlängertem Pfostenstecker
lässt sich dann ohne ein Verbindungskabel direkt auf das ES535 aufsetzen. Ein Flachbandkabel, das von oben auf eine Steckerleiste im ES535 und von unten auf eine zweireihige Steckerleiste des LCD-Moduls aufgesetzt werden soll,
muss jeweils in nebeneinander liegende Leitungen (1/2, 3/4 usw. bis 13/14) aufgetrennt und verdreht werden.
St7: Schraubklemme für die Betriebsspannung
1 GND
2 Vcc, +5V stabilisiert
Anmerkung:
Das ES535 enthält eine Suppressor- Diode gegen Überspannung und Verpolung. Im Fehlerfall, z.B. bei überhöhter Betriebsspannung, begrenzt diese Schutzdiode die Betriebsspannung auf einen ungefährlichen Wert. Eine andauernde Überlastung führt zu einem irreversiblen
Kurzschluss in der Diode, die dann ersetzt werden
muss.
St8: Pfostenstecker 10-polig, Port P4
P4.0 1 2 P4.1
P4.2 3 4 P4.3
P4.4 5 6 P4.5
P4.6 7 8 P4.7
Vcc 9 10 GND
St9: Pfostenstecker 10-polig, Port P5
P5.0 1 2 P5.1
P5.2 3 4 P5.3
P5.4 5 6 P5.5
P5.6 7 8 P5.7
Vcc 9 10 GND
St10: Pfostenstecker 10-polig, Port P6 (AN0...AN7)
AN0 1 2 AN1
AN2 3 4 AN3
AN4 5 6 AN5
AN6 7 8 AN7
Vcc 9 10 GND
St11: Pfostenstecker 10-polig, Port P1
P1.0 1 2 P1.1
P1.2 3 4 P1.3
P1.4 5 6 P1.5
P1.6 7 8 P1.7
Vcc 9 10 GND
|
Speichermodi
Das ES535 verfügt über vier unterschiedliche Betriebsmodi mit jeweils eigenen Speichermodellen. Nach dem Einschalten, nach einem Master-Reset über die serielle Schnittstelle oder nach einem Tastendruck auf den GAL-Resetknopf (Mode 0) befindet es sich im Modus 0 mit dem EPROM im
Adressbereich 0000h bis 7FFFh und dem RAM als Programmspeicher im Bereich 8000h bis
FFFFh, gespiegelt als Datenspeicher im Bereich 0000h bis 7FFFFh. Programme können im RAM ab 8000h gestartet werden. Zusätzlich steht im Modus 0 ein umfangreicher Befehlssatz für direkte Interface-Aktionen zur Verfügung.
Die Umschaltung in höhere Betriebsmodi erfolgt über das GAL16V8 durch Programmsprünge zu besonderen Adressen: 7400h für Modus 1, 7800h für Modus 2 und 7C00h für Modus 3. Modus 1 und 2 dienen ausschließlich dazu, Programme in den
Adressbereich ab 0000h zu laden und zu starten. Das RAM liegt ab Datenspeicher jeweils bei Adresse 0. Während allerdings im Modus 1 das gesamte RAM zugleich als Programm- und Datenspeicher im Bereich 0000h bis 7FFFh angesprochen werden kann, ist es im Modus 2 in zwei 16K- Bereiche aufgeteilt, die als Programm- und Datenspeicher im Bereich 0000h bis 3FFFh parallel liegen und jeweils im Bereich 4000h bis 7FFFh gespiegelt werden.
Modus 3 startet das
angepasste BASIC52 im EPROM, indem der Bereich 4000h bis 7FFFh des EPROM (hier befindet sich der BASIC- Interpreter) in den Bereich ab Adresse 0000h geschaltet wird. Das RAM steht im Bereich 0000h bis 7FFFh für das BASIC zur Verfügung.
Das GAL stellt zwei Ausgangsleitungen SEL1 und SEL2 zur Verfügung, die den gewählten Modus nach außen anzeigen. Sie werden an den 40-poligen Pfostenstecker ST2 geführt, so
dass der gewählte Modus z.B. über LEDs sichtbar gemacht werden kann. Darüber hinaus ist es möglich, den Modus extern umzuschalten, indem man die entsprechenden
Select-Leitungen z.B. über Taster an +5V legt. Die folgende Übersicht zeigt noch einmal alle vier Betriebsmodi des ES535 und die zugehörige Speicheraufteilung:
Modus 0:
Programmspeicher Datenspeicher I/O-Bereich
---------------------------------------------------
EPROM RAM
0...32K 0...32K
----------------------------------------------------
RAM 32K...64K
32K...64K (gespiegelt)
----------------------------------------------------
(SEL1=0, SEL2=0)
Modus 1 (SEL1=1, SEL2=0, Umschaltung: 7400h):
Programmspeicher Datenspeicher I/O-Bereich
---------------------------------------------------
RAM (untere Hälfte) RAM (obere Hälfte)
0...16K 0...16K
gespiegelt 16K...32K gespiegelt 16K...32K
----------------------------------------------------
32K...64K
----------------------------------------------------
Modus 2 (SEL1=0, SEL2=1, Umschaltung: 7800h):
Programmspeicher Datenspeicher I/O-Bereich
---------------------------------------------------
RAM RAM
0...32K 0...32K
----------------------------------------------------
32K...64K
----------------------------------------------------
Modus 3 (SEL1=1, SEL2=1, Umschaltung: 7C00h):
Programmspeicher Datenspeicher I/O-Bereich
---------------------------------------------------
EPROM RAM
16...32K, 0...16K 0...32K
----------------------------------------------------
32K...64K
----------------------------------------------------
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
Adressleitungen, die Datenleitungen und die /WR- und /RD-Leitungen angesprochen wird.
Daneben gibt es
eine feste Zuordnung des LCD-Displays in den
Adressbereich 8000h bis 83FFh. Die spezielle
Steuerleitung LCD liefert in diesem
Adressbereich ein high-Signal für jeden
Schreib- und Lesezugriff. Ein Standard-LCD-Modul
kann an St4 angeschlossen und über folgende
Adressen angesprochen werden:
8000h: Kommandos schreiben
8001h: Daten schreiben
8002h: Bereitschaft lesen
8003h: Daten lesen
Weiterhin ist der Bereich 8400h bis 87FFh für externen Peripherie wie z.B. Porterweiterungen, Analog-Wandler usw. vorgesehen. Die Chip-Select-Leitung
IO/2 wird für die Dauer jedes /WR- oder /RD- Zugriffs auf diesen
Adressbereich low. |
Befehlsvorrat des Betriebssystems
Das ES535 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:
30h Byte Messen Kanal 0
31h Byte Messen Kanal 1
...
37h Byte Messen Kanal 7
Analogeingaben, 10 Bit:
38h Highbyte Messen Kanal 1
1 Lowbyte
...
3Fh Highbyte Messen Kanal 1
1 Lowbyte
Analogausgaben, externer Wandler 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
Prozess-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.
Program Lauflicht_ES535;
Uses DOS, CRT, COM2_96;
procedure Port1Aus (Datum: Byte);
begin
sende ($10);
sende (Datum);
end;
procedure Lauflicht
var n: Integer;
begin
n := 1;
for n:= 1 to 8 do begin
Port1Aus (low(n));
N := N * 2;
end;
for n := 1 to 6 do begin
N := N div 2;
Port1Aus (low(n));
end;
end
begin
repeat Lauflicht until KeyPressed;
end.
|
Analogausgaben (Kommandos 40h...43h) setzen einen extern angeschlossenen DA-Wandler vom Typ MAX505 voraus. Der Wandler ist Busorientiert und wird hier über Prozessorports angesteuert, so daß er leicht an St1 angeschlossen und auf 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. |
Autonom im ES535 lauffähige Pragramme lassen sich bequem mit dem
Makrocompiler MC entwickeln und in einem frei wählbaren Modus des Systems starten. Darüber hinaus können beliebige anders entwickelte Programme wie z.B. übersetzte Assembler- Programme oder kompilierte C- Programme geladen werden. Je nach erforderlicher Speicheraufteilung
muss dazu der passende Betriebsmodus ausgewählt werden.
Besonders einfach lassen sich Programme im Modus 0 austesten, weil hierzu keine Umschaltung des Modus erforderlich ist. Im Modus 0 beginnt der Programmspeicher bei 8000h, er ist aber zugleich als Datenspeicher ab Adresse 0000h gespiegelt. Zum Laden eines Programms im Modus 0 sind folgende Schritte erforderlich:
1. Ein Reset-Impuls an RTS versetzt das ES535 in den Grundzustand.
2. Über das Kommando 60h wird der Programmcode ab der Adresse 0000h ins RAM geladen.
3. Das Programm wird durch einen Sprung zur Adresse 8000h gestartet (Kommando 61h):
Um Software für ein übliches System mit getrennten Daten- und
Adressbereichen ab Adresse 0000h zu testen, muss
der Modus 1 gewählt werden. Hier stehen jeweils 16K für Programme und Daten zur Verfügung. Ein Download-Programm muß die folgenden Schritte ausführen:
1. Erzeugen eines Reset-Signals an RTS
2. Laden des Codes ab Adresse 0000h (Kommando 60h)
3. Plazieren eines Sprungbefehls (ljmp 0000h, 02 00 00) an die Speicherstelle 3400h (z.B. über Kommando 62h)
4. Programmaufruf bei Adresse 7400h (Kommando 61h)
Der Programmaufruf bei Adresse 7400h schaltet über die Dekodier- Logik im GAL den Betriebsmodus 1 ein. Hier findet das System den Sprungbefehl zum Anfang des Programmbereichs, weil der bei 3400h eingetragene Sprungbefehl sich bei 7400h spiegelt. Das folgende Listing zeigt ein Download-Programm in Pascal.
Program Load_Modus_1;
Uses DOS, CRT, COM2_96;
var Dateiname : String;
procedure Download (Adresse: Word; Dateiname: String);
var f: file of Byte;
r: Integer;
code, Dummy: Byte;
begin
Assign (f, Dateiname);
{$I-} Reset (f); {$I+}
r := IOResult;
if r= 0 then begin
{$I-}
Sende ($60);
Sende (hi(Adresse));
Sende (Lo(Adresse));
while not EoF(f) do begin
Dummy := Empfang;
Sende (1);
read(f,code);
Sende(code);
end;
Sende (0);
Close(f);
{$I+}
end;
end;
procedure ProgrammStart (Adresse: Word);
begin
Sende ($61);
sende (Hi(Adresse));
Sende (Lo(Adresse));
end;
procedure RAMschreiben (Adresse: Word; Code: Byte);
begin
Sende ($62);
Sende (Hi(Adresse));
Sende (Lo(Adresse));
Sende (Code);
end;
procedure lade (Dateiname: String);
begin
SystemReset;
DownLoad ($0000,Dateiname);
RAMschreiben ($3400,$02); {7400 im RAM: ljmp 0000}
RAMschreiben ($3401,$00);
RAMschreiben ($3402,$00);
ProgrammStart ($7400);
end;
begin
Init;
if ParamCount > 0 then begin
Dateiname := ParamStr(1);
lade (Dateiname);
end;
end.
|
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. |
Das erweiterte Basic52
Da ES535 verfügt bereits über einen
angepassten BASIC-52-Interpreter im EPROM. Zum Starten den Interpreters
muss in den Modus 3 umgeschaltet werden. Soll das System grundsätzlich mit Basic arbeiten, dann können die GAL-Leitungen SEL1 und SEL2 am Pfostenstecker ST2 fest mit Vcc verdrahtet werden, um einen Start im Modus 3 zu erzwingen. Aus dem Modus 0 heraus ist jedoch ein Umschalten leicht durch einen Programmstart bei 7C00h zu erreichen (Kommando 61h).
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 / 80535
Nun lassen sich mit einem beliebigen Terminal BASIC-Programme eingeben und starten. Zu empfehlen ist die Verwendung des speziellen Editor- und Terminalprogramms BASED535. Beim Start wird automatisch die Umschaltung in den Modus 3 durchgeführt. Außerdem erlaubt das Programm ein einfaches Editieren und Laden von Programmen.
Das angepasste BASIC-52 hat folgende Eigenschaften:
- Baudrate fest eingestellt auf 9600 Baud bei 12 MHz
- RAM-Größe 16 K - Alle drei Timer verfügbar
- Voller Befehlssatz des Intel-8052AH-BASIC
- Unterstützung des AD-Wandlers
- Unterstützung der zusätzlichen Ports
- Unterstützung der zusätzlichen SFR
- Treiber für eine LCD-Anzeige
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
Für direkte Portzugriffe stehen die folgenden erweiterten
Befehle zur Verfügung:
Ausgabe Eingabe
-------------------------------------------
P3 = X INP3 : POP A
P4 = 255 INP4 : POP A
P5 = 255-X INP5 : POP A
INP6 : POP A
Zusätzlich wurde mit dem Operator "IO" der Zugriff auf weitere Hardware-Elemente ermöglicht. Die genaue Funktion von IO wird durch Zuweisung einer Funktionsnummer an den Control-Operator CTRL gesteuert:
Insgesamt sind folgende Funktionen erreichbar:
Ports:
CTRL=1 Port 1 schreiben und lesen
CTRL=3 Port 3 schreiben und lesen
CTRL=4 Port 4 schreiben und lesen
CTRL=5 Port 5 schreiben und lesen
CTRL=6 Port 6 nur lesen
Interruptsteuerung:
CTRL=10 IEN0 schreiben und lesen
CTRL=11 IP0 schreiben und lesen
CTRL=12 IEN1 schreiben und lesen
CTRL=13 IP2 schreiben und lesen
CTRL=14 IRCON schreiben und lesen
Timer 2:
CTRL=20 CCEN schreiben und lesen
CTRL=21 CCL1/CCH1 schreiben und lesen, 16 Bit
CTRL=22 CCL2/CCH2 schreiben und lesen, 16 Bit
CTRL=23 CCL3/CCH3 schreiben und lesen, 16 Bit
CTRL=24 CRCL/CRCH schreiben und lesen, 16 Bit
A/D-Wandler:
CTRL=30 A/D-Wandler nur lesen
Jede Messung im erweiterten BASIC verwendet den Operator IO mit CTRL=30. Vor einer Messung
muss der gewünschte Messbereich über den Operator DAPR festgelegt werden, und der gewünschte Eingangskanal ist in ADCON zu schreiben.
Die Basic-Erweiterung berücksichtigt auch einen LCD-Treiber, so
dass bequem autonome Messprogramme mit LCD-Ausgabe geschrieben werden können. Dazu gibt es die zusätzlichen Kommandos LCDINIT und CURSOR. Die Ausgabe erfolgt z.B. durch UO 1 (user output on). Das folgende Beispiel demonstriert die Ausgabe von
Messdaten der Analogausgänge auf dem LCD- Display:
10 REM Vierkanalmessung mit LCD-Ausgabe
20 LCDINIT : UO 1 : REM Ausgabe auf LCD umlenken
100 CTRL =30 : REM AD-Wandler
110 DAPR =128 : REM Vref=2,5V
120 FOR N=0 TO 2
130 ADCON =N : REM Kanal
140 U=IO/100 : REM AD-Wandler auslesen
150 CURSOR (N*8): PRINT U,
160 NEXT N
170 PRINT " V "
180 FOR T=1 TO 2000 : NEXT T
190 GOTO 120
|
|
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- Funktionen, ein Terminalprogramm und einen Speicher-Editor. MC unterstützt das ES535 in allen Betriebsmodi, so
dass sich leicht Programme für eigene 80535-Systeme entwickeln lassen. Auch die Programmentwicklung für 8051-Controller kann mit dem ES535 und MC erfolgen.
MC liefert sehr schnellen und sehr kompakten Code, so
dass 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
Messwerten 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.
; Einkanal-Datenlogger
Procedure messen
RdAnalog 0 ;8-Bit-Messung
WrRAM ;speichern
delay 1 ;0,1ms Zeitraster
EndProc
Procedure 250messungen
Count2 250
Loop2 messen
EndProc
Procedure triggern
ResetRAM
NotDone
B 128 ;Triggerlever
WhileNotDone
RdAnalog 0
IfA>=B Done ;positive Triggerflanke
EndWhile
Count1 80 ;20000 Messpunkte
Loop1 250messungen ; 80 * 250
EndProc
Begin
triggern
End
|
|
|
|
. |