Der Mikrocontroller HT46F47E stellt uns u.a. einen PWM Ausgang zur Verfügung (PD0, Pin 10). In dieser Schaltung wird
dieser Ausgang verwendet, um die Helligkeit einer Leuchtdiode zu steuern. Mit zwei Tasten, die an zwei Eingänge des Mikrocontrollers
angeschlossen werden, wird die Helligkeit der Leuchtdiode wahlweise verringert oder erhöht. Mit einer kurzen Betätigung wird der
Helligkeitswert stufenweise verändert. Mit einem Dauerdruck erreicht man eine kontinuierliche Veränderung der Helligkeit. Zusätzlich
werden an die vier Ausgänge des Mikrocontrollers vier weitere Leuchtdioden angeschlossen. Mithilfe dieses Vierer-Gespanns wird binär
der aktuelle Helligkeitswert angezeigt. So kann man beobachten, wie bei jedem Tastendruck der Helligkeitswert verändert wird und wie
die gesteuerte Leuchtdiode darauf reagiert.
PWM
Bei einem PWM-Signal (Pulsweitenmodulation) handelt es sich um ein rechteckiges Signal mit fester Amplitude. Das Steuern mit einem
PWM-Signal wird dadurch erreicht, dass man das Verhältnis der Pulsdauer zu Pause verändert. Diese Veränderung bedeutet gleichzeitig die
Veränderung des Mittelwertes der Spannung, die am Ausgang ansteht.
Der kleine Mikrocontroller HT46F47E eignet sich sehr gut für kleine Projekte. Er kann kostengünstig erworben und einfach
mit nur zwei Tasten ohne zusätzliches Zubehör programmiert werden.
Um die Aufgabe zu bewältigen, hantiert das Programm mit drei Variablen. Es sind die Variablen A, B und C. Die Variable B dient im Programm als
Vergleichsgröße. Der eigentliche Wert für den PWM Ausgang befindet sich in der Variable A (Akku). Beim Runterfahren (dunkler, A=A-1) muss
untersucht werden, ob A bereits den Wert 0 erreicht hat. Der Vergleichswert (hier 0) muss in die Variable B geladen werden. Eine
direkte Zuweisung für die Variable B gibt es nicht. Es muss also der Wert 0 zunächst in die Variable A geladen werden. Anschließend
kann er von A in B geschoben werden. Erst dann kann der Vergleich A=B? durchgeführt werden. Damit die Variable A ihren alten Wert
nicht verliert, wird dabei der aktuelle Zustand von A in der Variable C zwischengespeichert.
Die gleiche Vorgehensweise gilt natürlich auch fürs Hochfahren (heller, A=A+1). Der Vergleichswert beträgt in diesem
Fall 15 (F).
Listing:
000 59 Beschreibe den PWM-Ausgang, PWM = A
001 54 Dioden Wert-Anzeige (binär), Dout=A
002 27 Wartezeit von 200 ms
003 CB Überspringe den folgenden Befehl, wenn Taster S1 betätigt
004 9C Springe zu Abfrage 2
005 52 A-Zwischenspeicherung, C=A
006 40 Vergleichswert 0, A=0
007 51 Variable B mit Vergleichswert laden, B=A
008 62 A aktualisieren, A=C
009 C3 Überspringe den folgenden Befehl, wenn A=B
010 72 Dunkler, A=A-1
011 90 Springe auf die Adresse 0
012 CA Überspringe den folgenden Befehl, wenn Taster S2 betätigt
013 90 Springe auf Adresse 0
014 52 A-Zwischenspeicherung, C=A
015 4F Vergleichswert F, A=F
016 51 Variable B mit Vergleichswert laden, B=A
017 62 A aktualisieren, A=C
018 C3 Überspringe den folgenden Befehl, wenn A=B
019 71 Heller, A=A+1
020 90 Springe auf Adresse 0
59 54 27 CB 9C 52 40 51 62 C3 72 90 CA 90 52 4F 51 62 C3 71 90