Projekt
Würfel
8051Win- Simulation
von Ilya Gufan, 4G5
Heilbronn, Juni 2006
Inhaltsverzeichnis
· Lastenheft 3
· Einführung 4
· Aufgaben 5
o Aufgabe 1. 8051Win-Simulation mit LED-Reihe 6
o Aufgabe 2. Programmierung der BB-Mikrocontrollerplatine 12
o Aufgabe 3. 8051Win-Simulation des Würfelmodells 17
o Aufgabe 4. 8051Win-Simulation der 7-Segment-Anzeige 23
o Aufgabe 5. Programmierung der 7-Segment-Anzeige 27
o Aufgabe 6. Langsam auslaufender oder nachlaufender Zähler 29
· Beschreibung der benutzten Befehle 32
· Quellenangabe 33
Anlage: CD
Lastenheft
1. 8051Win-Simulation mit LED-Reihe
a) Dualanzeige des Zählers /DJNZ-Befehl und CJNE-Befehl
b) Start-Stopp Schalter / Bitverarbeitung und bedingte Sprünge
c) Ausgabe auf die LPT-Schnittstelle / Parallele Schnittstelle
d) Ausgabe als Leuchtbalken / Decoder / Unterschied von Wert und Adresse
e) Vollständige Dokumentation mit Programmablaufplänen, Code,
Erklärungen, Snapshots
2. Programmierung der BB-Mikrocontrollerpiatine
a) EEPROM / Flash-EPROM / Harvard-Struktur / Adressbereiche
b) Zählerausgabe auf die LED-Reihe
c) Zeitprogramm / Unterprogramme / Zeitberechnung / Stackpointer
d) Befehlsabarbeitung
3 . 8051Win-Simulation
a) Würfelmodell mit integriertem Decoder
b) Würfelmodell ohne Decoder /indirekte Adressierung @R0, @R1 im 8bit-
Adressraum Code in Adr. 31h ... 36h abspeichern
c) Vollständige Dokumentation mit Programmablaufplänen, Code,
4. 8051Win-Simulation
a) Siebensegmentmodell / Indirekte Adressierung @DPTR im 16 bit-
Adressraum / Define Byte (DB)
b) Übersicht aller Adressierungsarten.
5. Programmierung der BB-Mikrocontrollerplatine
a) Ausgabe auf 7-Segment-Anzeige /arbeiten mit CJNE-Befehl / DPTR / DB
b) Vollständige Dokumentation mit Programmablaufplänen, Code, Erklärungen, Snapshots
6. Zusatzaufgabe (freiwillig)
a) Langsam auslaufenden / nachlaufenden Zähler entwickeln
b) Vollständige Dokumentation mit Programmablaufplänen, Code,
7. Vollständige Projektdokumentation incl. Deckblatt, Inhaltsverzeichnis, Lastenheft, Quellangaben und a51- wie hex-Code auf Diskette / CD
Einführung
Dieses Projekt wurde im Rahmen des CT-Unterrichts gemacht. Der Projektleiter ist Herr A. Hein. Das Ziel des Projektes war, die Assembler-Programmierung des µC zu meistern. Das zu programmierende Objekt war der Würfel. Die Ausführung der Programme sollte mit 8051win simuliert werden. Während des Unterrichts hatte der Schüler auch die Möglichkeit, mit dem BB-µC-Platine das Programm direkt auf dem µC ausführen zu lassen.
Ein Spielwürfel ist ein als Zufallsgenerator verwendeter Gegenstand, der auf mehrere, voneinander unterscheidbare Arten stabil auf der Ebene zu liegen kommen kann. Die meisten Würfel sind heute aus Holz oder Kunststoff und haben einen Durchmesser von etwa eineinhalb Zentimetern. Spielwürfel werden vor allem in den nach ihnen benannten Würfelspielen und in Glücksspielen, gelegentlich auch in Brettspielen und in Rollenspielen (wie z. B. »Dungeons & Dragons«) verwendet.
Die übliche Form ist die eines geometrischen Würfels, worauf auch der Begriff Spielwürfel zurückgeht. Um seine Rolleigenschaft zu verbessern, sind die Ecken heute häufig abgerundet. Die Flächen sind meistens mit ein bis sechs Punkten versehen, die auch als Augen bezeichnet werden, wobei die Augensumme sich gegenüberliegendener Seiten in der Regel sieben ergibt. Die Orientierung der gegenüberliegenden Paare (1,6), (2,5), (3,4) ist im westlichen Kulturkreis so festgelegt, dass die Ziffern 1, 2 und 3 im Gegenuhrzeigersinn gesehen werden, während sie im Fernen Osten im Uhrzeigersinn ausgerichtet sind.
In dem Projekt wird ein Würfel üblicher Form programmiert.
Aufgaben
· Dualanzeige des Zählers
· LED-Reihe
· Würfelmodell
· Siebensegmentmodell
Aufgabe 1. 8051Win-Simulation mit LED-Reihe
LED-Dualanzeige des Zählers.
Erklärung:
Man baut einen einfachen Zähler von 1 bis 6 bzw. von 6 bis 1 auf. Der Schalter wird durch P1 mit der Adresse 90h, die Ausgabe auf P2 mit der Adresse 0A0h festgelegt. Danach wird der Wert 6 bzw. 1 ins Register 1 geladen (Programmpunkt „laden“). Dann wird der Schalter überprüft, ob er auf 1 gesetzt ist. Wenn ja, überprüft man wieder. Wird er auf Null gesetzt, so lässt man das Programm weiter laufen (Programmpunkt „stopp“).
Danach gibt man den Registerinhalt von R1 auf P2.
Lösung mit DJNZ.
Mit DJNZ wird der Registerinhalt um eins verkleinert, deshalb zählt man von 6 bis 1. Sobald das Ergebnis Null ist, wird der Code weiter abgearbeitet. Mit dem Befehl SJMP springt es zum Programmpunkt „laden“. Ist das Ergebnis keine Null, wird es zum Programmpunkt „stopp“ gesprungen.
Lösung mit CJNE.
Mit INC wird der Registerinhalt um eins erhöht. Man zählt von 1 bis 6. Ist der Inhalt von R1 dem Wert 07h nicht gleich, wird es zum Programmpunkt „stopp“ gesprungen. Im Falle der Gleichheit wird zu dem Programmpunkt „laden“ gesprungen.
Man braucht keine Codierungstabelle, da man keinen Decoder hat.
Bild 6. Programmablaufplan für die Lösung mit INC
Bild 5. Programmablaufplan für die Lösung mit DJNZ
Assemblercode
א) von 6 bis 1 (mit DJNZ)
Code at 0000h
P1 equ 90h ; Start-Stopp-Schalter
P2 equ 0A0h ; Ausgabe erfolgt an der Adresse 0A0h
laden: mov R1, #06h ; Wert 6 wird in R1 geladen
stopp: JB P1.0, stopp ; Bei geschaltetem Schalter (d. h. ; bei gesetztem Bit) wird es zu Stopp ; gesprungen
count: mov P2, R1 ; Hier erfolgt die Ausgabe an die ; Adresse 0A0h (durch P2)
djnz R1, stopp ; Register wird um 1 verkleinert und ; verzweigt, wenn Ergebnis ungleich ; Null
sjmp laden
end ; Ende des Programms
ב) von 1 bis 6 (mit INC und CJNE)
P1 equ 90h ; Register Start-Stopp-Schalter
P2 equ 0A0h ; Ausgabe erfolgt an die Adresse ; 0A0h
laden: mov R1, #01h ; Wert 1 wird ins Register R1 geladen
count: mov P2, R1 ; Hier erfolgt die Ausgabe an die ; Adresse 0A0h d. h. an P2
inc R1 ; Registerinhalt wird um eins erhöht
cjne R1, #07h, stopp ; Ist Registerinhalt ungleich #07h, ; erfolgt die Verzweigt zu Stopp
sjmp laden ; Es wird zu Laden gesprungen
Ausgabe auf die LPT-Schnittstelle
Ausgabe equ und mov
P2 equ 0A0h
mov P2, #data
Zuerst wird die Adresse 0A0h dem P2 zugewiesen, danach werden die Daten (#data) ausgegeben. Mit dem Befehl mov können einer bestimmten Adresse verschiedene Sachen zugeordnet werden z.B. Wert, Daten oder eine andere Adresse.
Auf diese Weise lässt sich auch die Ausgabe auf die LPT Schnittstelle und Parallele Schnittstelle realisieren.
In dem Programm 8051Win können wir dem Port eine Schnittstelle zuweisen, bei dem Programm ist es LPT1.
Страницы: 1, 2, 3, 4