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

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

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

3 ein

loop3: mov R2, #100 ; Unterschleife; ldt 100 in R2 ein

loop2: mov R1, #100 ; Unterschleife; ldt 100 in R2 ein

loop1: djnz R1, loop1 ; bedingter Sprung zurck

djnz R2, loop2 ; bedingter Sprung zurck

djnz R3, loop3 ; bedingter Sprung zurck

RET ; Das Programm wird an der Stelle
; fortgesetzt, an der das Unter-
; programm aufgerufen wurde, also
; nach der lcall uptime

END

Programmablaufplan.

 

Aufgabe 6. Langsam auslaufender/nachlaufender Zhler

 

Erklrung.

 

Die Aufgabe 6 ist eine Erweiterung der Aufgaben 4 und 5. Jetzt brauchen wir, dass der Zhler mit einer Beschleunigung oder verzgerung zhlt.

Die Programmierung wurde erfolgreich whrend des Unterrichts durchgefhrt. Die Simulation mit dem Programm 8051Win ist wegen der Zeitpause nicht sinnvoll.

 

 

 

Assemblercode

 

Code at 0000h

 

P1 equ 90h

P2 equ 0A0h

P3 equ 0B0h

 

clr P3.6 ; eine 7-Segment-Anzeige abschalten

mov 0F9h, #1 ; eins in die Speicherzelle 0F9h laden

init: mov DPTR, #Daten ; s. Bemerkungen zu Nr. 4 und 5

 

start: clr A

movC A, @A+DPTR

CJNE A, #0FFh, weiter

sjmp init

weiter: mov P2, A

 

stopp: JB P1.0, beschleunigen ; wenn P1.0-Schalter auf 1 steht,

;beschleunigen

 

langsamer: ;

mov R4, 0F9h ; der Inhalt der Speicherzelle 0F9h ins

;R4 laden

cjne R4, #7, verzoegern ; vergleichen mit #7.

;Bei Ungleichheit zum Verzoegern (also

;einfach weiter) gehen

sjmp stopp ; Bei Gleichheit zum Stopp gehen

verzoegern:

inc R4 ; durch Erhoehung von R4 macht man die

; Pause laenger

mov 0F9h, R4 ; Inhalt von R4 ins R3 ueber

mov R3, 0F9h ; eine Speicherzelle laden

 

sjmp vor ; Zur Pause springen

beschleunigen:

mov R3, #1

mov R4, 0F9h

cjne R4, #1, go ; wenn noch keine 1, beschleunigen

; durch go

sjmp vor

go:

dec R4 ; durch Verkleinerung von R4 macht man

; ; die Pause kuerzer

 

mov 0F9h, R4 ; Inhalt von R4 ins R3 ueber

mov R3, 0F9h ; eine Speicherzelle laden

vor:

LCALL uptime ; Pause ausfhren

INC DPTR ; naechstes Datum nehmen.

sjmp start

Daten: DB 12h, 0BCh, 0B6h, 0D2h, 0E6h, 0EEh, 0FFh;

 

ORG 0C0h

uptime:

loop3: mov R2, #200

loop2: mov R1, #250

loopl: djnz R1, loopl

djnz R2, loop2

djnz R3, loop3

RET

END

Programmablaufplan

 

Beschreibung der benutzten Befehle

 

Code at Adresse

Legt fest, ab welcher Adresse der Programmcode gespeichert wird. Bei uns ist es immer ab Anfang.

end

Ein Assembler-Programm wird mit dem Befehl End beendet.

DJNZ (Decrement Jump if Not Zero; dekrementiere, springe, wenn nicht Null)

DJNZ Adresse, rel

oder

DJNZ Rn, rel

Der Befehl vermindert Adresseinhalt (Adresse) bzw. Registerinhalt (Rn) um eins und verzweigt zu rel, wenn das Ergebnis ungleich Null ist.

 

CJNE Befehl (Compare Jump if Not Equal)

CJNE Adresse, #data, reloderCJNE Adresse, Adresse, rel

Vergleicht Adresse mit #data / Adresse und verzweigt nach rel wenn es ungleich ist.

JB (Jump Bit)

JB bit, rel

Springt zu rel beim gesetzten Bit (bit)

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.

SJMP (Short Jump)

SJMP Programmpunkt

Relativer Programmsprung im Bereich -128 bis 127 zur nachfolgenden Befehlsadresse.

LCALL

Mit diesem Befehl wird ein Unterprogramm aufgerufen (LCALL Unterprogrammname)

RET

Der Befehl lsst das Programm an die Stelle zurckspringen, an der er aufgerufen wurde und das Programm luft dort weiter.

INC und DEC

Mit den Befehlen wird der Wert um 1 erhht bzw. verkleinert.

ORG

Der Befehl legt fest die Stelle, an der der nachfolgende Quellcode abgelegt wird. Er ist mit dem Befehl „Code at Adresse“ vergleichbar (ORG Adresse). Der Wert liegt zwischen 00h und FFh.

Quellenangabe

 

  1. Im Unterricht angeeignetes Wissen
  2. CD von Herrn A. Hein mit Programmen und Erklrungen
  3. Wikipedia (www.wikipedia.org)
  4. Modul-Hardware
    (
  5. Uthishdran Sreeranganathan stellte mir das Foto der BB-Mikrocontrollerplatine zur Verfgung

 

 

Anlage: CD