Funkamateur 01/89 |
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.
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.
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.
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.
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.
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.
[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 |
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