Программирование микроконтроллера на ассемблере. Симуляция игральной кости
Реферат - Компьютеры, программирование
Другие рефераты по предмету Компьютеры, программирование
Projekt
Wrfel
8051Win- Simulation
von Ilya Gufan, 4G5
Heilbronn, Juni 2006
Inhaltsverzeichnis
- Lastenheft 3
- Einfhrung 4
- Aufgaben 5
- Aufgabe 1. 8051Win-Simulation mit LED-Reihe 6
- Aufgabe 2. Programmierung der BB-Mikrocontrollerplatine12
- Aufgabe 3. 8051Win-Simulation des Wrfelmodells17
- Aufgabe 4. 8051Win-Simulation der 7-Segment-Anzeige23
- Aufgabe 5. Programmierung der 7-Segment-Anzeige27
- Aufgabe 6. Langsam auslaufender oder nachlaufender Zhler29
- Beschreibung der benutzten Befehle32
- Quellenangabe33
Anlage: CD
Lastenheft
1. 8051Win-Simulation mit LED-Reihe
a) Dualanzeige des Zhlers /DJNZ-Befehl und CJNE-Befehl
b) Start-Stopp Schalter / Bitverarbeitung und bedingte Sprnge
c) Ausgabe auf die LPT-Schnittstelle / Parallele Schnittstelle
d) Ausgabe als Leuchtbalken / Decoder / Unterschied von Wert und Adresse
e) Vollstndige Dokumentation mit Programmablaufplnen, Code,
Erklrungen, Snapshots
2. Programmierung der BB-Mikrocontrollerpiatine
a) EEPROM / Flash-EPROM / Harvard-Struktur / Adressbereiche
b) Zhlerausgabe auf die LED-Reihe
c) Zeitprogramm / Unterprogramme / Zeitberechnung / Stackpointer
d) Befehlsabarbeitung
e) Vollstndige Dokumentation mit Programmablaufplnen, Code,
Erklrungen, Snapshots
3 . 8051Win-Simulation
a) Wrfelmodell mit integriertem Decoder
b) Wrfelmodell ohne Decoder /indirekte Adressierung @R0, @R1 im 8bit-
Adressraum Code in Adr. 31h ... 36h abspeichern
c) Vollstndige Dokumentation mit Programmablaufplnen, Code,
Erklrungen, Snapshots
4. 8051Win-Simulation
a) Siebensegmentmodell / Indirekte Adressierung @DPTR im 16 bit-
Adressraum / Define Byte (DB)
b) bersicht aller Adressierungsarten.
c) Vollstndige Dokumentation mit Programmablaufplnen, Code,
Erklrungen, Snapshots
5. Programmierung der BB-Mikrocontrollerplatine
a) Ausgabe auf 7-Segment-Anzeige /arbeiten mit CJNE-Befehl / DPTR / DB
b) Vollstndige Dokumentation mit Programmablaufplnen, Code, Erklrungen, Snapshots
6. Zusatzaufgabe (freiwillig)
a) Langsam auslaufenden / nachlaufenden Zhler entwickeln
b) Vollstndige Dokumentation mit Programmablaufplnen, Code,
Erklrungen, Snapshots
7. Vollstndige Projektdokumentation incl. Deckblatt, Inhaltsverzeichnis, Lastenheft, Quellangaben und a51- wie hex-Code auf Diskette / CD
Einfhrung
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 Wrfel. Die Ausfhrung der Programme sollte mit 8051win simuliert werden. Whrend des Unterrichts hatte der Schler auch die Mglichkeit, mit dem BB-C-Platine das Programm direkt auf dem C ausfhren zu lassen.
Ein Spielwrfel ist ein als Zufallsgenerator verwendeter Gegenstand, der auf mehrere, voneinander unterscheidbare Arten stabil auf der Ebene zu liegen kommen kann. Die meisten Wrfel sind heute aus Holz oder Kunststoff und haben einen Durchmesser von etwa eineinhalb Zentimetern. Spielwrfel werden vor allem in den nach ihnen benannten Wrfelspielen und in Glcksspielen, gelegentlich auch in Brettspielen und in Rollenspielen (wie z. B. Dungeons & Dragons) verwendet.
Die bliche Form ist die eines geometrischen Wrfels, worauf auch der Begriff Spielwrfel zurckgeht. Um seine Rolleigenschaft zu verbessern, sind die Ecken heute hufig abgerundet. Die Flchen sind meistens mit ein bis sechs Punkten versehen, die auch als Augen bezeichnet werden, wobei die Augensumme sich gegenberliegendener Seiten in der Regel sieben ergibt. Die Orientierung der gegenberliegenden Paare (1,6), (2,5), (3,4) ist im westlichen Kulturkreis so festgelegt, dass die Ziffern 1, 2 und 3 im Gegenuhrzeigersinn gesehen werden, whrend sie im Fernen Osten im Uhrzeigersinn ausgerichtet sind.
In dem Projekt wird ein Wrfel blicher Form programmiert.
Aufgaben
- Dualanzeige des Zhlers
- LED-Reihe
- Wrfelmodell
- Siebensegmentmodell
Aufgabe 1. 8051Win-Simulation mit LED-Reihe
LED-Dualanzeige des Zhlers.
Erklrung:
Man baut einen einfachen Zhler 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 berprft, ob er auf 1 gesetzt ist. Wenn ja, berprft man wieder. Wird er auf Null gesetzt, so lsst man das Programm weiter laufen (Programmpunkt „stopp“).
Danach gibt man den Registerinhalt von R1 auf P2.
Lsung mit DJNZ.
Mit DJNZ wird der Registerinhalt um eins verkleinert, deshalb zhlt 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.
Lsung mit CJNE.
Mit INC wird der Registerinhalt um eins erhht. Man zhlt 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.
Programmablaufplne
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)
Code at 0000h
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
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 d. h. an P2
inc R1 ; Registerinhalt wird um eins erhht
cjne R1, #07h, stopp ; Ist Registerinhalt ungleich #07h,
; erfolgt die Verzweigt zu Stopp
sjmp laden ; Es wird zu Laden gesprungen
end ; Ende des Programms
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 knnen einer bestimmten Adresse verschiedene Sachen zugeordnet werden z.B. Wert, Daten oder eine andere Adresse.
Auf diese Weise lsst sich auch die Ausgabe auf die LPT Schnittstelle und Parallele Schnittstelle realisieren.
In dem Programm 8051Win knnen wir dem Port eine Schnittstelle zuweisen, bei dem Programm ist es LPT1.
Ausgabe als Leuchtbalken.
Aufgabe: Nun sollen die Zahlen nicht als ein binrer Wert von 0001 bis 0101 einfach ausgegeben werden. Es soll ein Decoder Programmiert werden, welcher die Aufgabe hat: Die Anzahl der LED, die leuchten, ist gleich der Zahl.
Erklrung:
Codierungstabelle fr diese Aufgabe steht unten.
Die Binrzahl entspricht der daneben steh