Программирование микроконтроллера на ассемблере. Симуляция игральной кости
Реферат - Компьютеры, программирование
Другие рефераты по предмету Компьютеры, программирование
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
- Im Unterricht angeeignetes Wissen
- CD von Herrn A. Hein mit Programmen und Erklrungen
- Wikipedia (www.wikipedia.org)
- Modul-Hardware
( - Uthishdran Sreeranganathan stellte mir das Foto der BB-Mikrocontrollerplatine zur Verfgung
Anlage: CD