Kleine Kosmos-Programme




Die innere Uhr überprüfen


Weiß deine innere Uhr genau, wie lang fünf Sekunden sind? Bei diesem Programm musst du genau fünf Sekunden auf den Taster drücken. In dieser Zeit zeigt die Anzeige null an. Wenn du die Taste loslässt, wird die gemessene Zeit anzeigt. Hast du zu kurz oder zu lang gedrückt? Dann kommt gleich der nächste Versuch. Und du kannst auch andere Zeiten bis zu neun Sekunden probieren.

    Rem Innere Uhr
    Pdir = 63
    Portout = 17
L1:
    A = Din
    B = 1
    If A = B Goto L1:
    D = 0
L2:
    Portout = 0
    Delay = 250
    A = D
    A = A + 1
    D = A
    A = Din
    B = 0
    If A = B Goto L2:
    A = D
    A = A Shr 1
    A = A Shr 1
    Portout = A
    Goto L1: Innere Uhr
    End

Bevor du zum ersten Mal die Taste drückst, zeigt die linke Ziffer eine Eins, damit möglichst wenig Strom verbraucht wird. Das Programm kreist dann immer in der ersten Schleife zu L1. Mit einem Tastendruck wechselt der Pegel an Din von 1 auf 0. Dann beginnt die eigentliche Zeitmessung in der L2-Schleife. Das Ergebnis wird in D gespeichert, weil A auch für die Tastenabfrage gebraucht wird. Sobald du die Taste loslässt, springt der Zustand an Din wieder auf 1, und die L2-Schleife wird verlassen, um die gemessene Zeit anzuzeigen.

In der Zählschleife siehst du nur eine Wartezeit von 250 ms, also von einer Viertelsekunde. Wenn du also fünf Sekunden lang gedrückt hast, wird hier bis 20 gezählt. Das Ergebnis muss dann durch vier geteilt werden. Mit einer Zeile A = A Shr 1 werden alle Bits an A um ein Bit nach rechts geschoben (shrift right). Das entspricht einer Division durch zwei. Mit zwei solchen Zeilen wird durch vier geteilt, und die Fünf wird korrekt an der rechten Ziffer angezeigt.

Ein Puls-Monitor


Dieses kleine Programm bildet einen Puls-Monitor nach, wie er im Krankenhaus verwendet wird. Man  hört den gleichmäßigen Puls des Patienten. Aber plötzlich gibt es ein Problem. Der Puls setzt aus, und ein Warnton erschallt. Zum Glück sind die Ärzte schneller und können den Patienten wiederbeleben. Alles noch mal gut gegangen!

               Rem Puls
               D = 20
L1:
               A = 0
               C = 10
L2:
               PWM = A
               A = A + 1
               Delay = 10
               C*Goto L2:
               C = 6
L3:
               PWM = A
               A = A - 1
               Delay = 100
               C*Goto L3:
               PWM = 0
               Delay = 100
               D*Goto L1:
               C = 20
               D = 20
               PWM = 0
L4:
               Delay = 250
               C*Goto L4:
               PWM = 20
               C = 50
L5:
              
Delay = 250
               C*Goto L5:
               PWM = 0
               C = 20
L6:
               Delay = 250
               C*Goto L6:
              
Goto L1:


Der Ton wird hier nicht über den Beep-Ausgang sondern über den PWM-Kanal erzeugt. Bei Vorversuchen ist mir aufgefallen, dass  mit den unteren Ausgaben zwischen 0 und 10 eine deutliche Lautstärkeänderung gesteuert werden kann. Deshalb ist der Piezo-Lautsprecher hier am PWM-Ausgang angeschlossen.

Bei jedem Herzschlag wird die Lautstärker schnell erhöht und nimmt dann langsamer ab. Insgesamt gibt es fünf Zählschleifen für die einzelnen Phasen des Programms. Wer sich den Quelltext genauer anschaut, kann beliebige Dinge wie Herzfrequenz, Anzahl der intakten Pulsschläge, Pausenlängen usw. ändern.