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

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

 

 

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

e) Vollständige Dokumentation mit Programmablaufplänen, Code,

Erklärungen, Snapshots

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,

Erklärungen, Snapshots

4. 8051Win-Simulation

a) Siebensegmentmodell / Indirekte Adressierung @DPTR im 16 bit-

Adressraum / Define Byte (DB)

b) Übersicht aller Adressierungsarten.

c) Vollständige Dokumentation mit Programmablaufplänen, Code,

Erklärungen, Snapshots

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,

Erklärungen, Snapshots

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

 
Programmablaufpläne

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)

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 erhöht

    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 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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.