Funkamateur 01/89

 

Programmierbare Tastatur mit Einchipmikrorechner

B. PFEIFER

Seit einiger Zeit sind Tastaturen von elektronischen Schreibmaschinen erhältlich, die sich sehr gut zum Aufbau eines Mikrorechners eignen, aber eine "deutsche" Tastenbelegung aufweisen. Dadurch gibt es auch in der Tastenbelegung und im erzeugten Tastenkode Abweichungen von üblichen Rechnertastaturen. Sie sind nicht zum direkten Anschluß an einen Rechner geeignet.
In diesem Beitrag soll beschrieben werden, wie eine solche Tastatur, z.B. "K 7654", u.a. an den Amateurcomputer "AC1" angeschlossen werden kann, ohne daß Schaltungs- und Programmänderungen am Computer notwendig sind.

Realisierung

Durch den Einsatz eines kleinen Mikrorechners zur Tastatursteuerung läßt sich der Schaltungsaufwand gering halten. Die Anordnung der Tasten kann, wie bei der erwähnten Tastatur, in einer Matrix völlig ungeordnet erfolgen. Die Tastenkodeerzeugung ist daher nicht ohne weiteres durch eine kombinatorische Schaltung (wie in [1] für den AC1) realisierbar.
Als Bauelementebasis stehen zur Zeit die Komponenten des U 880-Systems und die Einchipmikrorechner U 881 D, U 883 D und U 886 D zur Verfügung. Ein Aufwandsvergleich zwischen U 880 D und Einchipmikrorechner (EMR) spricht eindeutig für den Einsatz eines EMR. Diese Einchipmikrorechner sind seit kurzem ebenfalls in Amateurfilialen erhältlich.
Dieser Beitrag soll die Anwendbarkeit unter Amateurverhältnissen verdeutlichen und diese neue Technik weiter propagieren.

Schaltungsbeschreibung

Die Einchipmikrorechner U 881 D/U 883 D und U 886 D sind mit einem vom Hersteller programmierten 2-KByte-ROM ausgerüstet. Dieser kommt hier jedoch nicht zur Anwendung. Der 128 Byte umfassende RAM ist für sehr viele Anwendungsfälle völlig ausreichend. An peripheren Funktionen stehen zwei Zähler/Zeitgeber und eine serielle Schnittstelle zur Verfügung. Genauere Angaben und Funktionsbeschreibungen sind [2] zu entnehmen. Allen Typen gemeinsam ist der integrierte Test-ROM, der durch ein "überhöhtes" RESET-Signal von etwa 7 V anzusprechen ist.
Dieses Signal wird durch VD13, VD14, C4 und R11 erzeugt. Das damit aufgerufene Programm veranlaßt die weitere Programmabarbeitung im externen Programmspeicher, EPROM D3. Das Port 1 und vier Bit von Port 0 dienen als Adreß- und Datenbus. Da die Daten und Adressen über Port 1 zeitmultiplex ausgegeben werden, sind sie mit dem Adreßlatch D2 zu demultiplexen. Für die Tastatur K 7654 sind 8 x 12 Matrixleitungen erforderlich. Die Belegung der Tastenmatrix und die Anschlußbelegung des Steckverbinders sind in Bild 2 dargestellt. Die Erzeugung von 12 Spaltensignalen erfolgt durch die Dekodierung der restlichen Ausgangssignale von Port 0 durch D5. Der Zeilenvektor wird durch das Tri-State-Tor D4 gelesen. Das erfolgt durch eine Datenspeicher-Leseoperation.
Die Dioden sind notwendig, um beim gleichzeitigen Betätigen mehrerer Tasten einer Spalte Kurzschlüsse von Dekoderausgängen zu verhindern.
An Port 2 stehen der ASCII-Kode der Taste und ein Statussignal zur Verfügung. Die Ausgabe erfolgt so, wie es zum direkten Anschluß an den "AC1" notwendig ist (Bit 7 = high = Taste gedrückt, vgl. [1]). Durch die vorhandene SIO ist auch der Anschluß der Tastatur über eine seielle Leitung möglich. Deshalb habe ich diese Peripheriefunktion initialisiert und im Programm berücksichtigt. An diese serielle Schnittstelle kann man z.B. ein IFSS-Interface nach [2] anschließen. Die verbleibenden Leitungen des Port 3 werden für die Ansteuerung von Leuchtdioden in der Tastatur benötigt (über D6.3, D6.4). Die Takterzeugung ist bei Vorhandensein eines Quarzes äußerst einfach. Die angegebene Frequenz von 8,388 MHz ist nur für die Einhaltung der seriellen Übertragungsrate (per Programm 9600 Bit/s) notwendig. Prinzipiell sind Quarze zwischen 4 und 8 MHz einsetzbar. Steht kein Quarz zur Verfügung, ist auch die Generatorschaltung nach Bild 3 einsetzbar.

Programm

Der Einchipmikrorechner übernimmt die zyklische Abfrage der Zeilen, das Tastenentprellen und die Generierung des entsprechenden Tastenkodes. Letzterer wird über eine Tabelle erzeugt. so daß Änderungen sehr leicht möglich sind.
Ist eine Taste gedrückt, untersucht das Programm die Matrix nur auf das Loslassen der Taste. Es wird nur eine Taste angenommen und zwar die, die die Abfrageroutine zuerst findet.
Der Kode der Taste gelangt an Port 2 im ASCII-Format zur Ausgabe. Bit 7 ist 1, wenn die Taste noch gedrückt ist. Läßt man die Taste los, wird nur Bit 7 rückgesetzt.
Probleme durch die doppelte Entprellung, einmal EMR und zusätzlich "AC1", treten nicht auf, da eine Tastenbetätigung durch das "AC1"-Tastaturprogramm erst dann an das übergeordnete Programm übergeben wird, wenn die Taste losgelassen ist.
Beim Betätigen einer Taste gelangt gleichzeitig der entsprechende ASCII-Kode einmalig an der seriellen Schnittstelle zur Ausgabe. Die Möglichkeit des seriellen Empfangs wird hier nicht weiter in Betracht gezogen. Die Tastatur besitzt eine Vielzahl von Funktionstasten, die alle verwendet werden sollen. Da noch eine große Anzahl der internen Register unbenutzt ist, steht der Programmierung dieser Tasten nichts im Wege. Es existieren 12 programmierbare Tasten, wobei man auf jede Taste eine Sequenz von 8 Byte legen kann (einschließlich Steuerzeichen kleiner 20H). Beim Einschalten sind diese Tasten mit einer Vorzugsbelegung (siehe Abschnitt Anpassung) versehen.
Ist eine solche Funktionstaste aktiviert, werden 8 Byte nacheinander an Port 2 und der seriellen Schnittstelle mit dem für den "AC1"-Anschluß notwendigen Signalspiel ausgegeben. Da der "AC1" die Tastatur nur durch Polling bedient, können, je nach dem laufenden Programm, Tastenbetätigungen "verloren gehen". Deshalb ist eine Taste vorgesehen, die die Ausgabe beim Drücken der Funktionstasten verlangsamt.
Es werden immer 8 Byte ausgegeben. Ist nur ein Byte programmiert, erhalten die übrigen Stellen die Belegung mit 00H. Ein solches Byte hat in den meisten Rechnern keine Funktion.
Zur Behandlung von Groß- und Kleinbuchstaben stehen zwei Tasten zur Verfügung. Der Grundzustand erlaubt die Ausgabe von Großbuchstaben. Die Betätigung der Taste SHIFT ergibt die Ausgabe von Kleinbuchstaben und der zweiten Ebene der Zifferntasten. Durch die Taste CAPS kann eine dauerhafte Groß/Klein-Wandlung erfolgen. Dabei werden jedoch nur die Buchstaben gewandelt, Ziffern und Zeichen bleiben in der ersten Ebene. Durch nochmaliges Betätigen ist die Umwandlung wieder aufzuheben. Die LED1 zeigt den aktuellen Zustand an.

Handhabung der Tastatur

In Bild 4 ist die Verteilung der Funktions- und Sondertasten der Tastatur K 7654 dargestellt. Die Numerierung der Funktionstasten bezieht sich auf das Programm.
Umschaltung auf Kleinbuchstaben/zweite Ebene: SHIFT, nicht arretiert; Wandlung groß/klein: CAPS, arretiert; bei "klein" leuchtet LED1; Ausgabe der acht Zeichen einer Funktionstaste: F1 bis F12.
Programmieren einer Funktionstaste:
- Betätigen der Wippe nach +, LED2 leuchtet auf;
- Funktionstaste drücken, auf die programmiert wird (wenn keine programmierbare vorhanden ist, erlischt LED2);
- Eingabe der Sequenz (1...8 Tasten); keine Ausgabe an Port 2; nach 8 Tasten automatisch Ende und LED2 erlischt;
- vorzeitiges Beenden der Programmierung durch Wippe nach "-".
Einstellen der Ausgabefolgefrequenz bei Funktionstasten:
- Betätigen der Taste TC;
- ASCII-Wert der nachfolgenden Taste wird in einer Zeitschleife verwendet (A= 41H, z = 7AH), je größer der Wert, desto größer sind die inaktiven Abstände zwischen zwei Bytes (die Taste CAPS übergibt hier FFH).
Beim Programmieren und beim Abrufen der Funktionstasten muß die LED der CAPS-Taste (LED1) verloschen sein.

Anpassungen

Wer den generierten Tastenkode oder die Tastenbelegung ändern will, findet die dazu notwendigen Adressen in der Tabelle. Bei der Tastenkodetabelle ist zu beachten, daß die Belegung der Tasten CONTR, CAPS und SHIFT auch an anderer Stelle im Programm festgelegt ist. Sie darf daher nicht verändert werden! Alle Funktions- und Sondertasten sind als Bytes größer 80H kenntlich gemacht. Werden andere Werte als diese eingetragen, gehen die Funktionen verloren.
Bei der Installierung der Vorzugsbelegung der Funktionstasten stehen für jede Taste 8 Byte zur Verfügung. Alle nicht benötigten Tasten sind mit 00H zu belegen.

Literatur

[1] Heyder, F.: Funkamateure entwickeln Amateurcomputer "AC1",
FUNKAMATEUR 33 (1984), H.4, S.170
[2] Kieser - Bankel: Einchipmikrorechner,
VEB Verlag Technik, Berlin 1986

309 KByte 79 KByte 37 KByte
Bild 1 Bild 2 Bild 3

56 KByte 64 KByte 290 KByte
Adressen Bild 4 Listing

Funkamateur 01/90

 

Korrektur

Programmierbare Tastatur mit EMR Heft 1/89, S.13

Weitere Hinweise zur Inbetriebnahme:
1. Beim Einsatz des U 883 die vereinfachte Resetbeschaltung (nur C1 statt D6.5, D6.6, R12 usw.) einsetzen!
2. Die erweiterte Resetschaltung ist nur für den U 886 nötig. Dabei ist zu überprüfen, ob bei Zuschalten der Betriebsspannung ein überhöhter H-Pegel (etwa 7 V) mindestens 18 Takte lang anliegt, sonst erfolgt kein ordentlicher Reset. Ist dies nicht der Fall, darf C1 nicht bestückt werden!
3. Bei Einsatz einer SIO ist die Abhängigkeit der Baugrate von der Quarzfrequenz zu beachten. Die abgedruckte Programmversion initialisiert 9600 Bd mit einem 8,388-MHz-Quarz.
Änderung der SIO-Zeitkonstanten:
0023H: Vorteiler PRE0: VVVV VV01
0026H: Zeitkonstante T0: TTTT TTTT
Falls die Ausgabe von 00H bei den programmierbaren Tasten (wenn weniger als 8 Zeichen) störend ist, ist folgendes zu ändern: Ab 01EEH neu eintragen: 8D 0A 80 (Sprung zur Ergänzung); Ab 0280H neu eintragen: Ab EF 80 (Test, ob 00H), 6D 09 53 (wenn ja, Abbruch Ausgabe), 46 EF 80 (Statusbit AC1 setzen), 8D 09 F1 (weiter ausgeben).
T. Jäkel