Hersteller www.modul-bus.de
Download: ES535.zip (228K) enthält MC535, Basic535, Beispielprogramme und diesen Text
Das Entwicklungssystem ES535 mit 80C535-Prozessor ist ein vielseitiges System sowohl für die Programment-wicklung 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-rektkommandos, die einen Einsatz als Meß- und Steuerungs-Interface ermöglichen, das vom PC aus einer Hoch-sprache heraus verwendet werden kann. Zusätzlich enthält das System einen angepaßten 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-Anschluß 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 Pin-belegung 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 kom-binierten Daten- und Adreßbus. Das Adreßlatch 74HC573 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 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 Pro-grammspeicher verwendet. Dadurch ist es möglich, Programme ins RAM zu laden und zu starten. Im Grundzu-stand des Systems ist das EPROM 27256 als Programmspeicher aktiv, wobei das RAM als Datenspeicher im Adreßbereich 0000h bis 7FFFh fungiert. Es wird jedoch als Programmspeicher im Bereich 8000h bis FFFFh ge-spiegelt, so daß 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 Pro-gramm-Zugriffe auf bestimmte Adressen eingeleitet. Das GAL dekodiert hierzu die höheren Adreßleitungen 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 Schnitt-stelle kann das GAL in seinen Grundzustand zurückversetzt werden.
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 muß 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üg-bar.
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 Adreßbereich 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üg-bar. 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, daß RTS und DTR üblicherweise gesetzt werden und damit einen RESET ausgelöst wird. St4: Pfostenstecker 14-Polig zum Anschluß 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äßt sich dann ohne ein
Vebindungskabel 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, muß 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 andau-ernde Überlastung führt zu einem irreversiblen
Kurzschluß in der Diode, die dann ersetzt werden muß.
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
Das ES535 verfügt über vier unterschiedliche Betriebsmodi mit jeweils eigenen Speichermodellen. Nach dem Ein-schalten, 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 Adreßbereich 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 Adreßbereich 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 angepaßte BASIC52 im EPROM, indem der Bereich 4000h bis 7FFFh des EPROM (hier befin-det 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 daß 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 Adreßleitunge, die Datenleitungen und die /WR- und /RD-Leitungen angesprochen wird.
Daneben gibt es eine feste Zuordnung des LCD-Displays in den Adreßbereich 8000h bis 83FFh. Die spezielle Steu-erleitung LCD liefert in diesem Adreßbereich ein high-Signal für jeden Schreib- und Lesezugriff. Ein Standard-LCD-Modul kann an St4 angeschlossen und über folgene Adressenm 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 Adreßbereich low.
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 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.
Program Luflicht_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 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.
Autonom im ES535 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. Je nach erforderlicher Speicheraufteilung muß dazu der passende Betriebsmodus ausgewählt werden.
Besonders einfach lassen sich Programme im Modus 0 austesten, weil hierzu keine Umschaltung des Modus erfor-derlich 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 Adreßbereichen ab Adresse 0000h zu testen, muß 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 Sprung-befehl 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.
Da ES535 verfügt bereits über einen angepaßten BASIC-52-Interpreter im EPROM. Zum Starten den Interpreters muß 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 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:
- 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 muß der ge-wünschte Meßbereich ü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 daß bequem autonome Meßprogramme 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 Meß-daten 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
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 ES535 in allen Betriebsmodi, so daß sich leicht Pro-gramme 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 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.
; 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 Trggerflanke EndWhile Count1 80 ;20000 Meßpunkte Loop1 250messungen ; 80 * 250 EndProc Begin triggern End