| Inhalt KE3 |  | 3.2 Monitorprogramm |

3.1/1

## 3. Aufbau des Praktikumsrechners und der Betriebssoftware

Nachdem Sie nun bereits die Bedienung des Mikrorechners beherrschen und die Architektur des Mikroprozessors 6809 und seine "Sprache" kennengelernt haben, werden wir in den folgenden Abschnitten versuchen, Sie so weit wie möglich mit dem Innenleben des Mikrorechners, mit seiner Architektur und seinen Komponenten vertraut zu machen.

## 3.1 Die Architektur des Praktikumsrechners

### 3.1.1 Blockschaltbild des Gesamtsystems

In den vorhergehenden Abschnitten mußten wir notgedrungen schon mehrfach einzelne Komponenten des Mikrorechners erwähnen. Das Bild 3.1-1 zeigt Ihnen nun das Blockschaltbild des gesamten Systems.

Darin erkennen Sie ganz unten den Mikroprozessor MC6809 mit seinem Taktgenerator und der Rücksetzlogik (Reset). Diese ermöglicht es, den Prozessor hardwaremäßig in einen definierten Grundzustand zu versetzen. Die Verbindung zwischen allen Komponenten wird von dem Bussystem aus Adreß-, Daten- und Steuerbus vorgenommen. Um den Rechner durch externe Komponenten erweitern zu können, ist das Bussystem über Treiberbausteine auf eine 64-polige Steckerleiste gelegt worden, die an der Rückwand des Gehäuses zugänglich ist. *)

Auf der linken Seite des Bussystems ist der Arbeitsspeicher des µC gezeichnet. Implementiert sind jeweils 8 kbyte RAM- bzw. EPROM-Speicher. 1) Zwei Steckplätze sind für die Erweiterung um zusätzlich 2x8-kbyte vorhanden. Die Aktivierung (Enable) aller Systemkomponenten geschieht durch die Adreßauswahl-Logik, die mit den Signalen des Adreßbusses mehr oder weniger große Adreßbereiche selektiert. Diese Adreßbereiche, unter denen die Komponenten vom µP angesprochen werden, sind in hexadezimaler Form an die einzelnen Komponenten geschrieben worden. Die Adreßauswahl ist so ausgelegt, daß durch das Umsetzen von Brücken und den Einsatz höher integrierter Speicherbausteine der gesamte Adreßraum von 64 kbyte auf der Systemplatine bestückt werden kann.

3.1/2

Rechts vom Bussystem sind im Bild 3.1-1 die Komponenten angeordnet, die die Kommunikation mit der Außenwelt, der Peripherie, abwickeln. Das Standard-Ausgabemedium ist die Anzeige, das Standard-Eingabemedium die Tastatur. Die einfachste Schnittstelle wird vom Parallel-Interface geboten. Dieses liefert einen 8 bit breiten Eingabe/Ausgabe-Port mit zwei zusätzlichen Steuerleitungen, der außen über 2-mm-Buchsen zugänglich ist. Dadurch ist es möglich, den Praktikumsrechner mit Schaltungen auf einem Experimentierboard zu koppeln. Außerdem kann auf diesen Port über die 64-polige Steckerleiste zugegriffen werden. Mit Hilfe einer speziellen Schnittstellen-Erweiterungskarte 2) , die dem Praktikumsrechner beigefügt ist, können Sie einfache Aufgaben zur Portsteuerung lösen. Eine V24-Schnittstelle erlaubt den Anschluß eines PCs, eines Terminals, eines Druckers oder anderer Peripheriegeräte. 3) Der als Timer bezeichnete Baustein dient zur Erzeugung beliebiger Zeitfunktionen oder als Zähler. (Er wird in KE5 ausführlich beschrieben.)

Bild 3.1-1: | Blockschaltbild des Praktikumsrechners |

3.1/3

Das Bussystem und die Adreßauswahl-Logik

Bild 3.1-1 kann man entnehmen, daß das Bussystem für den Datenaustausch zwischen den Komponenten des Mikrorechners zuständig ist. Dieses Bussystem besteht aus den Teilbussen Adreßbus, Datenbus und Steuerbus.

Der Adreßbus AB besteht aus 16 Leitungen (A0-A15), auf denen die vom Mikroprozessor erzeugten Adreßsignale parallel ausgegeben werden. Da diese Signale nur in einer Richtung verlaufen, wird der Adreßbus als unidirektional bezeichnet. Die Adressen sorgen über die weiter unten beschriebene Auswahlschaltung (Adreßdecoder) für die eindeutige Selektion einer Komponente, eines darin enthaltenden Registers oder einer Speicherzelle. Über die 16 Leitungen A0-A15 können 216=65536 verschiedene Adressen ausgegeben werden.

Der Datenbus DB besteht aus den 8 bidirektionalen Leitungen D0-D7. Auf ihm werden die Daten byteweise in beiden Richtungen übertragen, also vom Prozessor zu den Komponenten oder von diesen zum Prozessor.

Der Steuerbus CB (Control Bus) enthält die Signale R/#W, E, Q, IRQ, #NMI und #RESET, die Sie bereits bei der Beschreibung des Prozessors im Abschnitt 1.3 kennengelernt haben. Die beiden Taktsignale E und Q kennzeichnen das Bussystem als synchron, da alle Übertragungen in einem starren Zeitraster vorgenommen werden, wodurch also die Länge der einzelnen Übertragungsperioden und die Zeitpunkte der Komponentenauswahl und der Datenübergabe fest vorgegeben sind. Die Empfängerkomponente eines Datums gibt keinerlei Quittungen über den fehlerfreien oder fehlerhaften Empfang.

Ankopplung der Komponenten an den Bus 4)

Alle Komponenten des Mikrorechners hängen physikalisch an den oben beschriebenen Busleitungen und sind somit direkt miteinander verkoppelt. Nun kann man jedoch nicht ohne weiteres die Ausgänge von TTL- oder MOS-Schaltungen parallel miteinander verbinden. Dies würde bei zwei Schaltungen mit entgegengesetztem Ausgangspegel (H- bzw. L-Pegel) zu einem Kurzschluß führen. Deshalb sind für die Ausgänge der Komponenten spezielle elektrische Ankoppelschaltungen nötig. Eine Realisierungsmöglichkeit bietet die sogenannte Tristate-Logik. Der Name deutet schon auf einen dritten Zustand hin. Dieser Zustand ist der High-Impedance-Zustand, in dem der Ausgang hochohmig gegen beide Betriebsspannungen +5V und Masse (GND) ist. Damit hat der hochohmige Zustand die gleiche Wirkung wie die Durchtrennung der Ausgangsleitung. Bild 3.1-2 zeigt als Beispiel das vereinfachte Schaltbild eines TTL-Inverters (Transistor-Transistor-Logik) in Tristate-Technik.

3.1/4

Der Tristate-Inverter entspricht offensichlich einer NAND-Schaltung mit einem "zweckentfremdeten" Eingang, dem Steuereingang C (Control). Liegt dieser Eingang auf H-Potential, so hängt der Zustand des Transistors T1 nur vom Eingang E ab und die Diode D ist gesperrt. Also wirkt die Schaltung wie ein "normaler" Inverter (7404). Wird der Eingang C auf L-Potential gelegt, so wird über die Diode D die Basis des Ausgangstransistors T2 auf ein niedriges Potential heruntergezogen. Daher sperrt dieser Transistor, und der Ausgang A wird hochohmig gegen +5V. Gleichzeitig sorgt die NAND-Verknüpfung der Eingänge E und C dafür, daß der Transistor T3 und damit auch der Ausgangstransistor T4 sperren, der Ausgang A also auch hochohmig gegen Masse ist. In diesem Zustand hat der Eingang E keinerlei Wirkung.

Bild 3.1-2: | TTL-Inverter in Tristate-Logik |

Selbsttestaufgabe S3.1-1:5)
Skizzieren Sie eine Busleitung, an der 4 TTL-Tristate-Inverter angeschlossen sind. Benutzen Sie dabei das Schaltsymbol Entwerfen Sie nun für die vier Steuereingänge C3-C0 eine Auswahlschaltung mit zwei "Adreßeingängen" A1,A0, die dafür sorgt, daß zu jedem Zeitpunkt genau ein Inverter aktiviert ist!

3.1/5

Buszuteilung

In der Regel entstehen Konflikte, wenn mehrere aktive Einheiten, insbesondere mehrere Prozessoren, gleichzeitig auf einen Bus zugreifen wollen ("Buskonflikte"). Durch eine besondere Steuerlogik ("Schiedsrichter", Busarbiter) muß dann der Zugriff zum Bus geregelt werden 6). Im vorliegenden Mikrorechner greift jedoch nur der µP MC6809 aktiv auf den Bus zu. Dieser sorgt durch die ausgegebene Adresse für eine konfliktfreie Zuteilung des Bussystems an die einzelnen Komponenten. Prinzipiell wäre es nun möglich, alle 16 Adreßleitungen jeder Komponente zuzuführen und dort die Entscheidung über die Zugriffsberechtigung zu fällen. Dies würde jedoch eine unnötige, technisch schwer zu realisierende Vergrößerung der Zahl der Anschlüsse an den Schaltkreisen und eine aufwendige, starre Zuteilungslogik in den Schaltkreisen bedeuten. Deshalb benutzt man in der Regel eine zentrale Zuteilungslogik, die aus den Adreßsignalen verschiedene Adreßbereiche selektiert und diese den einzelnen Komponenten zuweist ("Adreßauswahl-Logik", "Adreßdecoder"). Diese Logik wird bei der Beschreibung eines Systems häufig sehr knapp dargestellt, obwohl sie einen großen Teil der Platinenfläche und der benutzten Schaltkreise benötigt und einen nicht unerheblichen Entwurfs- und Optimierungsaufwand verursacht. Heutzutage werden Adreßdecoder gewöhnlich auch in integrierter Form, z.B. als PLA-Baustein (Programmable Logical Array) realisiert. Sehr häufig werden weitere Steuersignale zur Adreßauswahl herangezogen, z.B. das Schreib/Lese-Steuersignal R/#W, um zwischen Speicherzellen oder Registern zu unterscheiden, die nur beschrieben oder gelesen werden können. Der Einfachheit halber werden in der Regel jeder Komponente ein Bereich zugewiesen, dessen Adreßanzahl eine Potenz von 2 ist. Müssen nun in einer Komponente 2i Register oder Speicherzellen selektiert werden können, so werden in der Regel die unteren i Adreßbits A0,..,A(i-1) dieser Komponente direkt zugeführt. Die restlichen Bits Ai,..,A15 werden im Adreßdecoder ausgewertet. Durch ein (oder wenige) Selektionssignal(e) (Chip Select - CS) wird dann die Komponente über das Vorliegen einer für sie gültigen Adresse informiert. Dazu besitzen die hochintegrierten Bausteine besondere "Aktivierungseingänge", die in der Regel mit CE (Chip Enable) bezeichnet sind.

Selbsttestaufgabe S3.1-2:7)
Analysieren Sie im Gesamtschaltplan des Praktikumsrechners im Anhang C den Adreßdecoder, indem Sie für seine Ausgangssignale #CS0-#CS13 die logischen Funktionen aufstellen und die durch sie selektierten Adreßbereiche angeben. Beginnen Sie der Einfachheit halber mit der Bestimmung des "Hilfssignals" #CS (Ausgang von IC26). Gehen Sie außerdem davon aus, daß keine zusätzlichen Brücken gesetzt sind (vgl. IC35). Die Datenblätter zu den Schaltkreisen 74138 und 74139 finden Sie in der Datenblattsammlung zum Praktikum.

3.1/6

Erweiterungsschnittstelle

Schon Bild 3.1-1 zeigt, daß der Adreßraum des Praktikumsrechners nicht voll belegt ist. Für externe Erweiterungen des Rechners durch zusätzliche Komponenten ist das Bussystem über eine 64-polige Steckerleiste an der Rückwand des Gehäuses zugänglich. 8) Zum Schutz der Schaltkreise, die im Rechner am Bussystem hängen, aber auch zur Erhöhung der Ausgangsleistung, sind alle Bussignale über Treiberschaltungen geführt. Diese sind beim Datenbus naturgemäß bidirektional, bei allen anderen Signalen unidirektional ausgelegt.

Adreß- und Steuerbustreiber sind permanent aktiviert, so daß die entsprechenden Signale jederzeit am Stecker beobachtet werden können. Die Aktivierung der bidirektionalen Datenbus-Treiber geschieht demgegenüber durch ein spezielles, extern zuzuführendes Signal #G (s. Beschreibung der Steckerbelegung im Anhang B). Zur Erweiterung des Systems muß dieses Signal durch eine externe Schaltung so erzeugt werden, daß dadurch ein Adreßbereich selektiert wird, der sich mit dem intern belegten Adreßraum nicht überschneidet.

Selbsttestaufgabe S3.1-3:9)
1. Machen Sie sich anhand der Datenblätter im Anhang mit der Funktionsweise der benutzten Treiberbausteine 74245 und 74541 vertraut. 2. Skizzieren Sie den externen Anschluß eines 1-kbyte-RAM-Bausteins an der Erweiterungsschnittstelle und entwerfen Sie dazu einen Adreßdecoder (zur Erzeugung des o.g. Signals), der dieses RAM unter den Adressen $6000-$63FF ansprechen läßt.

Der Festwertspeicher

Damit der Mikrorechner nach dem Einschalten der Netzspannung sofort betriebsbereit ist, wurde sein Monitorprogramm in einem Festwertspeicher abgelegt. Im folgenden werden die physikalischen und technologischen Grundlagen der im Mikrorechner eingesetzten speziellen Festwertspeicher kurz dargestellt.

Dabei handelt es sich um ein EPROM (Erasable Programmable Read Only Memory), also um einen Festwertspeicher, der vom Benutzer durch ein spezielles Gerät programmiert und wieder "gelöscht" werden kann. EPROMs eignen sich wegen ihrer relativ hohen Kosten besonders für Anwendungen in kleinen Stückzahlen, für den Laboreinsatz und für die Entwicklungsphase eines Programms 10).

3.1/7

In der folgenden Tabelle 3.1-1 beschreiben wir den im Praktikumsrechner eingesetzten EPROM-Baustein in Stichworten. (Sie sehen den Baustein unter der Plexiglasabdeckung des Gerätes als 2. Baustein unten links. Im Anhang finden Sie das Datenblatt zum Baustein.)

Tabelle 3.1-1: Kenndaten des EPROM-Bausteins

Typ: | 2764 , von der Firma Intel entwickelt
Kapazität: | 8 kbyte = 8kx8 bit = 64 kbit
Gehäuse: | 28 Anschlußbeine (Pins) und Quarzfenster
Löschen: | je nach Leistung der UV-Lampe einige Minuten.
Programmierung: | byteweise, das Byte muß adressiert werden und dann für mindestens 50ms eine Spannung von 21V an den Programmiereingang VPP des Bausteins gelegt werden (s.u.)
Pegel: | TTL-Pegel an allen Ein- und Ausgängen, Ausgänge in Tristate-Logik
Zugriffszeit: | maximal 250-300 ns, je nach Ausführung
Betriebsspannung: | +5V
Leistungsaufnahme: | 175 mW, falls Baustein nicht selektiert, 750 mW, falls Baustein selektiert.

Zum Abschluß dieses Unterabschnitts gibt Ihnen die folgende Tabelle 3.1-2 die augenblickliche Belegung des Festwertspeichers im Praktikumsrechner an.

Tabelle 3.1-2: Belegung des Festwertspeichers
(Adressen in hexadezimaler Form)

Adreßbereich | Inhalt
--- | ---
FF00 - FFFF | Systemkonstanten, i.b. Interruptvektoren
F200 - ... | Hilfsroutinen (werden laufend ergänzt)
F100 - F1FF | Tabelle der Einsprungadressen der Hilfsroutinen nach Abschnitt 1.2.2
F030 - F0FF | frei
F000 - F02F | Adressen der Schnittstellen Register
EF00 - EFFF | Tabelle der System-Startwerte (Zero-Page)
E800 - EEFF | frei
E000 - E7FF | Monitorroutinen (Tastatur-, Anzeigen- und Schnittstellen-Ansteuerung)

3.1/8

Der Schreib-/Lese-Speicher

Der eben besprochene Festwertspeicher dient zur Aufnahme von Programmen und Daten, die immer, insbesondere auch nach dem Einschalten des Gerätes, zur Verfügung stehen müssen. Daneben besitzt der Praktikumsrechner einen Schreib-/Lese-Speicher, der zur Speicherung von kurzfristig benötigten Daten und Programmen, also z.B. den von Ihnen zu schreibenden Programmen und Ihren Ergebnissendient. 11) Dieser Schreiblesespeicher ist im Praktikumsrechner 8 kbyte groß. Er kann aber auf 16 kbyte vergrößert werden 12).

Der RAM-Baustein belegt im Mikrorechner den untersten Adreßbereich $0000-$1FFF. Von diesem wird nur die unterste Seite (Zero-Page, $0000-$00FF) für die Systemvariablen reserviert. Alle anderen Speicherzellen stehen Ihnen zur freien Verfügung bereit.

Wir wollen uns hier mit einer kurzen Auflistung der Kenndaten des im Praktikumsrechner eingesetzten RAM-Bausteins begnügen 13), die Sie in Tabelle 3.1-3 finden. (Im Anhang finden Sie auch das Datenblatt zum Baustein.)

Tabelle 3.1-3: Kenndaten des Schreib-/Lesespeicher-Bausteins

Typ: | TC5565Pl-15 der Firma Toshiba, statische CMOS Zelle
Kapazität: | 8 kbytes = 8kx8 bit = 64 kbit
Gehäuse: | 28 Anschlußbeine
Zugriffszeit: | maximal 150-200 ns, je nach Ausführung
Pegel: | TTL-Pegel an allen Ein- und Ausgängen, Tristate-Ausgänge
Betriebsspannung: | +5V im "aktiven" Zustand, absenkbar auf +2V im Ruhezustand (stand- by)
Leistungsaufnahme: | 35-40 mW aktiv, 10 µW stand-by

3.1/9

Praktische Übung P3.1-1:
2. Der 6809-Simulator bietet Ihnen die Möglichkeit, in den (simulierten) Arbeitsspeicher des Praktikumsrechners hineinzuschauen, während ein Anwenderprogramm (oder das Monitorprogramm) läuft. Wählen Sie dazu unter dem Hauptmenü-Eintrag "Speicher" den Eintrag "anzeigen" an. Durch Eingabe einer neuen Startadresse in der ersten Tabellenspalte können Sie nun jeden beliebigen Adreßbereich betrachten und durch den Verschiebebalken verändern. Im RAM-Bereich können Sie jede Speicherzelle manipulieren und so insbesondere auch Maschinenprogramme eingeben. (Vergleiche KE2.) Betrachten Sie den Adreßbereich $0000-$00FF, in dem das Monitorprogramm seine Systemvariablen verwaltet. Betätigen Sie die Funktionstaste C (Clear) und beachten Sie den Aufbau der Systemvariablen durch das Monitorprogramm. Betätigen Sie danach auch andere Funktionstasten. Betrachten Sie den Ablauf im Systemstack (Adressen: .... - $1FFF) bei der Abarbeitung des folgenden Programms:
           ORG $0400            ORG $0500           ORG $0600
       HP: LDD #$1020     SUB1: INCB          SUB2: INC $00
           CLR $00              PSHS B              LDA $00
       L:  INCA                 JSR SUB2            PSHS A
           PSHS A               PULS B              JSR SUB3
           JSR SUB1             RTS                 PULS A
           PULS A                                   RTS
           BRA L
                                ORG $0700
                          SUB3: LDY #$0040
                                JSR DLY1MS
                                RTS
Analysieren Sie das Programm und interpretieren Sie die ersten Bytes des Stacks ! (s. Lösungsvorschlag) Versuchen Sie zunächst im Simulator den Adreßbereich ab $2000 bzw. $4000 zu lesen und zu verändern. Durch wenige Mausclicks können Sie nun den Arbeitsspeicher des simulierten Praktikumsrechners um 8 oder 16 kbyte vergrößern. Wählen Sie danach im HauptMenü den Eintrag "Datei" und im Submenü "RAM/ROM Erw." an. Versuchen Sie nun noch einmal, den erweiterten Speicherbereich ab $2000 oder $4000 zu beschreiben.

3.1/10

### 3.1.2 Aufbau und Funktion der Anzeige

Bei den meisten Einplatinen-Mikrocomputern wurden in der Vergangenheit als Anzeigekomponente mehrstellige 7-Segmentanzeigen eingesetzt, die im Multiplexbetrieb angesteuert wurden, d.h., daß jede einzelne Stelle jeweils nur für einen kleinen Bruchteil der Zeit selektiert wird und aufleuchtet 1). Durch eine genügend hohe Frequenz kann dabei vermieden werden, daß das menschliche Auge das Flackern der Anzeige wahrnehmen kann. Das Multiplexen der Anzeige wurde meistens vom Prozessor selbst vorgenommen.

Hauptziel beim Entwurf der Anzeigeeinheit unseres Mikrorechners war es, den Prozessor von dieser Aufgabe zu entlasten und dafür zu sorgen, daß die 8 Stellen der Anzeige für den Prozessor wie gewöhnliche Speicherstellen erscheinen, in die er lediglich die darzustellende Information übertragen muß. Das Multiplexen wird durch eine Zusatzschaltung hardwaremäßig geleistet. Das Bild 3.1-3 zeigt das Blockschaltbild der Anzeigeeinheit.

Bild 3.1-3: | Blockschaltbild der Anzeigeeinheit |

3.1/11

Das vom Adreßdecoder erzeugte Signal #CS13 (s. Abschnitt 3.1.1) dient zur Aktivierung der gesamten Anzeigeeinheit. Es selektiert die Adressen $F02X (X=0,..,F). Dabei ist zu beobachten, daßjeder Anzeigestelle zwei Adressen zugeordnet sind:

1. Stelle S0 (rechts): | $F020 und $F028,
2. Stelle S1: | $F021 und $F029,
.... | ....
8. Stelle S7 (links): | $F027 und $F02F

Jede Stelle zeigt abwechselnd die beiden entsprechenden Worte des Bildwiederholspeicher an, der Betrachter sieht natürlich beide Informationen gleichzeitig. Wenn ein Speicherwort gleich null und das andere ungleich null ist, erfolgt die Anzeige in halber Helligkeit. Volle Helligkeit wird erreicht, wenn beide Worte gleich sind (und ungleich Null).

Die Adreßsignale A0-A2 dienen zur Auswahl genau einer Stelle der Anzeige. Wenn eine Adresse aus dem eben erwähnten Adreßbereich auf dem Adreßbus erscheint, werden die Adreßsignale A0-A3 parallel in einen 4-bit-Dualzähler geladen. Die Ausgänge Q0-Q3 dieses Zählers selektieren die entsprechende Speicherstelle in einem (28)x8-bit-Bildwiederholspeicher, dessen Eingänge am Datenbus des Systems angeschlossen sind. Durch das Ausgangssignal Q3 wird genau einer der beiden 8x8-bit-Speicherbereiche aktiviert. Durch das Schreibsignal WR wird die Übernahme der Daten in den Speicher erzwungen. Die Ausgänge des Bildwiederholspeichers sind mit den Anoden der Leuchtdioden in den 7-Segmentanzeigen verbunden. Diese Anoden sind im Bild 3.1-3 mit den Buchstaben a,b,c,..,h bezeichnet. Gleichbezeichnete Anoden aller Anzeigestellen sind miteinander verbunden. Dabei besteht folgende Beziehung zwischen den Datenbits D0,..,D7 und den Anoden der Anzeige (vgl. Abschnitt 1.2.1.):

> D0 « a, D1 « b, ..., D7 « h.

Selbsttestaufgabe S3.1-4: 2)
Machen Sie sich anhand des Gesamtplans des Systems sowie des Datenblattes des verwendeten Bausteins 74289 im Anhang mit dem genauen Aufbau des Bildwiederholspeichers vertraut und beantworten Sie dazu die folgenden Fragen: Wie müssen die Eingänge des Speichers beschaltet werden, um die hexadezimale Datenbusinformation $A7 in die Speicherstelle S7 einzuschreiben? Welchen Wert erhält man an den Ausgängen, wenn man danach die 7. Speicherstelle liest? Durch welchen Baustein des Systems wird die in den beiden eben behandelten Punkten festgestellte Diskrepanz aufgehoben?

3.1/12

Wird die Anzeigeeinheit nicht vom Prozessor angesprochen, so übernimmt der 4-bit-Dualzähler das Multiplexen der Anzeigestellen. Dazu ist er mit einem Taktgenerator ausgerüstet, der ihn zyklisch frei umlaufen läßt (Taktfrequenz: 1 kHz). Der aktuelle Zählerstand wird einerseits zur Adressierung der gerade darzustellenden Speicherstelle, andererseits zur Auswahl der zugehörenden Stelle der Anzeige herangezogen. Diese Auswahl geschieht wiederum durch einen 3-auf-8-Demultiplexer, dessen Ausgänge jeweils die gemeinsamen Kathoden je einer 7-Segment-Anzeige steuern (aktiv L-Pegel). Der Demultiplexer ist nicht mit dem höchstwertigen Bit des Dualzählers verbunden. Dadurch wird jede Anzeigestelle zweimal während eines Zählzyklus selektiert.

Praktische Übung P3.1-2:
Schreiben Sie ein Programm, das die als 8-stellige Hexadezimalzahl aufgefaßten Speicherstellen $F020-$F027 der Anzeige vom Wert 0 beginnend binär hochzählt. Der Zähltakt betrage ca. 1 kHz. Beachten Sie dabei, daß Sie diese Speicherstellen zwar beschreiben, nicht aber lesen können.

### 3.1.3 Aufbau und Funktion der Tastatur

Im Abschnitt 1.2.1 wurde bereits die Tastatur mit ihren Daten- und Funktionstasten ausführlich beschrieben. In diesem Abschnitt folgt nun die Beschreibung ihrer Ansteuerschaltung 3).

Dazu zeigt Bild 3.1-4 zunächst das Blockschaltbild. Die Tasten sind in Form einer zweidimensionalen Matrix angeordnet. Die Spalten dieser Matrix werden durch die Ausgänge eines 3-auf-8-Demultiplexers angesprochen. Die Auswahl einer bestimmten Spalte geschieht durch die Adreßsignale A0-A2. Der jeweils ausgewählte Ausgang nimmt den L-Pegel, d.h. logischen 0-Zustand an. Die Zeilen der Matrix werden über invertierende Tristate-Treiber auf die unteren vier Bits D0-D3 des Datenbusses gelegt.

Sobald in einer angesprochenen, aktivierten Spalte eine Taste gedrückt wird, wird die zugehörende Zeile "kurzgeschlossen". Die drei anderen Zeileneingänge tragen (in der Regel, d.h. wenn in dieser Spalte nicht eine weitere Taste gedrückt ist,) den logischen Wert 1. Aus den eingelesenen Datenbits D0-D3 und der Adreßinformation A0-A2 kann der Prozessor die ausgewählte Taste eindeutig identifizieren. Die gesamte Ansteuerschaltung der Tastatur wird durch das Signal #CS12 des Adreßdecoders aktiviert (s. Abschnitt 2.2), das dazu auf die Steuereingänge des Demultiplexers und der Treiber gegeben wird. Zur Aktivierung des Demultiplexers (enable, aktiv L-Pegel) wird zusätzlich das Adreßsignal A3 benutzt.

3.1/13

Bild 3.1-4: | Die Ansteuerschaltung der Tastatur |

Da durch das Auswahlsignal der Tastatur (Signal #CS12) die Speicheradressen $F01X angesprochen werden (X=0,..,F), ergeben sich die in der Tabelle 3.1-4 angegebenen Adreß- und Datenbuswerte für die einzelnen Tasten. (Diese Werte sind alle hexadezimal aufzufassen. X bedeutet wiederum "beliebig" (don't care).)

Tabelle 3.1-4: Adreß- und Datenbusinformation zur Dekodierung der Tasten)

Datentasten | Funktionstasten
--- | ---
Taste | Adresse | Datenbus | Taste | Adresse | Datenbus
0 | F011 | X1 | + | F015 | X1
1 | F012 | X1 | - | F016 | X1
2 | F013 | X1 | A | F015 | X2
3 | F014 | X1 | D | F016 | X2
4 | F011 | X2 | R | F015 | X4
5 | F012 | X2 | G | F016 | X4
6 | F013 | X2 | S | F015 | X8
7 | F014 | X2 | L | F016 | X8
8 | F011 | X4 | T | F010 | X8
9 | F012 | X4 | F1 | F010 | X4
A | F013 | X4 | F2 | F010 | X2
B | F014 | X4 | F3 | F010 | X1
C | F011 | X8 |  |  |
D | F012 | X8 |  |  |
E | F013 | X8 |  |  |
F | F014 | X8 |  |  |

3.1/14

Um Ihnen das Arbeiten mit der Tastatur zu erleichtern, sind in der Tabelle 3.1-5 die Tasteninformationen als Matrix dargestellt. (Adressen und Datenbuswerte sind hexadezimal aufzufassen. Das Symbol X bezeichnet wieder einen beliebigen Wert aus 0,..,F.)

Tabelle 3.1-5: Matrix zur Dekodierung der Tasten

Adresse | Tastenbetätigung
--- | ---
F010 | F3 | F2 | F1 | T
F011 | 0 | 4 | 8 | C
F012 | 1 | 5 | 9 | D
F013 | 2 | 6 | A | E
F014 | 3 | 7 | B | F
F015 | + | A | R | S
F016 | - | D | G | L
Datenbus: | X1 | X2 | X4 | X8

Selbsttestaufgabe S3.1-5:
Begründen Sie anhand des Gesamtplans des Praktikumsrechners im Anhang B, warum die Rücksetztaste C sowie die Break-Taste F4 nicht in der oben dargestellten Ansteuerschaltung der Tastatur beschrieben wurden !

Selbsttestaufgabe S3.1-6:4)
Machen Sie sich anhand des Gesamtplans des Praktikumsrechners und des Datenblattes des Demultiplexers 74138 im Anhang A mit der Funktion dieses Bausteins vertraut und beantworten Sie dazu die folgende Frage: Welcher Ausgang (Y0,..,Y7) ist aktiviert, wenn auf dem Adreßbus die Adresse $F017 ausgegeben wird, und welche Wirkung hat das auf die Tastatur ? Welche Adresse muß der Prozessor ausgeben, um die 3. Spalte (der Tastatur nach Bild 3.1-4) zu selektieren, und welcher Hexadezimalwert wird auf dem Datenbus eingelesen, wenn Sie in dieser Spalte gleichzeitig die Tasten '5' und '9' drücken ?

Praktische Übung P3.1-3:
Schreiben Sie ein Programm, das zuerst die Anzeige löscht und dann zyklisch alle Spalten der Tastaturmatrix selektiert und die Zeilen der Matrix den Segmenten a bis d der rechten Anzeigestelle (S0) zuordnet. Dabei soll gelten: Wenn in einer Zeile mindestens eine Taste gedrückt ist, wird das zugeordnete Segment eingeschaltet.

| Inhalt KE3 |  | 3.2 Monitorprogramm |