Funkamateur 07 und 10/86

 

Digitaluhr für den "AC1"

W.NAMYSLO - Y24RF

Das große Interesse am Amateurcomputer "AC1" läßt darauf schließen, daß dieser Amateurcomputer bisher schon von vielen OMs gebaut wurde. Für den Einsatz beim Funkamateur ist u.a. die Kenntnis der Uhrzeit für die Führung des Funktagebuches eine wichtige Voraussetzung. Die Anzeige der aktuellen Uhrzeit kann der "AC1" ohne zusätzlichen Hardware-Aufwand mit einem kleinen Programm realisieren.
Bei der Programm-Entwicklung wurde davon ausgegangen, daß die Uhrzeit ständig in der oberen rechten Ecke des Bildschirmes angezeigt wird und von anderen Programmen nicht beeinflußt wird. Weiterhin sollte das Programm speicherplatzunabhängig (relocatibel) sein, um an beliebiger Stelle eingeordnet werden zu können. Von der im "AC1" vorhandenen Hardware sollte nur ein CTC-Kanal benutzt werden und das Programm sollte nicht länger als etwa 256 Bytes sein. Weiter zu berücksichtigen ist, daß durch die Interrupt-Belastung die Rechenzeit des Systems nur unwesentlich erhöht wird. Diese Forderungen sind naturgemäß nur mit einigen Kompromissen zu erfüllen.

Erzeugung des Zähltaktes

Bei der Erzeugung des Zähltaktes muß man von der System-Taktfrequenz 2000 kHz ausgehen. Bei Verwendung nur eines CTC-Kanals ergibt sich nach dem Vorteiler des CTC, der auf 256 eingestellt wird, ein Zwischentakt von 7812,5 Hz. Da dieser Takt durch einen CTC-Kanal nur ganzzahlig geteilt werden kann, ergibt sich daraus eine Zeitangabe, die nur im 2-Sekunden-Takt weitergezählt werden kann. Mit einem Teilerfaktor von 125 des CTC ergibt sich eine Frequenz von 62,5 Hz.
Mit dieser Frequenz wird ein Interrupt-Programm ausgelöst, das das Weiterzählen der Uhr und alle 2 Sekunden die aktuelle Zeitanzeige realisiert. Für den praktischen Betrieb bedeutet das, daß nach spätestens 2 Sekunden die aktuelle Uhrzeit wieder auf der obersten Bildzeile eingetragen wird, auch wenn diese inzwischen durch ein anderes Programm gelöscht wurde.

Programmbedienung

Das in Tabelle 1 wiedergegebene Programm wird mittels des M-Kommandos auf einen beliebigen Speicherbereich eingegeben. Wer auf das Mini-BASIC verzichtet, kann dieses auch im EPROM-Bereich ab 800H unterbringen. Nicht benutzt werden darf dabei der RAM-Bereich 188EH...1894H, da das Uhrzeit-Programm diesen Bereich als Arbeitszellen benutzt.
Nach der Programmeingabe wird mit Eingabe des Buchstaben U und CR gestartet. Auf der 1.Bildzeile rechts erscheint die Ausschrift
SETZE UHR: -
Ab der Kursorposition sind fortlaufend 4 Ziffern (Stunden und Minuten) einzugeben. Mit Eingabe der letzten Stelle läuft die Uhr an. Das Programm kehrt in die Kommando-Verwaltung des Monitors zurück. Die Uhr arbeitet jetzt als Hintergrund-Programm. Nach 2 Sekunden erscheint die aktuelle Uhrzeit in der Form:
+ 09:26 UHR 02 SEC +
Wenn keine unzulässigen Programm-Manipulationen erfolgen, läuft die Uhr mit der Genauigkeit des Systemtaktes, bis schließlich RESET betätigt wird.

Zusammenarbeit mit anderen Programmen

Für die Zusammenarbeit mit anderen Programmen ergeben sich einige Einschränkungen bzw. Grundsätze.:
- Während der Benutzung des Magnetbandes muß die Uhr abgeschaltet werden, da die Magnetbandprogramme (S, V, L) ihren Zeittakt mit einfachen Zählschleifen erzeugen. Andernfalls kommt es zu Synchronisationsfehlern beim Einlesen bzw. unbrauchbaren Aufnahmen.
- Der durch das Uhrzeit-Programm eingestellte Interrupt-Modus IM 2 darf nicht verändert werden.
- Der Inhalt des I-Registers (18H) und der Interrupt-Vektor CTC (88H) dürfen nicht verändert werden.
- Von den freien CTC-Kanälen (0,1,2) generierte Interrupts müssen als Interrupt-Sprungtabelle den Bereich 1888H...188DH benutzen.
- Das System darf nicht über längere Zeit im Zustand DI verharren. Bis zum Zustand EI bleibt die Uhr stehen, die Anzeige fällt aus.
- Da der CTC-Kanal 3 benutzt wird, der innerhalb des CTC die niedrigste Priorität besitzt, kann durch zusätzliche Interrupts höherpriorisierter Kanäle ein zusätzlicher Zeitfehler bei der Uhr entstehen.
- Aus den Zählzellen 1893H: Minuten, 1892H: Sekunden kann für andere Programme die aktuelle Zeit übernommen werden. Die Daten stehen dort halbbyteweise im BCD-Kode bereit.

KORREKTUR

Beim Uhrenprogramm des "AC1" (FUNKAMATEUR, Heft 7/1986, Seite 358/359) muß es im Hex-Listing in der 12. Zeile v.o. und in der 7. Spalte v.l. statt "0C" richtig "18" heißen (... 21 93 18 7E ...). Meist ist 0CxxH durch den BASIC-Interpreter belegt.
Wer den Bildwiederholspeicher verdoppelt hat, muß in der 1. und 11. Zeile v.o. "21 D7 13" in "21 D7 17" ändern, weil sonst die Uhr in der Bildschirmmitte geschrieben wird.

W. Horn


68 KByte
Tabelle 1