Программирование микроконтроллера на ассемблере. Симуляция игральной кости

Реферат - Компьютеры, программирование

Другие рефераты по предмету Компьютеры, программирование

 

 

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