MICO-80 Bedienungsanleitung Einplatinen-Mikrocomputer MICO-80 Bedienungsanleitung © 1985/2014 IED München GmbH http://www.kammerer.net -1- MICO-80 Bedienungsanleitung Inhaltsverzeichnis: 1. Einführung ............................................................................................................................. 3 2. Inbetriebnahme des MICO-80 ............................................................................................... 4 3. Tastenfeld............................................................................................................................... 5 4. Auflistung der Unterprogramme ........................................................................................ 18 5. Einspeichern von Programmen in den RAM-Bereich....................................................... 19 4.1. Das Einspeichern von Daten und Konstanten in den RAM-Bereich ................................. 19 4.2. Vor- und Rückwärtsauslesen eingespeicherter Informationen .......................................... 21 4.3. Die Festlegung des MICO-80 Speicherbereichs ............................................................... 23 6. Die Programmabarbeitung.................................................................................................. 26 7. Die Ein- und Ausgabe von Informationen über den Ein-Ausgabe-Baustein 8255 ......... 29 8. Darstellung von Textsymbolen in der Anzeige ................................................................. 32 9. Programmbeispiele im Z80-Code ....................................................................................... 35 10. Serielle Schnittstelle ........................................................................................................... 39 11. Installation und Start des Entwicklungssystems ............................................................. 41 12. Weiterführende Literatur ..................................................................................................... 42 -2- MICO-80 Bedienungsanleitung 1. Einführung Mikrocomputersysteme können heute aus nur wenigen hochintegrierten Halbleiterbausteinen aufgebaut werden. Die hohe Betriebssicherheit, ein niedriger Preis ermöglichen es, dass diese Systeme sowohl in Maschinen und Anlagen der industriellen Technik, als auch in Geräten des täglichen Bedarfs Steuer-, Regel- und Rechenfunktionen übernehmen. Im Zuge dieser fortschreitenden Entwicklung werden immer mehr Ingenieure, Techniker und Facharbeiter mit Mikrocomputersystemen konfrontiert. Mikrocomputer zeichnen sich dadurch aus, dass eine vom Anwendungsfall unabhängige Schaltung ihre speziellen Eigenschaften erst durch die Programmierung erhält. Es gibt heute unterschiedliche Mikrocomputersysteme, die sich hinsichtlich ihres Aufbaues und ihrer Programmierung erheblich unterscheiden. Besonders weit verbreitet sind die Mikroprozessorbausteine 8085 und der aufwärts kompatible Mikroprozessor Z80. Der betriebsfertig aufgebaute Einplatinen-Mikrocomputer MICO-80, der mit dem Mikroprozessorbaustein Z80 ausgestattet ist, kann vielseitig angewendet werden: • • • • • • • • Als Lehr- und Übungscomputer zur Erarbeitung des Grundbefehlssatzes der Mikroprozessoren 8080/8085. Da weitgehende Kompatibilität zu den in den HPI-Fachlehrgängen eingesetzten Geräten Profi-5 und Profi-50 besteht, können die in dem Lehrbuch IVC Mikrocomputer aufgeführten Programmbeispiele direkt in den MICO-80 eingegeben und erarbeitet werden (s. Aufstellung der Unterprogramme MICO-80). Zur Erarbeitung des erweiterten Befehlssatzes des Z80 Mikroprozessors. Zur Erarbeitung der Programmierung der peripheren Schnittstellenbausteine 8255 und PIO-Z80. Erarbeitung und Wirkungsweise des CTC-Z80 und der erweiterten Interrupt Möglichkeiten der Z80-CPU. In Verbindung mit dem EPROM-Programmer PR 8 zur Programmierung von 1 KByte-, 2 KByteund 4 KByte-EPROMs. Mit zusätzlichem erweitertem Betriebsprogramm Einführung in die speicherprogrammierbaren Steuerungen. Zur Durchführung aller steuerungstechnischen Aufgaben (Maschinensteuerungen, Steuerungen von Heizungsanlagen usw.). Im Echtzeitbetrieb beträgt die Zykluszeit des MICO-80 ca.330 ns. Bei der Lösung von unterschiedlichsten Steuerungsaufgaben mit dem MICO 80 lassen sich Befehlskommandos und Textmerkmale direkt ohne Aufruf eines Unterprogramms in der Anzeige darstellen. -3- MICO-80 Bedienungsanleitung 2. Inbetriebnahme des MICO-80 Das Mikrocomputersystem MICO-80 benötigt für den Betrieb eine stabilisierte Speisespannung von 5V=. Die gesamte Stromaufnahme des Gerätes beträgt bei Aussteuerung aller Sieben-Segment-Anzeigen etwa 680 mA. Es wird jedoch empfohlen, ein Netzgerät mit 5V/1A zu verwenden. Damit lässt sich auch der Strombedarf von peripheren Zusatzgeräten, die an das System später angeschlossen werden, decken. IED bietet zum MICO-80 das Netzgerät NG-85 an, das diese Forderung erfüllt. [Bild 1] Anschluss des MICO-80 an die Versorgungsspannung Der MICO-80 ist, wie in Bild 1 gezeigt, an die Speisespannung anzuschließen. Nach dem Einschalten der Betriebsspannung oder nach Betätigung der Clear-Taste wird das System initialisiert. In der Anzeige erscheint: -4- MICO-80 Bedienungsanleitung 3. Tastenfeld Der MICO 80 besitzt insgesamt 25 Tasten, 16 schwarze, 8 orangerote und 1 rote Taste. Die Farben der Tasten kennzeichnen folgende Funktionsmerkmale des Systems: 16 schwarze Tasten Hexadezimale Eingabetasten. 8 orange Tasten Es lassen sich die Werte 0 bis F eingeben. Betriebstasten. 1 rote Taste Bei Betätigung wird eine bestimmte Betriebsart des MICO-80 eingeleitet. Initialisierunqstaste [Bild 2] Lage der Tasten des Anzeigefeldes und der Peripheriestecker beim MICO 80 Die orangen Tasten bewirken folgende Betriebsfunktionen: Taste "Store"= Betriebsart speichern. Nach Anwahl einer RAM-Speicherzellenadresse wird der angezeigte Speicherzellenwert nach der Betätigung der S-Taste übernommen. Wird mit dem hexadezimalen Tastenfeld ein neuer Wert eingegeben und anschließend die Taste betätigt, so wird dieser Wert in die angezeigte RAM-Zelle übernommen. In beiden Fällen wird die Adressanzeige um 1 erhöht. -5- MICO-80 Bedienungsanleitung Taste "Dekrementieren" Durch Betätigen der Taste D wird die Adressanzeige um 1 erniedrigt. Ein Programm kann durch Betätigung dieser Taste rückwärts ausgelesen werden. Taste "Adresse" wählen Die Betätigung der Taste A bewirkt, dass die eingegebene Zwei-Byte-Information, die in der Akku- und Flag-Anzeige sichtbar ist, in das Adressregister übernommen wird. Taste „Registeranzeige“ Nach Betätigung der Betriebstaste R wird der Registerbetrieb eingeleitet. Allerdings ist nach der Betätigung der Betriebstaste R noch die Registerpaarbestimmungstaste zu drücken. Nach Betätigung der nachstehend aufgeführten schwarzen Registerbestimmungstasten wird angezeigt: A, FL A‘, FL‘ B, C B‘, C‘ D, E D‘, E‘ H, L H‘, L‘ Index Register IX Index Register IY -6- MICO-80 Bedienungsanleitung IF Flip Flop Stand des Stackpointers Letzter Programmzählerstand Binär dekodierte Flag-Anzeige In der Anzeige wird der binär decodierte Flag-Stand wie folgt dargestellt: Stelle 27 26 25 24 23 22 21 20 Bedeutung Sign-Flag (plus S=0 / minus S=1) Zero-Flag (nicht Null Z=0 / Null Z=1) ohne Bedeutung, daher dunkel gesteuert (im System zu 0 gesetzt) Auxiliary-Carry-Flag (kein Hilfsübertrag AC=0 / Hilfsübertrag AC=1 ) ohne Bedeutung, daher dunkel gesteuert (im System zu 0 gesetzt) Parity-Flag (ungerade Parität P=0 / gerade Parität P=1) ohne Bedeutung, daher dunkel gesteuert (im System zu 1 gesetzt) Carry-Flag (kein Übertrag CY=0 / Übertrag CY=1) -7- MICO-80 Bedienungsanleitung Funktionstaste Nach Betätigung der Taste F werden eine Reihe von Systemfunktionen ausgelöst. Nachstehend sind die einzelnen Systemfunktionen aufgeführt: 00 Binäre Eingaben von Daten in den RAM-Bereich. 01 Adressbereiche überlappend verschieben. 02 Eine einzelne RAM-Zelle löschen, der restliche Speicherbereich wird um eine Stelle aufgerückt. 03 Speicherzelleninhalt in eine RAM-Zelle einfügen, alle anderen RAM-Zellen werden um eine Stelle nach hinten geschoben. 04 RAM-Speicherzellenbereich mit Konstanten füllen. 05 Berechnung von Relativ-Distanzen. Nach Eingabe der Anfangsadresse und der Zieladresse wird die relativ zur Adresse liegende Distanz angezeigt. 06 Umkehrung der Funktion 05. Nach Eingabe der Anfangsadresse und nach Eingabe des Relativ-Abstandes wird die Bestimmungsadresse berechnet. 07 HEX DUMP-Ausdruck mit vorwählbarer Baudrate von 300, 600 und 1200 Baud. 08 Eingabe eines ASCII-Textes in den RAM-Bereich vom Tastenfeld eines Datensichtgerätes. Baudrate vor wählbar mit 300, 600 und 1200 Baud. 09 Ausgabe eines Blocks von ASCII-Zeichen auf ein Datensichtgerät. Baudrate vor wählbar mit 300, 600 und 1200 Baud. 10 Übertragung von Informationen-von Cassette in den RAM-Bereich des MICO-80 11 Aufzeichnen von Informationen aus dem RAM-Bereich des MICO-80 auf Cassette. 12 USER-KEY = Anwender-Funktionstaste. Wird in die RAM-Zellen 8792 = C3, in 8793 = NW-Byte der Adresse und in 8794 HW-Byte der Adresse eingespeichert, so wird, nach Betätigung der Funktionstaste 12, ein Anwenderprogramm auf der abgelegten Adresse angesprungen. 13 Rück-Assembler 8080 Code 14 Rück-Assembler Z80 Code 15 Download einer Intel-Hexdatei über die serielle Schnittstelle mit 1200 Baud. -8- MICO-80 Bedienungsanleitung Die Eingabe nach Betätigung der Funktionstaste ist wie folgt durchzuführen: F00 Binäre Eingabe von Daten in den RAM-Bereich. Nach Betätigung der orangefarbenen Taste F erscheint in der Anzeige: Fu. 00 = 4d2 Anschließend ist die orangefarbene Taste G zu drücken, in der Anzeige erscheint: AE = Anfangsadresse, z. B. 8000 eingeben, Taste S drücken. Die Anzeige erlischt. Binärwerte eintasten, z.B. 0 0 1 1 1 1 1 0, in der Anzeige erscheint: 8000 3E F01 Wird im Anschluss daran die orangefarbene Taste S betätigt, so wird 3E in die RAM-Zelle 8000 eingespeichert. Adressbereiche überlappend verschieben. Orangefarbene Taste F und anschließend 01 drücken, in der Anzeige erscheint: Fu.01 = 770 Taste G drücken, es erscheint AA Anfangsadresse eingeben (z.B. 0100) und orangefarbene Taste S drücken. In der Anzeige erscheint: EA Endadresse eingeben (z.B. 0200) und orangefarbene Taste S drücken, es erscheint bA .Bestimmungsadresse eingeben (z.B. 8000) und orangefarbene Taste S drücken. F02 Die Anzeige geht auf 0000 zurück, der Verschiebevorgang ist beendet. Eine einzelne RAM-Zelle löschen, der restliche Speicherbereich wird um eine Stelle aufgerückt. Orangefarbene Taste F, anschließend 02 drücken. In der Anzeige erscheint: Fu.02 = CF1 anschließend orangefarbene Taste G drücken, in der Anzeige erscheint: AL = Adresse löschen. Zu löschende RAM-Speicherzellenadresse (z.B. 8000) eingeben und orangefarbene Taste S drücken, in der Anzeige erscheint: EA = Endadresse des Datenblocks des RAM-Bereiches eingeben (z.B. -9- MICO-80 Bedienungsanleitung F03 8100) und orangefarbene Taste S drücken, Die Anzeige geht auf 0000 zurück. Die RAM-Zelle 8000 ist gelöscht, der restliche Speicherbereich wurde aufgerückt. Einfügen eines Speicherzelleninhaltes in eine RAM-Zelle. Alle anderen Speicherzellen werden um eine Stelle nach hinten geschoben. Orangefarbene Taste F und anschließend 03 drücken, in der Anzeige erscheint: Fu.03 = d 20, anschließend orangefarbene Taste G drücken, in der Anzeige erscheint: AE = Adresse einfügen. z.B. 8001 eingeben und orangefarbene Taste S drücken, in der Anzeige erscheint: EA = Endadresse eingeben (z.B. 804F ) und orangefarbene Taste S drücken, in der Anzeige erscheint: Co = einzufügende Konstante. F04 Konstante eingeben (z.B. 55) und orangefarbene Taste S drücken. Die Anzeige kehrt auf 0000 zurück. Die eingegebene Konstante 55 ist nun in RAM-Zelle 8001 gespeichert, die restlichen Speicherzellen sind eine Stelle nach hinten geschoben (Insert Funktion). RAM-Speicherzellenbereich mit Konstanten füllen. Orangefarbene Taste F, anschließend 04 drücken. In der Anzeige erscheint: Fu.04 = 490 Orangefarbene Taste G drücken, in der Anzeige erscheint: AA = Anfangsadresse Anfangsadresse des mit Konstanten zu belegenden Bereiche eingeben (z.B. 8000), orangefarbene Taste S drücken, in der Anzeige erscheint: EA = Endadresse. Endadresse des mit Konstanten zu belegenden Bereiches eingeben (z.B. 801F) und orangefarbene Taste S drücken, in der Anzeige erscheint: Co = einzuspeichernde Konstante. F05 Konstante eingeben (z.B. FF) und orangefarbene Taste S drücken. Die Anzeige kehrt auf 0000 zurück. Die RAM-Speicherzellen 8000-801F sind nun mit der Konstanten FF belegt. Berechnung von Relativ-Distanzen. - 10 - MICO-80 Bedienungsanleitung Orangefarbene Taste F, anschließend 05 drücken, in der Anzeige erscheint: Fu.05 = DCO. Anschließend orangefarbene Taste G drücken, in der Anzeige erscheint: AA = Anfangsadresse. Anfangsadresse eingeben (z.B. 810B) und orangefarbene Taste S drücken, in der Anzeige erscheint: bA = Bestimmungsadresse. Bestimmuncsadresse = Zieladresse eingeben (z.B. 812F) und orangefarbene Taste S drücken. In der Anzeige er¬scheint: rA = Relativ zur Adresse 22 F06 Wird die höchstmögliche Distanz für den positiven Bereich 7F(16), für den negativen Bereich 80(16) überschritten, so erscheint in der Anzeige "Fehler". Berechnen von Relativ-Distanzen. Nach Eingabe der Anfangsadresse und nach Eingabe des Relativ-Abstandes wird die Bestimmungsadresse ermittelt (Umkehrung der Funktion 05). Orangefarbene Taste F, anschließend 06 drücken, in der Anzeige erscheint: Fu.06 = E11. Orangefarbene Taste G drücken, in der Anzeige erscheint AA = Anfangsadresse. Anfangsadresse (z.B. 810B) eingeben und orangefarbene Taste S drücken, in der Anzeige erscheint: rA = Relativ-Abstand Relativ-Abstand (z.B. 22) eingeben und orangefarbene Taste S drücken, in der Anzeige erscheint: bA = 812F. F07 Das ist der berechnete Wert der Bestimmungs- bzw. Zieladresse. HEX-DUMP-Ausdruck mit vorwählbarer Baudrate über ein Datensichtgerät oder Drucker mit serieller Schnittstelle EIA232. Orangefarbene Taste F, anschließend 07 drücken, in der Anzeige erscheint: Fu.07- = 600 - 11 - MICO-80 Bedienungsanleitung Daraufhin orangefarbene Taste G drücken, in der Anzeige erscheint: baud. Nun ist die gewünschte Baudrate zu wählen. Taste 3 = 300 Baud, Taste 6 = 600 Baud, Taste C = 1200 Baud Nach Betätigung einer der drei aufgeführten Tasten erscheint in der Anzeige: AA = Anfangsadresse Anfangsadresse des auszudruckenden Speicherbereiches eingeben (z.B. 8000) und orangefarbene Taste S drücken, in der Anzeige erscheint: EA = Endadresse Endadresse des auszudruckenden Speicherbereiches eingeben (z.B. 8100) und Taste S drücken, in der Anzeige erscheint: EA = 8100. F08 Ist der gewünschte Speicherbereich ausgegeben, so kehrt die Anzeige auf 0000 zurück. Eingabe eines ASCII-Textes vom Tastenfeld eines Datensichtgerätes in den RAM-Bereich des MICO-80. Dabei muss eine serielle Schnittstelle nach EIA232 vorhanden sein. Die Baudrate ist vorwählbar (300, 600 oder 1200 Baud). Orangefarbene Taste F, anschließend 08 drücken, in der Anzeige erscheint: Fu.08 = 882 Orangefarbene Taste G drücken, in der Anzeige erscheint: baud. Baudwahl wie unter Fu.07 beschrieben vornehmen, in der Anzeige erscheint: AA = Anfangsadresse. Anfangsadresse der RAM-Zelle,ab der die Daten eingespeic werden sollen, eingeben (z.B. 8000) und orangefarbene Taste S drücken, in der Anzeige erscheint: EA = Endadresse. Endadresse eingeben (z.B. 8500) und orangefarbene Taste S drücken, in der Anzeige erscheint: EA = 8500. Nun können beliebige Texte eingegeben werden. Bei falscher Eingabe kann - 12 - MICO-80 Bedienungsanleitung F09 eine Korrektur der eingespeicherten Information durch die Taste Back-Space erfolgen. Will man das Eingabeprogramm vorzeitig verlassen, so kehrt nach Betätigung von CTRL-C das Programm zur Adresse 0000 zurück. Für den späteren Ausdruckvorgang wird automatisch die zuletzt eingegebene RAM-Speicherzelle abgelegt (87A0/87A1). Ist der Speicherendbereich erreicht, so erscheint in der Anzeige ein Hinweis. Ausgabe eines Blocks von ASCII-Zeichen auf ein Datensichtgerät oder einen Drucker. Dabei muss eine serielle Schnittstelle nach EIA232 vorhanden sein. Die Baudrate ist vorwählbar (300, 600 oder 1200 Baud). Die Software des MICO-80 ist so ausgelegt, dass wahlweise eine gesteuerte Datenübergabe (Handshake-Betrieb) gewählt werden kann (siehe Beschreibung Schnittstelle). Orangefarbene Taste F, anschließend 09 drücken in der Anzeige erscheint: Fu.09 = 800 Orangefarbene Taste G drücken, in der Anzeige erscheint: baud. Baudwahl wie unter Fu.01 beschrieben vornehmen, in der Anzeige erscheint: AA = Anfangsadresse. Anfangsadresse des auszudruckenden ASCII-Blocks eingeben (z.B.8000) und anschließend orangefarbene Taste S drücken. In der Anzeige erscheint: EA = Endadresse. F10 Wurde vorher die Funktion 08 benutzt, so ist lediglich die orangefarbene S-Taste zu betätigen. Damit wird automatisch die vorher abgespeicherte Endadresse übernommen. Aufzeichnen von Informationen aus dem RAM-Bereich des MICO 80 auf Cassette. Orangefarbene Taste F, anschließend 10 drücken, in der Anzeige erscheint: Fu.10 = Orangefarbene Taste G drücken, in der Anzeige erscheint: AA = Anfangsadresse. Anfangsadresse des aufzuzeichnenden Speicherbereiches eingeben (z.B. 8000) und Taste S drücken, in der Anzeige erscheint: EA = Endadresse. Zuerst ist jedoch das Aufzeichnungsgerät an die Interface-Platine anzustecken, einzuschalten und richtig auszusteuern. Die Interface-Platine - 13 - MICO-80 Bedienungsanleitung ist am Stecker ST des MICO 80 anzustecken. Es sollte ein Kassettengerät mit Handaussteuerung benützt werden. Nach Eingabe der Endadresse des aufzuzeichnenden Speicherbereiches (z.B. 8100) orangefarbene Taste S drücken. Die Aufzeichnung beginnt, in der Anzeige erscheint: F11 Nach erfolgter Aufzeichnung geht das Programm zur Adresse 0000 zurück. Einlesen von Daten, die auf Cassette abgespeichert sind, in den RAM-Bereich des MICO-80. Orangefarbene Taste F, anschließend 11 drücken, in der Anzeige erscheint: Fu.11 = 8d5 Das Kassettengerät ist über die Interface-Platine an den MICO-80 anzuschließen und einzuschalten. Nach Betätigung der orangefarbenen Taste G wird der Überspielvorgang gestartet. In der Anzeige erscheint: F12 USER-KEY = Anwender-Funktionstaste Orangefarbene Taste F, anschließend 12 betätigen, in der Anzeige erscheint: Fu.12 = 8Cd. Vor Betätigung der Start-Taste ist in den Speicherzellen 8792/93 und 8794 ein Sprungbefehl, der zum Anwenderprogramm z.B. 8792 <= C3 8793 <= 00 8794 <= 80 F13 Ist ab Adresse 8000 das Anwender-Programm abgelegt, so wird nach Anwahl der Funktion 12 und nach Betätigung der orangefarbenen Taste G das Programm gestartet. Rückassembler im 8080 Code. Ausdruck mit vorwählbarer Baudrate über ein Datensichtgerät oder Drucker mit serieller Schnittstelle EIA232. Orangefarbene Taste F, anschließend 13 drücken, in der Anzeige erscheint: Fu.13- = 550 - 14 - MICO-80 Bedienungsanleitung Daraufhin orangefarbene Taste G drücken, in der Anzeige erscheint: baud. Nun ist die gewünschte Baudrate zu wählen. Taste 3 = 300 Baud, Taste 6 = 600 Baud, Taste C = 1200 Baud Nach Betätigung einer der drei aufgeführten Tasten erscheint in der Anzeige: AA = Anfangsadresse Anfangsadresse des auszudruckenden Speicherbereiches eingeben (z.B. 8000) und orangefarbene Taste S drücken, in der Anzeige erscheint: EA = Endadresse Endadresse des auszudruckenden Speicherbereiches eingeben (z.B. 8100) und Taste S drücken, in der Anzeige erscheint: EA = 8100. F14 Ist der gewünschte Speicherbereich disassembliert, so kehrt die Anzeige auf 0000 zurück. Rückassembler im Z80 Code. Ausdruck mit vorwählbarer Baudrate über ein Datensichtgerät oder Drucker mit serieller Schnittstelle EIA232. Orangefarbene Taste F, anschließend 13 drücken, in der Anzeige erscheint: Fu.14- = 553 Daraufhin orangefarbene Taste G drücken, in der Anzeige erscheint: baud. Nun ist die gewünschte Baudrate zu wählen. Taste 3 = 300 Baud, Taste 6 = 600 Baud, Taste C = 1200 Baud Nach Betätigung einer der drei aufgeführten Tasten erscheint in der Anzeige: AA = Anfangsadresse Anfangsadresse des auszudruckenden Speicherbereiches eingeben (z.B. 8000) und orangefarbene Taste S drücken, in der Anzeige erscheint: EA = Endadresse Endadresse des auszudruckenden Speicherbereiches eingeben (z.B. 8100) und Taste S drücken, in der Anzeige erscheint: - 15 - MICO-80 Bedienungsanleitung EA = 8100. F15 Ist der gewünschte Speicherbereich disassembliert, so kehrt die Anzeige auf 0000 zurück. Download einer Intel-Hexdatei. Übertragung vom PC über die Schnittstellenplatine IF-232 und Stecker ST2. Orangefarbene Taste F, anschließend 15 betätigen, in der Anzeige erscheint: Fu.15=556. Nach Betätigung der orangen Taste G erscheint baud. Mit Betätigung der schwarzen Taste C wird die Baudrate 1200 ausgewählt. In der Anzeige erscheint: SendEn Auf dem PC ist der Upload zu starten. Dies erfolgt im MICO-80 Entwicklungssystem im Programm EDI.EXE nach Erstellen und fehlerfreier Assemblierung einer Datei mit den Tasten Alt-F9 und S. Nach erfolgreicher Übertragung erscheint in der Anzeige des MICO-80: EndE Taste für Einzelschritt-Programmabarbeitung Nach Betätigung der Taste E wird nur ein Befehl ausgeführt. Je nachdem, ob ein 1 Byte-, 2 Byte-, 3 Byte- oder 4 Byte- Befehl eingespeichert wurde, wird die Adressanzeige um 1, 2, 3 oder 4 Schritte weitergeschaltet. Taste für Programmabarbeitung im Automatikbetrieb Bei Betätigung der Taste G beginnt der Prozessor mit der Programmabarbeitung: Am Ende eines Programms muss ein HALT-Befehl, eine Restart-Anweisung oder ein Sprungbefehl stehen. Ein HALT-Zustand wird durch, die links vom Tastenfeld angeordnete gelbe HALT-LED zur Anzeige gebracht. Taste Break - unterbrechen Nach Betätigung der Taste B wird der HALT-Zustand unterbrochen. Im Adressfeld steht die RAM-Speicheradresse, die nach dem HALT-Befehl folgt. - 16 - MICO-80 Bedienungsanleitung Taste Clear = System initialisieren Nach Betätigung der Taste C wird der Programm-Counter auf 0000 zurückgestellt. Ferner wird das INTE-FF zurückgesetzt. über die Initialisierungsroutine wird der Stack-Pointer auf den Wert 87 gestellt. Nachstehend ist die Auflistung der im MICO 80 verwendeten Unterprogramme vorgenommen : - 17 - MICO-80 Bedienungsanleitung 4. Auflistung der Unterprogramme Name AASCI A_TEXT BAUD BCOUT DECOD DEZH DISRG DUNKL EXAF FEHLN FEHLR HEXDZ HEXIN HL-DE SECD SECH SUBHD T16 T33 T45 T90 T270 TASTD TASTM TEXT8 Start Kurzbeschreibung Adresse 05ED Serielle Ausgabe von 2 ASCII-Zeichen oberes Akkuhalbbyte: Reg. B, unteres Akkuhalbbyte: Reg. C 05F4 Ausgabe eines Blocks von 2 ASCII-Zeichen Voreinstellung: Startadr. RPH, Endadr. RPD, Baudrate entsprechend UP Baud 056B Baudfestlegung bei serieller Ausgabe 06A7 Serielle Ausgabe von 2 ASCII-Zeichen oberes Akkuhalbbyte: Reg. B unteres Akkuhalbbyte: Reg. C 01C0 Anzeige der Speicherzelleninhalte 87F4 87F7 0390 Dezimal-Hexadezimal-Umwandlung einer Zahl im Akku 01A1 Anzeige von Daten und Adreßregister 0380 Dunkelsteuerung der Anzeige 03FA Tauschen des Akku- mit dem Inhalt des Flagregisters 03A6 Ausschreiben des Wortes Fehler ohne Rückkehr zum Programm 03CC Ausschreiben des Wortes Fehler mit Rückkehr zum Programm 0370 Hexadezimal-Dezimal-Umwandlung einer Zahl im Akku 0707 Eingabe einer 4stelligen Hex-Zahl über die Tastatur. Es kann im RPH ein Text-Merkmal im 7-Segment-Code übergeben werden, das links in der Anzeige steht 06BF Vergleich mit RPH und RPD: <HL> > <DE> : CY=1, sonst CY=0 0310 Variable Zeiten im Sekunden-Bereich dezimal 0313 Variable Zeiten im Sekunden-Bereich hexadezimal 06FA Vergleich mit RPH und RPD: <HL> = <DE> : Z=1, sonst Z=0 06C7 Zeitprogramm 1,6ms 05D4 Zeitprogramm 3,3ms 02DD Zeitprogramm 4,5ms 02EA Zeitprogramm 9ms 02EF Zeitprogramm 27ms 0216 Tastenabfrage II 0223 Tastenabfrage I 0360 Darstellung von 8 Zeichen im Anzeigefeld ZSECD 0300 ZSECH 0303 Variable Zeiten im 1/10 Sekundenbereich dezimal Variable Zeiten im 1/10 Sekundenbereich hexadezimal - 18 - kompatibel zu Profi-5/5E beide beide bei Wahl von 87xx beide beide beide beide beide beide beide beide beide beide beide beide beide beide beide beide beide bei Wahl von 87xx beide beide MICO-80 Bedienungsanleitung 5. Einspeichern von Programmen in den RAM-Bereich Der MICO-80 ist mit dem aufwärtskompatiblen Mikroprozessorbaustein Z 80 ausgerüstet. Insbesondere der Personenkreis, der sich neu in die Mikrocomputerprogrammierung einarbeiten muss, empfindet es einfacher, zunächst den Grundbefehlssatz der Mikroprozessoren 8080/8085 zu erarbeiten. Außerdem steht zur Einarbeitung in die Programmierung des 8080/8085 das Fachbuch IV C Mikrocomputer der HPI-Fachbuchreihe zur Verfügung, in dem der Befehlssatz des 8080/8085 ausführlich erklärt ist. Die in diesem Buch aufgeführten Programmbeispiele können direkt in den MICO 80 eingegeben und abgearbeitet werden. Daher wird zunächst die Assemblerschreibweise der 8080/8085-Prozessoren in der Grundeinführung der Bedienung des MICO 80 verwendet. Es ist jedoch darauf zu achten, dass wegen des erweiterten RAM-Bereiches die Anzeigezellen des Systems sowie die Maskierungszelle anstelle der Adressen 83XX unter 87XX angesprochen werden müssen (siehe Aufstellung Unterprogramme). Erst im Kapitel 9 Erweiterte Z80-Befehle wird die etwas andere Befehlsschreibweise der Z80 Mikroprozessoren eingeführt. Damit lässt sich einfach die typische Befehlsschreibweise beider Mikroprozessortypen (8080/8085 und Z 80) erarbeiten. 5.1. Das Einspeichern von Daten und Konstanten in den RAM-Bereich Bevor eine Programmabarbeitung vorgenommen werden kann, müssen die Befehle und Daten der Reihe nach in den RAM-Bereich eingespeichert werden. Anwahl der Speicheradresse: Die niedrigste RAM-Speicherzellenadresse in der Grundausbaustufe des MICO 80 ist 8000(16). Diese Adresse muss zuerst angewählt werden. Darstellung des Adress- und Datenfeldes der Siebensegmentanzeigen: [Bild 3] Adress- und Datenfeld Die Siebensegmentanzeige ist in ein Adressfeld und in ein Datenfeld aufgeteilt. Nach dem Einschalten des MICO 80 oder nach Betätigung der C-Taste stellt sich die Anzeige entsprechend Bild 3 ein. Mit den schwarzen hexadezimalen Eingabetasten ist nun die RAM-Adresse 8000 einzutasten. Die Adresse 8000 steht nun im Datenfeld. wie in Bild 4 dargestellt. - 19 - MICO-80 Bedienungsanleitung [Bild 4] Eingabe der Anfangsadresse Wird nun die orangefarbene Betriebstaste A betätigt, so erscheint in der Anzeige: Anzeige nach Betätigung der A-Taste Sie sehen, dass nach Betätigung der A-Taste die gewählte Anfangsadresse im Adressfeld des Anzeigebereiches dargestellt wird. In den beiden äußersten rechten Siebensegmentanzeigen wird der Inhalt der angewählten Speicherzelle dargestellt. sWir wollen nun ein einfaches Programmbeispiel der Reihe nach ausführen: Beispiel 1: In die angegebenen RAM-Speicherzellen sind nachfolgend aufgeführte hexadezimale Werte einzuspeichern. 3E AA 06 BB 0E CC => => => => => => 8000 8001 8002 8003 8004 8005 Zuerst ist die Adresse wie unter 4.1 beschrieben anzuwählen. Nach der Anwahl der Adresse ist der erste einzuspeichernde Wert mit den schwarzen hexadezimalen Eingabetasten einzutasten (z.B. 3E). In der Anzeige erscheint: BEISP0001: Sprungmarke Adresse 8000 8001 8002 8003 8004 8005 Mnemonische Bezeichnung DB 3EH DB 0AAH DB 06H DB 0BBH DB 0EH DB 0CCH Hex. Anweisung 3E AA 06 BB 0E CC - 20 - Bemerkung MICO-80 Bedienungsanleitung Anschließend ist die Betriebstaste S zu betätigen. In der Anzeige erscheint: Nach der Betätigung der Taste S wurde der vorher eingegebene Wert 3E in die RAM-Speicherzelle 8000 eingespeichert. Die Adressanzeige erhöht sich nach der Betätigung der S-Taste jeweils um 1. Der nun in den beiden rechten Anzeigen stehende Wert ist der zufällige Inhalt der Speicherzelle 8001. Die übrigen Werte sind wie beschrieben ebenso abzuspeichern. Mit den schwarzen Tasten AA eingeben, orangefarbene Taste S betätigen. Mit den schwarzen Tasten 06 eingeben, orangefarbene Taste S betätigen. Mit den schwarzen Tasten BB eingeben, orangefarbene Taste S betätigen. Mit den schwarzen Tasten 0E eingeben, orangefarbene Taste S betätigen. Mit den schwarzen Tasten CC eingeben, orangefarbene Taste S betätigen. Die einzelnen Werte werden in die RAM-Zellen eingespeichert. Nach jeder Betätigung der Taste S wird die Adressanzeige um 1 erhöht. 5.2. Vor- und Rückwärtsauslesen eingespeicherter Informationen Es ist außerordentlich wichtig, nach einem Einspeichervorgang zu prüfen, ob die Werte auch richtig in den entsprechenden RAM-Speicherzellen stehen. Diese Prüfung lässt sich durch das Vor- und Rückwärtsauslesen der eingespeicherten Daten vornehmen. Sind alle Werte des Beispiels 1, wie vorher beschrieben, eingespeichert, so steht die Adressanzeige auf 8006. In diesem Fall ist es am besten, die orangefarbene Dekrementtaste D zu betätigen. Nach einmaliger Betätigung der Taste D erscheint in der Anzeige. Anschließend Taste D erneut betätigen, in der Anzeige erscheint: In der eben geschilderten Weise sind die Speicherzellen zurück bis zur Adresse 8000 auszulesen und zu kontrollieren. Man erkennt, dass bei jeder Betätigung der Taste D die Adressanzeige um 1 erniedrigt (= dekrementiert) wird. Ebenso lassen sich die RAM-Speicherzellen auch durch Vorwärtsauslesen kontrollieren. Zunächst ist die Anfangsadresse 8000 wie in 4.1 beschrieben anzuwählen. In der Anzeige erscheint: - 21 - MICO-80 Bedienungsanleitung Im Anschluss daran ist die Taste S zu betätigen, in der Anzeige erscheint: Anschließend Taste S betätigen, in der Anzeige erscheint: usw. Man erkennt, dass nach jeder Betätigung der Funktionstaste S ohne vorheriger Betätigung der schwarzen hexadezimalen Eingabetasten die Adressanzeige um 1 erhöht, also inkrementiert wurde. Die Taste S hat eine Doppelfunktion. Werden mit den Hex-Tasten Informationen eingegeben, so werden diese in die angewählte RAM-Speicherzelle übernommen. Die Adressanzeige wird inkrementiert. Wird dagegen kein hexadezimaler Zahlenwert eingegeben, aber die Funktionstaste S betätigt, so wird der vorher eingespeicherte Wert übernommen und die Adressanzeige um den Wert 1 inkrementiert. In diesem Falle wirkt die Taste S als Adress-Inkrementtaste. - 22 - MICO-80 Bedienungsanleitung 5.3. Die Festlegung des MICO-80 Speicherbereichs Die folgenden RAM Speicheradressen bezieht sich auf einen RAM-Ausbau mit 2KByte, in Klammern () für 1KByte. Ist nur 1KByte RAM Speicher verbaut, ändern sich die Adressen 87xx auf 83xx. Die Adressen sind alle in Hexadezimal Schreibweise angegeben. 8000 bis 87FF RAM-Bereich des MICO-80 (8000 bis 83FF) 2Kx8 (1Kx8) CMOS RAM. 7800 bis 7FFF 1000 bis 1FFF 0000 bis 0FFF Der Anwenderstack wird vom Monitorprogramm auf 87B1 (83B1) gestellt. Zusatz-RAM-Bereich für Anwenderwünsche CMOS-RAM 2Kx8 Adressbereich des Zusatz-EPROMs 4Kx8 für Zusatzfunktionen und Anwenderprogramme Monitorbereich des MICO-80 4Kx8 mit zahlreichen Systemprogrammen und Unterprogrammen [Bild 6] Speicherbelegung des MICO-80 SP = Stackpointer (Stapelzeiger) - 23 - MICO-80 Bedienungsanleitung 5.4. System RAM-Zellen ADRESSE 87FF 87FE 87FD 87FC 87FB 87FA 87F9 87F8 87F7 87F6 87F5 87F4 87F3 87F2 87F1 87F0 87EF 87EE 87ED 87EC 87EB 87EA 97E9 87E8 87E7 87E6 87E5 87E4 87E3 87E2 87E1 87E0 87DF 87DE 87DD 87DC 87DB 87DA 87D9 87D8 87D7 87D6 87D5 87D4 87D3 87D2 87D1 SYMBOL 7-SEGMENT ANZ.7 .. 6 .. 5 .. 4 .. 3 .. 2 .. 1 .. 0 WORT 1 .. 2 .. 3 .. 4 KFL. SOFTWARE-BREAK ADRESSE <HW> ADRESSE <NW> DATEN <HW> DATEN <NW) A FLAG B C D E H L IX <HW> IX <NW> IY <HW> IY <NW> A' FLAG' B' C' D' E' DZ H' L' IF-REGISTER IF-REGISTER SP <HW> SP <NW> PC <HW> PC <NW> VERWENDUNG SEGMENT-DATEN-BUFFER DISPLAY-DATEN-REGISTER TASTEN MERKER HW BYTE (00) NW-BYTE (66) SPRUNG (C3) ADRESS-REGISTER DATEN-REGISTER CPU UND REGISTER RETTUNGSBEREICH DUNKELMASKIERUNGSZELLE INTERRUFT-REGISTER STACK PROGRAMM-COUNTER - 24 - MICO-80 Bedienungsanleitung 87D0 .... 87B1 ALLGEMEIN SYSTEM VERWENDUNG 5.5. I/O-Adressierung Baustein 8255 Kanal / Steuerwort KANAL A KANAL B KANAL C CONTROL WORD I/O-Adresse 00 01 02 03 Z80 PIO KANAL A KANAL B CONTROL WORD A CONTROL WORD B 10 11 12 13 Z80 CTC KANAL 0 KANAL 1 KANAL 2 KANAL 3 20 21 22 23 Z80 PIO SYSTEM KANAL A KANAL B CONTROL WORD A CONTROL WORD B 30 31 32 33 Der Ein-Ausgabe-Baustein 8255 steht dem Anwender zur freien Verfügung. Vor Benutzung muss der Baustein jedoch vom Anwender programmiert werden. Ebenso lässt sich der PIO und der CTC vom Anwender beliebig verwenden. Auch hier ist es erforderlich, die Bausteine zu programmieren. Der PIO-System sollte vom Anwender nicht benutzt werden, da dieser ausschließlich für Systemfunktionen belegt ist. - 25 - MICO-80 Bedienungsanleitung 6. Die Programmabarbeitung In Kapitel 4 wurde gezeigt, wie die Befehle und Daten der Reihe nach in den Schreib-Lese-Speicherbereich (RAM-Bereich) abgespeichert werden können. Damit ein Datentransfer vorgenommen oder eine bestimmte logische oder arithmetische Aufgabe ausgeführt werden kann, muss eine Programmabarbeitung erfolgen. Die Programmabarbeitung kann beim MICO 80 erfolgen im Einzelschrittbetrieb oder im Automatikbetrieb. Ein weiteres Beispiel soll die Abarbeitung eines kleinen Programmes veranschaulichen. Beispiel 2: Durch einen Datentransferbefehl ist in den Akkumulator die hexadezimale Zahl 52 und in das Register B die hexadezimale Zahl 05 zu bringen. Im Anschluss daran ist der Inhalt des Registers B zum Inhalt des Akkumulators zu addieren. Das Endergebnis der arithmetischen Operation ist in Adresse 8600 abzuspeichern. Das Beispiel 2 ist wie folgt zu lösen: 1. 2. 3. 4. 5. Erstellung eines Flussdiagrammes Erstellung des Programmes. Dabei ist das Programm in einer Programmauflistung darzustellen. Einspeichern der Daten nach Programmliste Überprüfung der eingespeicherten Daten durch Auslesen der RAM-Speicherzelleninhalte Abarbeitung des Programmes a) im Schrittbetrieb, b) im Automatikbetrieb 6. Überprüfung des Inhaltes des Akkumulators, des Registers B und der RAM-Speicherzelle 8600. Lösung des 2. Beispiels: 1. Flussdiagramm Start 52 => A 05 => B <A>+<B> => A <A> => 8600 Ende - 26 - MICO-80 Bedienungsanleitung Erklärung: Zuerst sind die zu verarbeitenden Werte durch MVI-Befehle in den Akku und in das B-Register zu transferieren. Im Anschluss daran wird der Inhalt des Registers B zum Inhalt des Akkumulators hinzuaddiert. Der ursprünglich im Akku stehende hexadezimale Wert 52 geht verloren, da der Akkumulator nach ausgeführter Addition das Endergebnis enthält. Dieses Ergebnis wird am Ende durch einen STA-Befehl in die RAM-Zelle 8600 abgespeichert. 2. Erstellung einer Programmliste BEISP0002: Sprungmarke Adresse 8000 8002 8004 8005 8008 Mnemonische Bezeichnung LD A,52H LD B,05H ADD A,B LD (8600H),A HALT Hex. Anweisung 3E 52 06 05 80 32 0086 76 Bemerkung 52 => Akku 05 => Register B <A> + <B> => Akku <A> => 8600 Die Auflistung von Programmen wird meist nach einem bestimmten Schema vorgenommen. Am Anfang der Liste steht bei umfangreicher Programmen eine Sprungmarke. Dadurch werden z.B. bestimmte Einsprung-Punkte bei unbedingten und bedingten Sprüngen markiert. Bei sehr einfachen Programmen kann das Feld für die Sprungmarke entfallen. Es folgt eine Spalte, in der die Adresse aufgeführt ist. Bei der Einspeicherung der Programmdaten wird meist bei der niedrigsten RAM-Speicherzelle begonnen. Es folgt die mnemonische Kurzbezeichnung und die hexadezimale Anweisung. Zur besseren Programmübersicht wird in der Spalte "Bemerkung" in Kurzschreibweise zur Programmierung ein Hinweis gegeben. In Sonderfällen, z.B. bei der Maskierung von Datenwörtern, wird auch die binäre Anweisung zusätzlich im Programm mit angegeben. 3. Anfangsadresse 8000 wie unter 4,1 beschrieben anwählen und die Daten abspeichern. 4. Sind die Daten abgespeichert, so ist durch Rückwärtsauslesen die Richtigkeit der Daten zu kontrollieren. 5. Abarbeitung des Programmbeispiels: a. Abarbeitung des Programmes im Schrittbetrieb: Vor Abarbeitung des Programmes ist die Anfangsadresse 8000 anzuwählen. Abarbeitung im Einzelschrittbetrieb bedeutet, dass nach jeder Anweisung ein Interrupt ausgelöst wird und alle Register gerettet werden. Dadurch kann man sehr gut eventuelle Programmfehler schrittweise verfolgen. Je nachdem, ob es sich um einen 1-, 2-, 3- oder 4-Byte-Befehl handelt, wird die Adressanzeige um 1 bis 4 Schritte weitergeschaltet. Zur Auslösung einer schrittweisen Abarbeitung dient beim MICO-80 die Betriebstaste E. Betätigen Sie nun bei Anfangsadresse 8000 die orangefarbene Betriebstaste E, im Adressfeld steht 8002, der Adresszähler wurde um 2 Schritte weitergeschaltet, da es sich um einen 2 Byte-Befehl handelte. Nach Abfrage des Registers A steht im Akku 52. Nach erneuter Betätigung der Taste E steht in der Adressanzeige 8004. Der Befehl bewirkte, dass in das Register B 05 transferiert wurde. Fragen Sie nun das Register B ab, so werden Sie feststellen, dass im Register B 05 steht. - 27 - MICO-80 Bedienungsanleitung Nach erneuter Betätigung der Taste E steht die Adressanzeige auf 8005. Die Ausführung des 1-Byte-Befehls bewirkte, dass <A> und <B> addiert wurden. Das Endergebnis 57 steht im Akku. Dieser Wert ist neben der Adressanzeige 8005 direkt abzulesen, da bei der Einzelschrittabarbeitung jeweils der Akkuinhalt und der hexadezimale Wert des Flag-Registers zur Anzeige gebracht wird. Nach erneuter Betätigung der Taste E steht in der Adressanzeige 8008. Mit dem letzten Befehl wurde der Akkuinhalt in die Speicherzelle 8700 abgespeichert. Wählen Sie nun die Adresse 8600 an, so können Sie als Inhalt der Speicherzelle 57 ablesen. Der letzte Befehl ist ein HALT-Befehl. Er wird für die automatische Programmabarbeitung benötigt. Im Einzelschrittbetrieb wird der Befehl übergangen. In der Einzelschrittabarbeitung kann Befehl für Befehl ausgeführt und auf seine Richtigkeit überprüft werden. b. Programmabarbeitung im Automatikbetrieb: Bei umfangreichen Programmen oder bei Programmen, in denen Programmsprünge auftreten, wendet man die automatische Programmabarbeitung an. Als letzter Befehl eines Programmes muss ein HALT-Befehl stehen (natürlich kann auch ein Restart-Befehl oder ein unbedingter Sprungbefehl ein Programm abschließen). Wählen Sie nun die Anfangsadresse 8000 an. Betätigen Sie die Taste G. Die Anzeige bleibt unverändert. Sie können aber feststellen, dass die links vom Tastenfeld angebrachte gelbe HALT-LED leuchtet. Durch Auslösung eines Interrupts muss nun das Programm abgeschlossen werden. Betätigen Sie dazu die Taste B (break). Die HALT-LED erlischt, die Adressanzeige steht auf 8009, als Akkuinhalt wird 57 angezeigt. Bei umfangreichen Programmen lassen sich beliebig Haltepunkte setzen. Fassen wir die wichtigsten Punkte der Programmabarbeitung noch einmal zusammen: Bei der Programmabarbeitung wird jeweils die Adresse, der hexadezimale Akkuinhalt und der Flag-Zustand in hexadezimaler Form angezeigt. Im Einzelschrittbetrieb lässt sich Befehl für Befehl verfolgen. Wird eine Programmpassage verlassen, um z.B. ein Register abzufragen, so kehrt nach Betätigung der Taste E der Prozessor zur alten Programmpassage zurück und führt den nächsten Befehl aus. Wird dagegen der Inhalt einer RAM-Speicherzelle abgefragt, so muss nach Verlassen einer Programmpassage die Adresse des nächstabzuarbeitenden Befehls erneut angewählt werden. - 28 - MICO-80 Bedienungsanleitung 7. Die Ein- und Ausgabe von Informationen über den Ein-Ausgabe-Baustein 8255 Zur Ein-Ausgabe von Informationen lässt sich die EAM-80 jeweils an die 34polige Stiftleiste ST1 anschließen. Die Belegung des Steckers ST1 geht aus Bild 7 hervor. Vor einem Datenverkehr zwischen CPU und dem Ein-Ausgabe-Baustein 8255 muss die Betriebsart durch Übergabe eines Steuerwortes festgelegt werden. Die Steuerinformationen für den 8255 für die Betriebsart 0 sind in nachfolgender Tabelle aufgeführt: KANAL A KANAL B A A A A A A A A E E E E E E E E A A A A E E E E A A A A E E E E KANAL C Bit 4..7 A A E E A A E E A A E E A A E E E = Eingabe, A = Ausgabe - 29 - KANAL C Bit 0..3 A E A E A E A E A E A E A E A E STEUERWORT Hex.-Anweisung 80 81 88 89 82 83 8A 8B 90 91 98 99 92 93 9A 9B MICO-80 Bedienungsanleitung [Bild 7] Belegung des Steckers ST1 In der nächsten Tabelle ist gezeigt, welche Ports und welche Register angesprochen werden. 8255 Eingabe Steuerwortregister -- PORT A IN A PORT B IN B PORT C IN C Hexadezimale Anweisung -DB 00 DB 01 DB 02 Ausgabe OUT STW OUT A OUT B OUT C - 30 - Hexadezimale Anweisung D3 03 D3 00 D3 01 D3 02 MICO-80 Bedienungsanleitung Beispiel 3: Die Ein-Ausgabe-Einheit EAM-80 ist an ST1 anzuschließen. Es ist Port A auf Eingabe, Port B und C auf Ausgabe zu programmieren. Die an den Eingabeschaltern eingestellte 8 Bit-Information ist auf die Ausgabe-Einheit durchzuschalten. Die Schaltereingabe soll in einer Endlosschleife erfolgen. BEISP0003: Sprungmarke EIN: Adresse Hex. Anweisung 3E 90 D3 03 Bemerkung 8000 8002 Mnemonische Bezeichnung LD A,STW OUT (StwReg),A 8004 8004 IN A,(PortA) DB 00 8006 8008 OUT JP (PortB),A EIN D3 01 C3 0480 Schalterstellung => Akku <A> => LEDs erneut einlesen - 31 - Steuerwort => Akku <A> => Steuerwortregister MICO-80 Bedienungsanleitung 8. Darstellung von Textsymbolen in der Anzeige Texte und Textsymbole können direkt in der Anzeige dargestellt werden. Jeder Siebensegmentanzeige ist eine RAM-Zelle zugeordnet. Jede Speicherzelle wird abgefragt, so dass jedes Bit eines Speicherzelleninhaltes ein bestimmtes Segment der Anzeige ansteuert. Durch Speichern eines Byte unter der zugehörigen Adresse kann ein beliebiges Zeichen auf jeder der 7-Segment-Anzeigen dargestellt werden. Die nachstehend aufgeführten Speicherzellen stehen mit den Siebensegmentanzeigen wie folgt in Verbindung (Adressen in Klammern gelten für 1 KByte RAM): Die bitweise Zuordnung der Speicherzellen zu den einzelnen Segmenten zeigt die nächste Darstellung: Beispiel 4: Stellen Sie durch ein Programm das Wort AUTO in den äußersten vier linken Siebensegmentanzeigen dar. Die Daten zur Darstellung des Textes sind in den RAM-Zellen 8600 bis 8603 direkt einzuspeichern. Programmstart 8000. BEISP0004: Programm: Sprungmarke Adresse 8000 Mnemonische Bezeichnung LD HL,(8600H) Hex. Anweisung 2A 0086 8003 LD 22 F887 (87F8H),HL - 32 - Bemerkung <8600/01> => Register L,H <L,H> => 87F8/F9 MICO-80 Bedienungsanleitung 8006 LD HL,(8602H) 2A 0286 8009 800C LD (87FAH),HL HALT 22 FA87 76 <8602/03> => Register L,H <L,H> => 87FA/FB Daten: Adresse 8600 8601 8602 8603 Inhalt 77 3E 78 3F Anzeige A U T O Sehr viel einfacher lässt sich die Darstellung von Texten durch Aufruf des Unterprogrammes TEXT 8 Startadresse 0360 realisieren. Das Unterprogramm schreibt in die Zellen 87F8 bis 87FF den Inhalt der RAM-Zellen, die durch das Registerpaar B indirekt adressiert sind. Beispiel 5: Stellen Sie in der Anzeige den Text "MICO 80" durch Aufruf des UP-TEXT 8 dar. Die Daten der Textsymbole sind direkt ab 8600 abzuspeichern. Programmstart 8000. BEISP0005: Programm: Sprungmarke Adresse 8000 8003 8006 Mnemonische Bezeichnung LD BC,8600H CALL TEXT8 HALT Hex. Anweisung 01 0086 CD 6003 76 Bemerkung Daten: Adresse 8600 8601 8602 8603 8604 8605 8606 8607 Inhalt 37 06 39 3F 40 7F 3F 00 Anzeige M I C O 8 0 Mit dem Unterprogramm TEXT1 Startadresse 03E0 lassen sich besonders einfach Laufschriften realisieren. Vor Aufruf des UP muss in das Registerpaar B die Anfangsadresse der 8 auszuschreibenden - 33 - MICO-80 Bedienungsanleitung Zeichen eingeschrieben werden. Nach Ende des UP ist der Inhalt von RPB um 1 erhöht. Beispiel 6: Die einzelnen Buchstaben des Wortes LAUFSCHRIFT sollen jeweils nach 1 Sekunde um eine Siebensegmentanzeige nach links gerückt werden. Programmstart 8200. Die Daten sind ab 8650 abzulegen. BEISP0006: Programm: Sprungmarke Adresse ANF: TEXT: Mnemonische Bezeichnung Hex. Anweisung Bemerkung 8200 8200 LD BC,DATEN 01 5086 Anfangsadresse DATEN laden 8203 8203 8206 8208 820B CALL LD CALL LD TEXT1 A,01H SECD A,C CD E003 3E 01 CD 1003 79 820C 820E CP JP 63H NZ,TEXT FE 63 C2 0382 8211 JP ANF C3 0082 Daten: Adresse 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 865A 865B 865C 865D 865E 865F 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 Inhalt 00 00 00 00 00 00 00 00 38 77 3E 71 6D 58 74 50 30 71 31 00 00 00 00 00 00 00 Anzeige L A U F S C H R I F T - 34 - UP 1 Sekunde warten Vergleich Endadresse DATEN falls nicht erreicht, Sprung zu TEXT sonst Sprung zum Anfang MICO-80 Bedienungsanleitung 9. Programmbeispiele im Z80-Code Beispiel 7: Es sind zwei dezimale Zahlen in den Speicherzellen 8600 und 8601 einzuspeichern. Daraufhin ist eine BCD-Addition durchzuführen. Das Ergebnis soll in der RAM-Zelle 8602 abgespeichert werden. Es ist darauf zu achten, dass die Summe der beiden Zahlen 99 (dez.) nicht überschreiten darf. Programmstart 8000. Programm: Sprungmarke Adresse 8000 8003 8004 8005 8006 8009 Mnemonische Bezeichnung LD HL,(8600) LD A,L ADD A,H DAA LD(8602H),A HALT Hex. Anweisung 2A 9821 Bemerkung 7D 84 27 32 0286 76 <L> => Akku Addition und .. .. Dezimalkorrektur Ergebnis => 8602 abspeichern <8600> => L, <8601> => H Beispiel 8: In den Speicherzellen 8650 und 8651 sind zwei beliebige hexadezimale Zahlen abzuspeichern. Es ist ein Programm zu erstellen, das eine Multiplikation beider Zahlen bewirkt. Das 2 Byte-Ergebnis ist in Speicherzelle 8652/8653 abzuspeichern und in der Anzeige wie folgt darzustellen (Ergebnis 4stellig rechtsbündig): Bei der Programmierung ist wie folgt vorzugehen: 1. Multiplikand und Multiplikator laden (Startadresse 8000). 2. Erstellung eines eigenen Unterprogrammes, das nach dem Verschiebeverfahren arbeitet, ab Adresse 8010. 3. Das Abspeichern des Ergebnisses und die Darstellung in der gezeigten Art in der Anzeige soll ebenfalls durch ein eigenes Unterprogramm ab Adresse 8030 gelöst werden. - 35 - MICO-80 Bedienungsanleitung Hauptprogramm: Sprungmarke Adresse 8000 8003 8004 Mnemonische Bezeichnung LD HL,(DATEN) EX DE,HL CALL MUL Hex. Anweisung 2A 5086 EB CD 1080 Bemerkung 8007 CALL ANZ CD 3080 800A HALT 76 Adresse Mnemonische Bezeichnung Hex. Anweisung Bemerkung 8010 8012 8013 LD LD LD C,08H A,D HL,0000H 0E 08 7A 21 0000 Stellenzaehler setzen 8016 8017 8017 LD D,H 54 ADD HL,HL 29 8018 RLA 8019 801C JP ADD NC,LOOP2 HL,DE D2 1D80 19 801D 801D 801E 8021 DEC JP RET C NZ,LOOP1 0D C2 1780 C9 <8650> => L, <8651> => H <H,L> <==> <D,E> Unterprogramm MUL aufrufen Unterprogramm ANZ aufrufen Unterprogramm MUL: Sprungmarke MUL: LOOP1: LOOP2: 17 Zwischensumme auf 0 setzen Zwischensumme 1x nach links schieben Multiplikant 1x nach links schieben ist geschobenes Bit = 1 ? falls ja, Multiplikator + Zwischensumme C=0?, Sprung zu LOOP1 Unterprogramm ANZ: Sprungmarke Adresse Mnemonische Bezeichnung Hex. Anweisung Bemerkung ANZ: 8030 8030 8033 8036 8038 LD LD LD LD (DATEN+2),HL (87ECH),HL A,11001111B DecDunkMaske),A 22 22 3E 32 803B 803E 8040 CA LD LD L DISREG A,73H (AnzSegm1),A CD A101 3E 73 32 F887 Ergebnis abspeichern Ergebnis => Anzeigezelle Maske fuer Dunkelzelle in Dunkelzelle abspeichern Unterprogramm DISREG 8043 8045 LD LD A,48H AnzSegm2),A 3E 48 32 F987 8048 RET C9 - 36 - 5286 EC87 CF D987 Textsymbol fuer "P" abspeichern Textsymbol fuer "=" abspeichern MICO-80 Bedienungsanleitung Im Folgenden finden sich zwei Beispiele zur Ausgabe auf das Display. Das erste schreibt direkt die die System-Speicherzellen, das zweite Programm verwendet das System-Unterprogramm DECOD. Beispiel 9: In der ersten 7-Segment-Anzeige soll sich ein simulierter Kreis im Uhrzeigersinn drehen. Das passende Bitmuster ist direkt in die Speicherzelle 87F8 zu schreiben. Die Speicherzellen 87F9 … 87FF sollen dunkel bleiben. Sprungmarke Adresse LOOP1: 8000 8002 8005 8007 8007 8008 8009 LOOP2: Mnemonische Bezeichnung LD A,0 LD HL,AnzSegm1 LD B,8 Hex. Anweisung 3E 00 21 F887 06 08 Bemerkung LD INC DEC (HL),A HL B 77 23 05 Speicherzelle laden Adresszeiger erhoehem Schleifenzaehler dekrementieren 800A 800D JP LD NZ,LOOP1 HL,AnzSegm1 C2 0780 21 F887 8010 8012 8012 LD A,2 3E 02 LD (HL),00000100B 36 04 8014 8017 CALL ZSECD LD (HL),00001000B CD 0003 36 08 8019 801C 801E 8021 8023 8026 CALL LD CALL LD CALL JP CD 36 CD 36 CD C3 ZSECD (HL),00010000B ZSECD (HL),01000000B ZSECD 0003 10 0003 40 0003 1280 0 = alle Segmente dunkel Zaehler fuer Schleife Adresszeiger auf 1. 7-Segment-Anzeige Zentelsekunden Bitmuster fuer 1. Zeichen speichern und warten Bitmuster fuer 2. Zeichen speichern … Ausgabe wiederholen Beispiel 10: In der 7-Segment-Anzeige sollen die Zahlen 1 bis 8 mit dem System-Unterprogramm DECOD dargestellt werden. Mit Hilfe der Dunkelmaskierung sollen abwechselnd jeweils die beiden äußeren bzw. die vier inneren Anzeigen sichtbar sein. Die Zuordnung der Speicherzellen erfolgt zu den 7-Segment-Anzeigen: - 37 - MICO-80 Bedienungsanleitung Hauptprogramm: Sprungmarke Adresse LOOP: 8000 8000 8002 8005 8008 800A 800D 8010 Mnemonische Bezeichnung Hex. Anweisung Bemerkung LD A,11000011B LD (DecDunkMaske),A CALL AUSGABE LD A,00111100B LD (DecDunkMaske),A CALL AUSGABE JP LOOP 3E 32 CD 3E 32 CD C3 Dunkelsteuerung ueber "0" Dunkelmaske setzen C3 D987 1380 3C D987 1380 0080 Dunkelsteuerung ueber "0" Dunkelmaske setzen Unterprogramm AUSGABE: Sprungmarke Adresse Mnemonische Bezeichnung Hex. Anweisung Bemerkung AUSGABE: 8013 8013 LD A,12H 3E 12 8015 8018 801A 801D 801F 8022 8024 8027 802A 802C 802F LD (87F4H),A LD A,34H LD (87F5H),A LD A,56H LD (87F6H),A LD A,78H LD (87F7H),A CALL DECOD LD A,1 CALL SECD RET 32 3E 32 3E 32 3E 32 CD 3E CD C9 Speicherzellen 87F4..87F7 zur Anzeige .. .. mit Daten fuellen - 38 - F487 34 F587 56 F687 78 F787 C001 01 1003 Ausgabe und warten MICO-80 Bedienungsanleitung 10. Serielle Schnittstelle Die serielle Schnittstelle ermöglicht es dem MICO-80 auf einen Drucker Daten auszugeben, mit einem Datensichtgerät oder einem Terminalprogramm auf dem Personal Computer zu kommunizieren. Auch das MICO-80 Entwicklungssystem oder sendet seine Daten über die serielle Schnittstelle zum MICO-80. Als serielle Schnittstelle wurde die, ursprünglich für die IS-535 entwickelte Interface-Platine IF-232, an den MICO-80 adaptiert. Da die meisten Beispielprogramme des PROFI-5 (kompatibel zum MICO-80) mit dem Peripheriebaustein 8255 durchgeführt werden, wurde für die serielle Datenübertragung der Z80-PIO Baustein verwendet, dessen Ports auf Stecker ST2 geführt sind. Vor Anstecken bzw. Abstecken der Adapterplatine ist die Spannungsversorgung für den MICO-80 zu unterbrechen. Beim Anstecken ist darauf zu achten, dass der Stecker korrekt auf der Stiftleiste angebracht wird. Die beiden LEDs auf der Interface-Platine IF-232 zeigen High-Pegel auf der Sendeleitung TXD (rot) und auf der Empfangsleitung RXD (grün) an. Der Jumper J1 ermöglicht die DTR (Data Transmission Ready) Leitung des angeschlossenen Gerätes über die IF-232 zum MICO-80 zu übertragen. Funktionen die über die serielle Schnittstelle Daten senden werten dieses Signal aus und warten bei DTR = Low mit der Übertragung. DTR kann mit dem Jumper J1 auch auf Dauer High-Pegel gelegt werden. DTR vom empfangenden Gerät wird dann von den MICO-80 Funktionen ignoriert. DTR wird ausgewertet DTR liegt dauernd auf High-Pegel - 39 - MICO-80 Bedienungsanleitung Die serielle Datenübertragung wird für folgende Funktionen verwendet: 07 08 09 13 14 15 HEX DUMP-Ausdruck mit vorwählbarer Baudrate von 300, 600 und 1200 Baud. Eingabe eines ASCII-Textes in den RAM-Bereich vom Tastenfeld eines Datensichtgerätes. Baudrate vor wählbar mit 300, 600 und 1200 Baud. Ausgabe eines Blocks von ASCII-Zeichen auf ein Datensichtgerät. Baudrate vor wählbar mit 300, 600 und 1200 Baud. Rückassembler 8080 Code Rückassembler Z80 Code Download einer Intel-Hexdatei über die serielle Schnittstelle mit 1200 Baud. Die Wahl der Übertragungsgeschwindigkeit erfolgt, bei Erscheinen des Schriftzuges „baud“ im Display des MICO-80, über die schwarzen Tasten 3 (300 Baud), 6 (600 Baud und C (1200 Baud). Für Download eines Programms aus dem Entwicklungssystem (Alt-F9) muss zuvor am MICO-80 die Funktion 15 mit Go gestartet und danach die Übertragungsgeschwindigkeit mit C (1200 Baud) eingestellt werden. Die Programm-Startadresse, z.B. 8000h ist im Quellprogramm anzugeben und wird mit der Intel-Hexdatei beim Download übertragen. - 40 - MICO-80 Bedienungsanleitung 11. Installation und Start des Entwicklungssystems Die Arbeit mit dem Entwicklungssystem ist in der Online-Hilfe des Editors ausführlich beschrieben. Die Installation des Entwicklungssystems erfolgt durch das Programm INSTALL.EXE auf der Diskette. Gestartet wird das Entwicklungssystem über das Programm EDI.EXE. Alle anderen ausführbaren Programme im Verzeichnis MICO-80 werden menügeführt aus dem Editor EDI gestartet. Auf der Diskette befindet sich die Datei LIESMICH.TXT mit wichtigen Hinweisen. Folgende Beispiele befinden sich auf der Diskette: ──────────────┬─────────────────────────────────────────────────────────────── Beispieldatei │ Erklärung ──────────────┼─────────────────────────────────────────────────────────────── Z80B1.ASM │ Das Beispiel erklärt wie beim MICO-80 in Verbindung mit der │ Ein/Ausgabe EAM-80 der Baustein 8255 zu programmieren ist. ──────────────┼─────────────────────────────────────────────────────────────── Z80B2.ASM │ Programm zur Erzeugung eines Blinklichts mit LED Bitstelle 0. ──────────────┼─────────────────────────────────────────────────────────────── Z80B3.ASM │ Lauflicht ──────────────┼─────────────────────────────────────────────────────────────── Z80B4.ASM │ Verkehrsampelsteuerung ──────────────┼─────────────────────────────────────────────────────────────── Z80B5.ASM │ Umwandlungsprogramm einer zweistelligen hexadezimalen Zahl in │ eine dezimale Zahl. Die Eingabe der hexadezimalen Zahl erfolgt │ über das Tastenfeld des MICO-80. ──────────────┼─────────────────────────────────────────────────────────────── Z80B6.ASM │ 4-Byte Addition von hexadezimalen Zahlen. Dabei werden im │ Programm die Indexregister IX und IY sowie verschiedene Z80│ Befehle eingesetzt. ──────────────┼─────────────────────────────────────────────────────────────── Z80B7.ASM │ Füllt einen Bereich im Speicher mit 00h. ──────────────┼─────────────────────────────────────────────────────────────── Z80B8.ASM │ wie Z80B7.ASM, jedoch mit dem Befehl DJNZ realisiert. ──────────────┼─────────────────────────────────────────────────────────────── Z80B9.ASM │ Überprüft ein Zeichen ob es eine ASCII-Ziffer 30h..39h ist. ──────────────┼─────────────────────────────────────────────────────────────── Z80B10.ASM │ Erzeugt ein Paritäts-Bit ──────────────┼─────────────────────────────────────────────────────────────── Z80B11.ASM │ Umwandlung Hexziffer (00h..0Fh) nach ASCII '0'..'9','A'..'F' ──────────────┼─────────────────────────────────────────────────────────────── Z80B12.ASM │ Größten Wert in einer Tabelle suchen ──────────────┼─────────────────────────────────────────────────────────────── Z80B13.ASM │ Addition mehrerer 8-Bit-Zahlen in einer Tabelle. Das │ Ergebnis hat 16-Bit. ──────────────┼─────────────────────────────────────────────────────────────── Z80B14.ASM │ Prüfsummen-Berechnung mehrerer 8-Bit-Zahlen in einer Tabelle. ──────────────┼─────────────────────────────────────────────────────────────── Z80B15.ASM │ Zeichen in einem Speicherbereich zählen ──────────────┼─────────────────────────────────────────────────────────────── Z80B16.ASM │ Blocktransfer - Jeder zweite Eintrag wird aus der │ Quell-Tabelle herausgegriffen und in der Zieltabelle abgelegt. ──────────────┼─────────────────────────────────────────────────────────────── Z80B17.ASM │ Einfügen einer BCD-Ziffer in einen Speicherbereich ──────────────┼─────────────────────────────────────────────────────────────── Z80B18.ASM │ Vergleich zweier vorzeichenbehafteter 16-Bit-Zahlen ──────────────┴─────────────────────────────────────────────────────────────── - 41 - MICO-80 Bedienungsanleitung 12. Weiterführende Literatur www.kammerer.net/hw/mico80.html Programmierung des Z80, Rodnay Zaks, Sybex-Verlag www.z80.info/zaks.html - 42 -
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
advertisement