16.01.2014 Aufrufe

Laboraufgabenblatt 2 - Beuth Hochschule für Technik Berlin

Laboraufgabenblatt 2 - Beuth Hochschule für Technik Berlin

Laboraufgabenblatt 2 - Beuth Hochschule für Technik Berlin

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />

FB VI, Labor für Digitaltechnik<br />

MOP: Laborübung 2<br />

Abnahme (bitte vom Betreuer per Unterschrift bestätigen lassen)<br />

Aufgabe 1 Aufgabe 2 Aufgabe 3 Aufgabe 4 Aufgabe 5<br />

Hinweise zum Labortermin 2<br />

Von jeder Gruppe ist pro Laborübung ein Laborbericht anzufertigen und pünktlich<br />

zu Beginn des nächsten Labortermins abzugeben. Die Laborberichte müssen alle<br />

im jeweiligen Übungsblatt aufgeführten Fragen behandeln. Erfassen und<br />

kommentieren Sie zudem alle Beobachtungen und Ergebnisse. Achten Sie bei<br />

Rechenaufgaben darauf, den Lösungweg kenntlich zu machen.<br />

Zusätzlich zur Abgabe des Berichts findet nach Fertigstellung der Aufgabe eine<br />

persönliche Rücksprache zur durchgeführten Übung mit beiden<br />

Gruppenmitgliedern statt. Lassen Sie sich dazu Ihre Anwesenheit, sowie die<br />

erfolgreiche praktische Abnahme auf dem jeweils aktuellen Aufgabenblatt<br />

quittieren. Drucken Sie dieses dazu aus und heften Sie es als Deckblatt zu Ihrem<br />

Laborbericht.<br />

Machen Sie sich mit der Befehlsliste für den Mikrocontroller 8051 vertraut. Diese<br />

stellt die Grundlage dieser und aller folgenden Laborübungen dar. Für alle<br />

Programmentwurfsaufgaben ist folgender Ablauf einzuhalten:<br />

1. Schritt: Erfassung und Analyse des Problems bzw. der zu lösenden Aufgabe<br />

2. Schritt: Formulierung eines geeigneten Lösungsweges (= Algorithmus)<br />

3. Schritt: Umsetzung des Algorithmus in ein Struktogramm oder Flussdiagramm<br />

(Programmablaufplan)<br />

4. Schritt: Programmierung des Codes in Assemblersprache mit den<br />

entsprechenden Mnemonics mit Hilfe eines geeigneten Editors<br />

(entweder EdSim51 oder Notepad++ (beherrscht ASM-Syntax))<br />

5. Schritt: Ausführen und Testen des Programms in EdSim51<br />

6. Schritt: meist Fehlersuche (= Debugging), iterativ ab Schritt 4...<br />

Achten Sie beim Schreiben darauf, dass Sie nur ASCII-Text ohne Formatierung und<br />

Sonderzeichen erzeugen. Ansonsten gibt es Fehlermeldungen.<br />

Und nun gutes Gelingen!<br />

MOP_Laboruebung_2.doc Seite 1 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />

30.10.2013 Prof. Dr. Sven-Hendrik Voß


Aufgaben<br />

1. Kontrollfragen<br />

a. Worin bestehen die grundlegenden Unterschiede zwischen Mikroprozessoren<br />

und Mikrocontrollern? Nennen Sie jeweils ein Einsatzbeispiel.<br />

______________________________________________________________<br />

______________________________________________________________<br />

b. Was sind Gemeinsamkeiten, was potentielle Unterschiede innerhalb<br />

sogenannter Prozessorfamilien?<br />

______________________________________________________________<br />

______________________________________________________________<br />

c. Sie haben im Unterricht die verschiedenen Adressierungsarten kennengelernt.<br />

Nennen Sie Vorteile der indirekten Adressierung.<br />

______________________________________________________________<br />

______________________________________________________________<br />

2. Der Akkumulator (A) nimmt beim 8051 eine zentrale Stellung ein. Sämtliche<br />

Berechnungen und Datentransfers benutzen den Akkumulator. Für arithmetische<br />

oder logische Operationen muss einer der Operanden im Akkumulator<br />

bereitgestellt werden. Das Ergebnis wird wiederum im Akkumulator abgelegt.<br />

Speziell für die Multiplikation und die Division existiert der Hilfsakkumulator (B).<br />

Der 8051 Mikrocontroller führe nun folgende Assembler-Befehle aus.<br />

Akkumulator- (A) und Hilfsakkumulator (B-Register) seien zu Beginn 0.<br />

MOV A,#55 ;__________________________________<br />

ADD A,#7 ;__________________________________<br />

A=0___h B=0___h<br />

A=0___h B=0___h<br />

MOV B,A ;__________________________________ A=0___h B=0___h<br />

MOV A,#78 ;__________________________________<br />

A=0___h B=0___h<br />

MUL AB ;__________________________________ A=0___h B=0___h<br />

a. Kommentieren Sie jede Befehlszeile mit der Funktionsbeschreibung und geben<br />

Sie jeweils an, welchen Wert Akkumulator und B-Register nach der<br />

Befehlsausführung besitzen. Nutzen Sie dazu auch die Befehlsliste für den<br />

Mikrocontroller 8051.<br />

MOP_Laboruebung_2.doc Seite 2 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />

30.10.2013 Prof. Dr. Sven-Hendrik Voß


. Welche mathematische Berechnung wird ausgeführt? (mathematischer Term)<br />

______________________________________________________________<br />

c. Welche Assemblerbefehle müssen ausgeführt werden, um folgenden Ausdruck<br />

zu berechnen (Rx sind Register)?<br />

R4 = R3 / [ (R0 - R1) * R2 ]<br />

Nutzen Sie wiederum die Befehlsliste des 8051 als Referenz und orientieren<br />

Sie sich an der Vorgehensweise der Aufgabe 2. Kommentieren Sie jeweils die<br />

Funktion jedes Befehls. Zur Vereinfachung wird angenommen, dass das<br />

Produkt kleiner als 256 ist.<br />

______________ ; _________________________________<br />

______________ ; _________________________________<br />

______________ ; _________________________________<br />

______________ ; _________________________________<br />

______________ ; _________________________________<br />

______________ ; _________________________________<br />

______________ ; _________________________________<br />

______________ ; _________________________________<br />

3. Die folgenden Hexadezimalzahlen sollen addiert werden: 96h und 5Dh.<br />

a. Wandeln Sie die Hexadezimalzahlen in Dualzahlen um.<br />

b. Führen Sie die Addition schriftlich binär aus.<br />

c. Berechnen Sie, ob ein Carry (Übertrag?), Hilfs-Carry (auch Auxiliary Carry, d.h.<br />

Übertrag im unteren Halbbyte?) oder ein Overflow (Überlauf) bei dieser<br />

Rechenoperation eintritt.<br />

d. Geben Sie zu der obengenannten Addition die zur Ausführung in<br />

Assemblersyntax notwendigen Instruktionen an. Orientieren Sie sich dafür<br />

wieder an der Befehlsliste für den Mikrocontroller 8051. (Erinnerung: Der 8051<br />

ist eine Akkumulatormaschine)<br />

e. Führen Sie das unter 3 d) erstellte Programm in EdSim51 aus. Carry Flag,<br />

Auxiliary Carry Flag und Overflow Flag sind Bestandteil des Program Status<br />

Word (PSW) Registers. In diesem Register sind mehrere Kennzeichnungsbits<br />

zusammengefaßt, die Auskunft über den Zustand der CPU oder das Ergebnis<br />

einer Operation geben. Verrsuchen Sie, die Werte im PSW in der Simulation<br />

nachzuvollziehen. Lassen Sie sich die Vorführung abzeichnen.<br />

f. Wandeln Sie die Zahlen und das Ergebnis in Dezimalzahlen mit bzw. ohne<br />

Vorzeichen um und erläutern Sie die Unterschiede.<br />

g. Ließe sich mit dem 8051 (8-Bit Mikrocontroller) auch eine 16 Bit Addition<br />

durchführen. Wenn ja, wie?<br />

MOP_Laboruebung_2.doc Seite 3 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />

30.10.2013 Prof. Dr. Sven-Hendrik Voß


4. Eine LED soll durch einen Taster abwechselnd ein- und ausgeschaltet werden.<br />

Die LED wird dazu in Durchlassrichtung zwischen Port P1.7 und High (+5V) gelegt<br />

(siehe EdSim51 Schaltplan). Der Taster liegt zwischen Port P2.3 und Low<br />

(Masse). Grob skizziert lässt sich diese Aufgabe mit folgendem Programm lösen:<br />

start:<br />

SETB xxxx ;LED initialisieren (ausschalten)<br />

SETB xxxx ;Taster als Input konfigurieren (high)<br />

main:<br />

JNB xxxx,ein ;Falls Taster betaetigt, LED EIN<br />

JB xxxx,aus ;Falls Taster nicht betaetigt, LED aus<br />

JMP main<br />

ein:<br />

CLR xxxx<br />

JMP main<br />

aus:<br />

SETB xxxx<br />

JMP main<br />

end<br />

;LED an<br />

;LED aus<br />

Gehen Sie nun wie folgt vor:<br />

a. Ergänzen Sie die Lücken xxxx im gezeigten Assembler-Code. Achten Sie<br />

insbesondere auf die korrekte Pin- und aktive Pegelzuordnung.<br />

b. Markieren Sie im EdSim Schaltplan (Abbildung 1) farblich, welche Ports<br />

geschaltet werden.<br />

c. Vergegenwärtigen Sie sich wie das Programm funktioniert. Simulieren Sie das<br />

Programm anschließend in EdSim51 und erläutern Sie die Funktionalität.<br />

Lassen Sie sich die Vorführung abzeichnen.<br />

d. Wozu wird hier der Befehl JMP verwendet? Sie werden feststellen, dass es<br />

diesen Befehl im Befehlsumfang des 8051 so gar nicht gibt. Analysieren Sie<br />

den Assembler Code im Code Memory Fenster und nennen sie anhand des<br />

ermittelten Hexcodes den verwendeten Befehl.<br />

e. Simulieren Sie das Programm noch einmal und achten Sie auf den<br />

Befehlszähler (PC: Program Counter). Kommentieren Sie nun die JMP Befehle<br />

in dem Programm aus und beobachten Sie was passiert, wenn Sie das<br />

Programm nun simulieren. Wie ist dieses Verhalten zu erklären?<br />

f. Ein Programmablaufplan (auch: Struktogramm) dient der grafischen Darstellung<br />

von Codesequenzen und Verzweigungen. Erstellen Sie zu diesem Assembler-<br />

Programm einen Programmablaufplan und tragen Sie neben dem Ablaufplan<br />

die entsprechenden Assembler-Befehle des Programms ein. Zur Erleichterung<br />

ist das Gerüst des Ablaufdiagramms bereits in Abbildung 2 vorskizziert.<br />

MOP_Laboruebung_2.doc Seite 4 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />

30.10.2013 Prof. Dr. Sven-Hendrik Voß


Abbildung 1: EdSim Schaltplan<br />

Abbildung 2: Gerüst des Programmablaufplans<br />

MOP_Laboruebung_2.doc Seite 5 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />

30.10.2013 Prof. Dr. Sven-Hendrik Voß


5. Wandeln Sie Ihr in Pseudocode geschriebenes Programm aus Laborübung 1 in<br />

richtige Assemblersyntax um und verfizieren Sie das Resultat in EdSim51. Für die<br />

geeigneten Assembler-Befehle ziehen Sie wiederum die Befehlsliste für den<br />

Mikrocontroller 8051 zu Rate. Beachten Sie auch die Hinweise zu diesem<br />

Labortermin (vor allem im Hinblick auf die Einhaltung des vorgeschrieben<br />

Ablaufs).<br />

Gehen Sie von folgenden konkreten Werten aus: Die Grundseite des ersten<br />

Dreiecks beträgt 16 [Einheiten], die darauf senkrecht stehende Höhe beträgt 7<br />

[Einheiten]. Das zweite Dreieck hat eine Grundseitenlänge von 12 [Einheiten] und<br />

die darauf senkrecht stehende Höhe dieses Dreiecks beläuft sich auf 9 [Einheiten].<br />

Das Ergebnis der Rechnung soll letztendlich als Binärwert auf der LED-Kette<br />

angezeigt werden (LED leuchtet = 1, LED leuchtet nicht = 0). Für die<br />

Ausgangswerte, alle Zwischenergebnisse, sowie das Endergebnis ist eine<br />

Speicherung im internen RAM vorzusehen. Lassen Sie sich die Vorführung<br />

abzeichnen.<br />

Hinweis: Zum Anzeigen eines Wertes auf der LED-Kette (Port 1) reicht eine<br />

einfache MOV Anweisung mit der Angabe des darzustellenden Wertes aus. Um<br />

beispielsweise den Wert 16 auf der LED-Kette anzuzeigen, würde man folgenden<br />

Assembler-Code verwenden.<br />

MOV P1, #16<br />

Zusatzaufgabe<br />

Schreiben Sie ein Assemblerprogramm für die Volumenberechnung einer<br />

Pyramide. Gehen Sie dabei von einer quadratischen Pyramide aus. Eine<br />

Seitenlänge der Grundfäche beträgt 6 [Einheiten]. Die Höhe beträgt 3 [Einheiten].<br />

Das Ergebnis der Rechnung soll wie in Aufgabe 5 als Binärwert auf der LED-Kette<br />

angezeigt werden. Für die Ausgangswerte, alle Zwischenergebnisse, sowie das<br />

Endergebnis ist wieder eine Speicherung im internen RAM vorzusehen.<br />

MOP_Laboruebung_2.doc Seite 6 von 6 <strong>Beuth</strong> <strong>Hochschule</strong> <strong>Berlin</strong><br />

30.10.2013 Prof. Dr. Sven-Hendrik Voß

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!