Das eBook Angewandte Mikroelektronik wurde von Hans Lohninger zur Unterstützung verschiedener Lehrveranstaltungen geschrieben. Weitere Informationen finden sie hier. |
Home Experimente Mikroprozessorsystem Lauflicht | |
Siehe auch: Experiment: Parallel ablaufende Programme: Sinusgenerator und Lauflicht | |
|
|
Experiment: Lauflicht
Das folgende Experiment verwendet einen Rotationsbefehl zur Erzeugung eines Lauflichts. Der Aufbau der Versuchsanordnung entspricht der im Experiment 8fach-Inverter dargestellten Anordnung. Das Lauflicht wird erzeugt, indem zu Beginn des Programms ein Bit des Registers A auf eins und alle anderen auf null gesetzt werden. Der Inhalt des Akkumulators wird an den Port POUT ausgegeben und dann um ein Bit nach rechts rotiert. Nach einer Verzögerung von etwa 150 ms wird der Registerinhalt erneut nach rechts rotiert und wieder ausgegeben. Durch diese Schleife wird das eine gesetzte Bit dauernd im Kreis geschickt. ;=================================================== ;---- Experiment: Lauflicht ------------------------ ;=================================================== ; .GLOBAL LAUFL LAUFL: LD A,1 ;Initialisierung $L1: OUT (POUT),A ;Ausgabe auf POUT RRCA ;Bit schieben LD HL,10000 ;Länge der Verzögerung CALL DELAY JR $L1 ;Endlosschleife ; ;=================================================== ;------ Verzögerung -------------------------------- ;=================================================== ; ;ENTRY: HL ... Zahl der Schleifendurchläufe ;EXIT: Verzögerung um 26*HL + 47 Takte, ; falls keine Wartezyklen etc. aufgetreten sind ; .GLOBAL DELAY DELAY: PUSH AF ;Wert von AF sichern PUSH HL ;Wert von HL sichern $1: DEC HL LD A,L ;Test, ob HL=0 OR H JR NZ,$1 ;Schleife, falls HL<>0 POP HL ;alten Wert von HL und POP AF ; AF wiederherstellen RET Dieses kleine Programm verwendet ein Unterprogramm, das die Verzögerung zwischen den einzelnen Rotationsschritten erzeugt. Da solche Programme, die eine einstellbare Verzögerung erzeugen, öfters benötigt werden, ist es sinnvoll, ein solches Programm als Unterprogramm zu formulieren, dem als Parameter die Dauer der Verzögerung übergeben wird. Das Unterprogramm DELAY übernimmt im Register HL den Verzögerungsparameter. Dieser gibt an, wie viele Schleifendurchläufe das Programm machen soll. Pro Durchlauf benötigt es 26 Takte, was bei einer Taktfrequenz von 4 MHz einer Zeit von 7.5 µsek entspricht. Man beachte, dass der Aufruf des Programms und das Sichern der verwendeten Register auch eine gewisse Zeit benötigen, was sich in der von der Routine benötigten Gesamtzeit niederschlägt (47 zusätzliche Takte ohne CALL). Zu Beginn des Programms werden die Register HL und A auf den Stack gelegt, da sie während der Programmausführung verändert werden. Die Verzögerungsschleife selbst besteht nur aus einem Dekrementieren von HL und der Abfrage, ob HL gleich null ist. Wenn dies der Fall ist, werden HL und A wieder in den ursprünglichen Zustand gebracht (vom Stack geladen) und das Programm wird mit RET verlassen.
|
|
Home Experimente Mikroprozessorsystem Lauflicht |