
Auf die Plätze, fertig, Los....!
Hier bietet sich natürlich an, die gemessene Zeit auf einem Display auszugeben. Für dieses Projekt habe ich wieder mein kleines Display-Board mit Drehgeber bemüht ( hier zu finden). Damit kann das ganze direkt ans STK500 angeschlossen werden.
Die Software hierzu funktioniert folgendermassen:
Der Quellcode ist vollständig in Assembler geschrieben und kann hier eingesehen werden.
Ein 8 Bit Timer wird derart initialisiert, dass er genau 1000 mal pro Sekunde einen Interrupt auslöst. In dieser Interrupt Routine wird dann ein im Ram Speicher gehaltener Dezimalzähler erhöht.
Weiterhin kümmert sich die Interrupt Routine um die Abfrage eines Tasters, der je nach Betätigungsdauer die Stopuhr dann anhält oder eine Zwischenzeit anzeigen lässt.
Die Interruptsoutine meldet entsprechende Ereignisse an die Hauptprogramm-Schleifte, welche dann die zugehörigen Aktionen ausführt.
Die gemessene Zeit wird dabei nur alle zehntel Sekunde aktualisiert, da eine LCD Anzeige sowie das Auge nicht mehr auflösen könnne. Intern werden aber tausendstel Sekunden gezählt und bei den Zwischenzeiten mit angezeigt.
Knopf einmal kurz drücken - Stopuhr läuft an, in der zweiten Display Zeile wird die aktuelle Zeit angezeigt.
Knopf nochmal kurzs drücken - Die aktuelle Zeit wird als Zwischenzeit in der ersten Zeile angezeigt, die Gesamtzeit läuft weiter

Laufende Uhr mit Zwischenzeit
Knopf etwas länger drücken - Die Uhr wird angehalten und die zuletzt gemessene Zeit als zwischenzeit angezeigt.
Durch einen erneuten kurzen Tastendruck wird die Uhr wieder gestartet. Während die Uhr läuft, blinkt noch eine LED an PortD0 mit 5Hz, wodurch man man eine weitere optische Kontrolle erhält.