Das eBook Angewandte Mikroelektronik wurde von Hans Lohninger zur Unterstützung verschiedener Lehrveranstaltungen geschrieben. Weitere Informationen finden sie hier.


Unterprogramme

Viele Aufgaben innerhalb eines Programmablaufs verlangen dieselben Funktionen jedoch mit unterschiedlichen Parametern. So benötigt man z.B. einmal eine Ausführungspause von 100 µsek, ein andermal eine Pause von nur 40 µsek. Die Struktur des verwendeten Verzögerungsprogramms ist jedesmal gleich, nur die Verzögerungszeit ist unterschiedlich.

In solchen Fällen wird man einen Programmteil nicht zweimal in das Gesamtprogramm einfügen, sondern ein Unterprogramm schreiben, das die gestellte Aufgabe erfüllt. Ein Unterprogramm ist ein Programm, das mit einem RET-Befehl endet und damit die Rückkehr an die Stelle des Aufrufes ermöglicht, sofern es mit einem speziellen Befehl (CALL) aufgerufen worden ist. Ein Unterprogramm (z.B. UP1) wird aus einem Hauptprogramm durch CALL aufgerufen.

            bla     bla
            bla     bla         ;Hauptprogramm
            CALL    UP1         ;Unterprogrammaufruf von UP1
            bla     bla
            bla     bla
;
UP1:        bla     bla         ;Ausführungsteil des
            bla     bla         ;  Unterprogramms
            RET                 ;Rücksprung zum Hauptprogramm

Dabei wird, wenn der Befehl CALL ausgeführt wird, zuerst die Adresse des nächsten Befehls nach CALL am Stack zwischengespeichert und dann verzweigt das Programm auf die Anfangsadresse von UP1. Am Ende des Unterprogramms steht der Befehl RET, der die zwischengespeicherte Adresse vom Stack nimmt und in den Program Counter lädt. Dies entspricht einem Rücksprung zum nächsten Befehl nach CALL im Hauptprogramm. Folgende Abbildung zeigt die Verhältnisse in graphischer Form.

Vorgänge beim Aufruf eines Unterprogramms

Mit diesem Mechanismus ist also sichergestellt, dass man ein Unterprogramm von beliebigen Stellen im Adressraum des Mikrocomputers aufrufen kann, und dass nach der Ausführung wieder mit dem nächsten Befehl nach CALL fortgesetzt wird.

Die Verwendung von Unterprogrammen ist ein sehr mächtiges Hilfswerkzeug bei der Programmierung von Mikroprozessoren, und sollte soviel wie möglich eingesetzt werden. Für die fehlerfreie Einsetzbarkeit eines Unterprogramms sollte man sich jedoch auch seiner Unzulänglichkeiten bewusst sein. Es ist daher unbedingt notwendig, bei der Dokumentation eines Unterprogramms nicht nur eventuelle Parameter und Ergebnisse abzulegen, sondern auch mögliche Gefahren und Einschränkungen. Ebenso sollte man sich stets im Klaren sein, welche Register und Speichervariablen vom Unterprogramm verändert werden.


Last Update: 2008-05-31