Bei dieser Uhr werden Stunden, Minuten und Sekunden im Binärsystem angezeigt.
Um eine Binärzahl (=Dualzahl) in die entsprechende Dezimalzahl umzurechnen, werden alle Ziffern jeweils mit ihrem Stellenwert (entsprechende Zweierpotenz) multipliziert und dann addiert.
LED leuchtet => Wert = 1 - LED aus => Wert = 0
Beispiel:
| Zweierpotenz | * | Wert | = | 0 | |
| 25 | 32 | * | 0 | = | 0 |
| 24 | 16 | * | 1 | = | 16 |
| 23 | 8 | * | 0 | = | 0 |
| 22 | 4 | * | 1 | = | 4 |
| 21 | 2 | * | 1 | = | 2 |
| 20 | 1 | * | 0 | = | 0 |
| ---------- | |||||
| Summe | = | 22 | |||
Mit den Tastern lassen sich Uhrzeit, Wecker und Eieruhr einstellen und in den Standby-Modus wechseln.
Eine Bedienungsanleitung kann man sich mit Hyperterminal anzeigen lassen, wenn man die Uhr über den MAX-Adapter am Rechner anschließt. Außerdem bekommt man so die Zeit zusätzlich dezimal angezeigt, was das Einstellen erleichtert.
Zum Strom Sparen befindet sich der Mikrocontroller die meiste Zeit im Sleep-Modus
(Power-Save).
Geweckt wird einmal/Sekunde durch den Interrupt vom Timer2 (asynchron
getaktet durch den Uhrenquarz) oder durch einen externen Interrupt
(Taster).
Nach dem Aufwachen wird die LED-Zeitanzeige aktualisiert, abgefragt
ob der Max-Adapter angeschlossen ist und gegebenenfalls Text über
USART gesendet.
Es wird geprüft ob ein Alarm fällig ist, die Taster werden abgefragt
und entsprechend reagiert. Dann gehts wieder in den Sleep-Modus.
Im Standby-Modus sind die Zeit-LEDs aus, USART ist deaktiviert,
aber die Uhr läuft weiter und der Alarm wird kontrolliert.
Der Piepser wird mit Hardware PWM 16Bit (Timer1) betrieben. Die
Frequenzen fur die Alarm-Töne werden zufällig generiert - so ergibt
sich bei jeden Alarm eine andere Tonfolge.
Für kurze Pausen und zum LEDs dimmen und blinken lassen ist der
Timer0 (1000 Hz) zuständig.