.
Start Spezial Hardware Software Download Links

Anwenderseite und technische Informationen
zum Entwicklungssystem

Startseite_

.
.

ES4
8
Download: ES48.zip (125K) enthält MC48.EXE, Beispielprogramme und diesen Text


Allgemeine Beschreibung
Anschlussbelegungen
Speichermodi und Prozessoren
Programme laden
Einsatz des Makrocompilers ES48.EXE

 

zum Shop


Allgemeine Beschreibung

Das Entwicklungssystem ES48 mit 8748-Prozessor ist ein vielseitiges System sowohl für die Programm- entwicklung als auch für den direkten Einsatz als einfaches Mess- und Steuerungssystem. Programme können über die serielle Schnittstelle in das RAM des Systems geladen und gestartet werden. Statt eines RAMs kann ein EEPROM bestückt werden, so dass sich Programme permanent bereithalten lassen. Ein Jumper auf der Platine erlaubt außerdem den Betrieb als eigenständiger Einchip-Computer mit Programmen im internen EPROM eines 8748- oder 8749-Prozessors. Erweiterungen und Versuchsaufbauten werden durch das Punktraster-Versuchsfeld der Platine erleichtert. Alle freien Portanschlüsse sind über Pfostenstecker erreichbar.
Technische Daten:

Prozessor:       8748,interne Ladesoftware
RAM:             2K, alternativ EPROM oder EEPROM
Taktfrequenz:    6MHz
Baudrate:        9600 Baud
Stromversorgung: 5V, stabilisiert
Stromaufnahme:   ca. 150mA
Anschlüsse:      - zwei universelle 8-Bit-Ports
                 - serielle Schnittstelle
Software:        - Assembler
                 - Makrocompiler MC48

Der Prozessor 8748 verfügt mit DB0 bis DB7 ü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 von der unteren Hälfte des Ports P2 geliefert. Im Normalfall verwalten 8048-Prozessoren völlig getrennte Programm- und Datenspeicher. Das RAM 6116 wird jedoch beim ES48 durch eine Verknüpfung von /PSEN- und /RD-Signal als gemeinsamer Daten- und Programmspeicher verwendet. Dadurch ist es möglich, Programme ins RAM zu laden und zu starten. Im Grundzustand des Systems ist die EA-Leitung hochgesetzt, um den externen Programmspeicher zu verwenden. Durch Umschaltung über Jumper J1 oder durch ein Signal an RTS wird EA jedoch low, so dass das interne Programm des 8748 aktiviert wird. Dies ist die Download-Software zum seriellen Empfangen und Laden von Programmcode in das RAM.


Anschlussbelegungen
Kl1: Schraubklemme für die Betriebsspannung

1 GND
2 Vcc, +5V stabilisiert

Anmerkung: Das ES48 enthält eine Suppressor-Diode gegen Überspannung und Verpolung. Im Fehlerfall, z.B. bei überhöhter Betriebsspannung, begrenzt diese Schutzdiode die Spannung auf einen ungefährlichen Wert. Eine andauernde Überlastung führt zu einem irreversiblen Kurzschluss in der Diode, die dann ersetzt werden muss.

St1: RS232-Anschluß DB9, weiblich, zur direkten Verbindung mit dem PC:
                         NC      1
                                     6     NC
  (ES48 sendet Daten)    RXD     2
                                     7     RTS  (Reset)
  (ES48 empfängt Daten)  TXD     3
                                     8     NC
  (Programm laden)       DTR     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 ein RESET ausgelöst wird.

St3: Pfostenstecker 10-polig, Port P1, frei verwendbar

              P10   1   2    P11
              P12   3   4    P13
              P14   5   6    P15
              P16   7   8    P17
              Vcc   9   10   GND

Anmerkung: Port P1 ist als quasi-bidirektionaler Port für Eingänge und Ausgänge verwendbar.

St4: Pfostenstecker 10-polig, Port P2

      (A8)    P20   1   2    P21  (A9)
      (A10)   P22   3   4    P23
              P24   5   6    P25
              P26   7   8    P27  (TXD vom Prozessor)
              Vcc   9   10   GND

Anmerkung: Die Leitungen P20 bis P23 werden vom Prozessor als Adressleitungen verwendet, können aber parallel einen Portbaustein 8243 ansteuern. P27 ist im normalen Betrieb der serielle Ausgang, darf aber in Programmen ohne serielle Schnittstelle auch direkt angesteuert werden.

St6: Pfostenstecker 20-polig:

          1   P20     (Adressleitungen und 8243)
          2   P21
          3   P22
          4   P23
          5   PPROG   (Steuerleitung für 8243)
          6   Vcc +5V
          7   P10     (frei)
          8   P11
          9   P12
          10  P13
          11  P14
          12  P15
          13  P16
          14  P17
          15  P24     (frei)
          16  P25
          17  P26
          18  P27     (/TXD)
          19  Vcc +5V
          20  GND

Anmerkung: Die Steckerbelegung entspricht weitgehend der Anschlussbelegung des 8048 (Pin 1 bis 18), wobei allerdings die Pin 19 und 20 mit Vcc und GND belegt wurden.


Speichermodi und Prozessoren

Das ES48 kann alternativ zum mitgelieferten Prozessor 8748 mit interner Download-Software mit folgenden Prozessoren bestückt werden:

8035/80C35 mit 64 Byte RAM
8039/80C39 mit 128 Byte RAM
8048/80C48 maskenprogrammiert, 64 Byte RAM
8049/80C49 maskenprogrammiert, 128 Byte RAM
8050/80C50 maskenprogrammiert, 256 Byte RAM
8748 EPROM-Version, 64 Byte RAM
8749 EPROM-Version, 128 Byte RAM

Auf dem ES48 befinden sich ein Jumper zur Auswahl des aktiven Programmspeichers:

J1-ROM:
geschlossen: Internes ROM aktiv
offen: RAM aktiv (Default)

In der Grundeinstellung (J1 offen) führt das ES48 ein Programm aus, das zuvor ins RAM geladen wurde. Das Programm kann mit RESET neu gestartet werden und bleibt aktiv, solange die Betriebsspannung anliegt. Über die serielle Schnittstelle kann jedoch die interne Download-Software im EPROM des 8748 gestartet werden, um ein neues Programm ins RAM zu übertragen. Diese Einstellung gilt auch für den Betrieb mit einem EEPROM, das genau wie ein RAM mit dem Programmcode geladen wird, wobei allerdings die Übertragung etwas langsamer erfolgen muß.

Statt eines RAMs 6116 kann ein EEPROM 28C16 oder ein bereits programmiertes EPROM 2716 bestückt werden. Falls das ES48 als festprogrammierter Einplatinen-Computer mit Programm im EPROM oder EEPROM eingesetzt werden soll, ist es zweckmäßig, den Prozessor 8748 gegen einen stromsparenden CMOS-Prozessor 80C35 oder 80C39 auszutauschen. Ebenfalls verwendbar sind die Typen 80C48 und 80C49.

J1 aktiviert das interne ROM des Prozessors. Das System kann nun z.B. mit einem 8748 oder 8749 mit interner Software verwendet werden. In den meisten Fällen (bei Programmen ohne externe RAM-Zugriffe) können dann das RAM 6116 und das Adresslatch 74HC573 aus dem Sockel entfernt werden.

Über die serielle Schnittstelle kann vom PC aus die Umschaltung in das interne ROM als Programmspeicher durchgeführt werden. Die Leitung DTR muss dazu gesetzt werden, was dieselbe Wirkung besitzt wie das Setzen von J1. Die Umschaltung wird benutzt, um das Download-Programm im 8748 zu aktivieren und Programme ins RAM des Systems zu laden. RTS dient dabei als Reset-Eingang.


Programme laden

Autonom im ES48 lauffähige Pragramme lassen sich bequem mit dem Makrocompiler MC entwickeln und im System starten. Darüber hinaus können beliebige anders entwickelte Programme wie z.B. übersetzte Assembler- Programme geladen werden. Ein Download- Programm muss die folgenden Schritte ausführen:

 1. Erzeugen eines 100ms-Reset-Signals, RTS setzen
 2. Umschaltung ins interne EPROM, DTR setzen
 3. Reset zurücknehmen, RTS zurücksetzen
 4. 400ms warten
 5. Programmcode ab Adresse 0000h im Binärformat senden
 6. Reset, RTS setzen
 7. Umschaltung ins RAM, DTR zurücksetzen
 8. Reset zurücknehmen, RTS zurücksetzen

Das folgende Programm demonstriert den Download-Vorgang in Pascal. Die Datenübertragung wurde durch einen Delay-Befehl verlangsamt, um auch EEPROMs laden zu können

Program Download;
Uses DOS, CRT;
const BA : Integer = $02F8;  { $03F8=COM1, $02F8=COM2}
var  Dateiname : String;

procedure Sende (Zeichen :Byte);
begin
  while (Port[BA+5] AND 32) = 0 do;  { Sende-Halteregister leer? }
  Port[BA]:=Zeichen;
end;

function Empfang :Byte;
var  i :Word;
begin
  i:=0;
  while ((Port[BA+5] AND 1)=0) AND (i<10000) DO Inc(i);
  if i < 10000                       { Timeout erreicht? }
  then Empfang := Port[BA]
  else Empfang := 0;
end;

procedure Init;
var  i, Dummy :Byte;
begin
  Port[BA+3]:=128;
  Port[BA+0]:=12; { 12: 9600 Baud, 6 :19200 Baud }
  Port[BA+1]:=0;
  Port[BA+3]:=7;  { 8-Bit, n-Parity, 2 Stopbits }
  Port[BA+1]:=0;  { keine Interrupts }
  Port[BA+4]:=0;  { DTR = 0, RTS = 0}
  for i:= 1 to 3 do
    Dummy:=Port[BA];   { UART leeren }
end;

procedure DTR (An : Boolean);
begin
  If An then Port[BA+4] := (Port[BA+4] OR 1) else
     Port[BA+4] := (Port[BA+4] AND 254);
end;

procedure RTS (An : Boolean);
begin
  If An then Port[BA+4] := (Port[BA+4] OR 2) else
     Port[BA+4] := (Port[BA+4] AND 253);
end;

procedure lade (Dateiname: String);
var f: file of Byte;
    r: Integer;
    code: Byte;
begin
  RTS (true);    {Reset}
  DTR (true);    {ROM aktiv}
  delay (100);
  RTS (false);   {Reset aufheben}
  delay (400); writeln;
  Assign (f, Dateiname);
  {$I-} Reset (f); {$I+}
  r := IOResult;
  if r= 0 then begin
   {$I-}
    while not EoF(f) do begin
      read(f,code);
      Sende(code);
      write ('.');
      delay(20);   {Wartezeit für EEPROM}
    end;
    Close(f);
    {$I+} writeln;
    r := IOResult;
  end;
  if r <>0 then writeln ('Fehler!') else writeln ('ok');
  RTS (true);   {Reset}
  delay (100);
  DTR (false);  {RAM aktiv}
  delay (100);
  RTS (false);  {Reset aufheben}
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. Das folgende Beispiel zeigt ein kleines Assembler-Programm zum Testen des Systems:

Anfang    mov A,#0       ;Akku mit Null laden
          outl P1,A      ;Ausgabe an Port P1
          call Warte     ;Unterprogramm Warte aufrufen
          mov A,#255     ;Akku mit 255 laden
          outl P1,A      ;Ausgabe an Port P1
          call Warte     ;Unterprogramm Warte aufrufen
          jmp Anfang     ;Rücksprung zum Anfang

Warte     mov R7,#255    ;Register R7 laden
Schl1     mov R6,#255    ;Register R6 laden
Schl2     djnz R6,Schl2  ;innere Zählschleife
          djnz R7,Schl1  ;äußere Zählschleife
          ret            ;Rücksprung vom Unterprogramm
.end
Dieses Programm lässt sich mit dem Shareware-Assembler TASM übersetzen und als Binärfile TEST1.OBJ speichern:

     TASM -48 -b TEST1.ASM

Die assemblierte Programmdatei TEST1.OBJ wird dann mit

     DOWNLOAD TEST1.OBJ

in das RAM des ES48 übertragen und gestartet. Die Funktion lässt sich z.B. über LEDs erkennen, die mit Vorwiderständen zwischen Vcc und Port P1 angeschlossen sind. Für die Programmentwicklung ist es sinnvoll, einen Testadapter mit acht LEDs herzustellen, der auf die Pfostenstecker für Port P1 und Port P2 passt. Programmabläufe lassen sich damit in vielen Fällen direkt überblicken.


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 ES48 mit seinem Download-Protokoll 1, wobei eine Verzögerungszeit zum Laden von EEPROMs eingestellt werden kann.

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 erste Programmbeispiel soll einfache Portausgaben demonstrieren. Hier wird eine genau vorgegebene Anzahl von Einzelimpulsen abgegeben. Da MC48 nur Bytes verarbeitet, müssen mehr als 255 Impulse über geschachtelte Prozeduraufrufe erzeugt werden.

Procedure pulse
WrP1 255
WrP1 0
EndProc

Procedure 200pulse
Count1 200
Loop1 pulse
Endproc

Procedure 10000pulse
Count2 50
Loop2 200pulse
Endproc

Begin
10000pulse
End

Das zweite Programmbeispiel zeigt ein MC48-Programm zur Ansteuerung eines AD-Wandlers TLC549. Der Wandler wird seriell über folgende Portanschlüsse gesteuert: P24-Clk, P25-Dout, P26-/CS. Zusätzlich enthält dieses Programm ein Runtime-System mit Routinen zur seriellen Datenübertragung und zur Zeitsteuerung. Die Prozeduren wurden in Assembler geschrieben und über Inline-Kommandos eingebunden.

;Steuerprogramm für den TLC549
;Runtimesystem für MC48-Programme

Procedure WrCOM               ;9600 Baud
Inline BA,08,9A,7F,BB,10,EB,0F
Inline 97,67,F6,19,9A,7F,E6,1D
Inline 8A,80,8A,80,BB,0F,EB,1F
Inline EA,11,23,00,23,00,8A,80
Inline BB,01,EB,2B
EndProc

Procedure RdCOM              ;9600 Baud
Inline 86,33,97,E6,2E,BA,19,EA
Inline 35,BB,08,97,86,49,00,A7
Inline 2C,67,2C,BA,0F,EA,43,EB
Inline 39,FC,83,00,97,2C,67,2C
Inline BA,0F,EA,50,EB,39,FC
EndProc

Procedure Delay                 ;A * 1 ms
Inline AD,16,5C,97,E6,57,AE,23
Inline F4,62,23,00,23,00,23,00
Inline 23,00,FE,55,ED,57
EndProc

Procedure BitLesen      ;TLC549 auslesen
RdP2                    ;Bits lesen
AND 00100000b           ;Dout maskieren
ShiftLeft
ShiftLeft               ;zum Bit 7 schieben
+B                      ;zum Messwert addieren
ShiftLeft               ;Bits weiterschieben
WrB                     ;Messwert in B speichern
WrP2 10111111b          ;Taktimpuls an Clk
WrP2 10101111b          ;Clk = 0
EndProc

Procedure messen        ;Abfrage TLC549
WrP2 11101111b          ;/CS = 1
Count8 4
Loop8 Nop               ;Wartezeit > 20µs
WrP2 10101111b          ;/CS = 0
B 0                     ;Messwert rücksetzen
Count8 8
Loop8 BitLesen          ;8 Bits lesen
RdB                     ;Messwert lesen
EndProc

Procedure in/out
RdCom                   ;Ausgabewert lesen
WrP1                    ;über P1 ausgeben
messen                  ;Messung ausführen
WrCOM                   ;Ergebnis zurücksenden
EndProc

Begin
Loop in/out             ;Endlosschleife
End


Nähere Erläuterungen zum ES48 und zahlreiche Anwendungsbeispiele finden sich im folgenden Buch:
B. Kainka, Erfolgreich Messen, Steuern und Regeln mit Mikrocontrollern, 2. Auflage Franzis' 1998

.
.
Start Spezial Hardware Software Download Links

AK MODUL-BUS Computer GmbH, Münsterstr. 45, 48477 Hörstel-Riesenbeck, Tel. +49-54 54 / 9 34 36 36 Fax +49-54 54 / 9 34 36 37
 Mail: info@ak-modul-bus.de