Der Mikrocontroller HT46F47E verfügt über vier digitale Ausgänge. Es sind die Pins 15 bis 18. Für kleine Projekte ist
das sicher ausreichend. Bei Bedarf kann man die Ausgänge z.B. mit einem Schieberegister vervielfältigen. In der folgenden Schaltung
werden zwei Schieberegister 74HC595 von dem HT46F47E angesteuert. Die Schieberegister werden in Reihe verschaltet. Dank dessen werden
für ihre Ansteuerung nur drei Ausgänge des Mikrocontrollers benötigt. Damit stehen 16 Ausgänge zur Verfügung. Gerade ausreichend, um eine
kleine LED-Show zu veranstalten.
Mithilfe drei Ausgänge werden einzelne Bits in das Schieberegister geladen. Für die Wertigkeit der Bits, 0 oder 1, ist
der Ausgang A3 (Pin 16) zuständig. Bevor weitere Schritte unternommen werden, muss entschieden werden, welches Bit in das Schieberegister
jetzt geladen werden soll. Das geschieht dadurch, dass man den Ausgang einschaltet (Bit = 1) oder ausschaltet (Bit = 0). Die Übernahme
des Bits erfolgt mit der Leitung SHCP. Dafür ist der Ausgang A2 (Pin 17) verantwortlich. Sobald der Ausgang eingeschaltet wird, wird
das Bit in den flüchtigen Speicher des Schieberegisters (Shift Register) übernommen. An den Ausgängen des Schieberegisters merkt man
den Vorgang nicht. Das Shift Register ist mit den Ausgängen nicht verbunden. Die neuen Bits, man kann mehrere Bits nacheinander in
das Schieberegister laden, müssen nach dem Laden in das Ausgaberegister transferiert werden. Das wird mit der dritten Leitung (STCP)
realisiert. Sie ist an den Ausgang A1 (Pin 18) des Mikrocontrollers angeschlossen. Sobald der Ausgang eingeschaltet wird, werden alle
Bits aus dem Shift Register in das Ausgaberegister geladen. Alle Ausgänge ändern dann auch entsprechend
ihre Zustände
Auf dem Schaltplan kann man sehen, dass der Ausgang Q7‘ des ersten Schieberegisters mit dem Eingang DS des zweiten
Schieberegisters verbunden ist. Über diese Leitung werden die Bits aus dem ersten in das zweite Schieberegister geschoben. Bei jedem
Bit-Ladevorgang werden nämlich alle bereits vorhandenen Bits nach rechts verschoben. Auf diese Weise wird das zweite Schieberegister
mit Bits belegt.
Die Testschaltung
Testschaltung
Das Programm
Das Programm besteht aus zwei Teilen: Hauptprogramm und einem Unterprogramm. In dem Hauptprogramm wird, abgesehen von
der Taster-Abfrage, das Unterprogramm mehrmals aufgerufen. Mit jedem Aufruf wird in das Schieberegister ein Bit geladen. Das
Unterprogramm besteht aus drei Teilen. In dem ersten Teil, Zeile 8 bis 10, wird Bit = 0 in das Schieberegister geladen. In dem zweiten
Teil, Zeile 11 bis 12, wird Bit = 1 geladen. In dem dritten Teil, Zeile 13 bis 15, werden die Ausgänge der beiden Schieberegister
aktualisiert. Wie man im Hauptprogramm sehen kann, wird das Unterprogramm unter Verwendung verschiedener Adressen aufgerufen: D8
und DB. Mit dem Befehl D8 wird der Anfang des Unterprogramms angesteuert. Mit dem Aufruf DB wird dagegen der erste Teil des
Unterprogramms übersprungen.
Programm mit Kommentaren
HAUPTPROGRAMM
000 CB Überspringe den folgenden Befehl, wenn Taster betätigt
001 31 Taster nicht betätigt, springe -1
002 D8 Unterprogramm (0 in Schieberegister senden)
003 DB Unterprogramm (1 in Schieberegister senden)
004 DB Unterprogramm (1 in Schieberegister senden)
005 D8 Unterprogramm (0 in Schieberegister senden)
006 DB Unterprogramm (1 in Schieberegister senden)
007 90 Springe zurück zum Anfang (Zeile 0)
UNTERPROGRAMM
008 10 Alle Ausgänge aus (damit ist auch DS=LOW)
009 12 A2 ein (SHCP HIGH), Bit 0 übernehmen
010 9D Sprung auf Zeile 13
011 14 A3 ein (DS=HIGH) 1 auf DS Leitung, alle andere aus
012 16 A2+A3 ein (SHCP + DS HIGH) Bit 1 übernehmen
013 11 Ausgänge Schieberegister aktualisieren (STCP HIGH)
014 27 Wartezeit ca. 200 ms
015 E0 Return (Rücksprung)
CB 31 D8 DB DB D8 DB 90 10 12 9D 14 16 11 27 E0