|
a) Würfelmodell mit integriertem Decoder
Erklärung
Da der Würfel einen integrierten Decoder besitzt, kann der Zähler aus der Aufgabe 1 benutzt werden. Dieser Zähler gibt die Zahlen an P2 aus. Der Decoder wandelt die Zahlen in entsprechend andere Zahlen, damit die Würfelaugen richtig leuchten.
Assemblercode
Code at 0000h
P1 equ 90h ; Start/Stopp Schalter
P2 equ 0A0h ; Ausgabe erfolgt an der Adresse 0A0h
laden: mov R1, #01h ; Wert #01h wird ins Register R1 geladen
stopp:
JB P1.0, stopp ; Bei geschaltetem Schalter (gesetztem
; Bit) wird es zu Stopp gesprungen.
mov
P2,
R1 ; Hier erfolgt die Ausgabe an Adresse 0A0h,
; d. h. an P2.
inc R1 ; Registerinhalt wird um eins erhöht.
cjne R1, #07h, stopp ; Wenn Registerinhalt ungleich #07h ist,
; dann verzweigt das Programm zu Stopp
sjmp laden ; Es wird zu Laden gesprungen
End
Programmablaufplan
|
b) Würfelmodell ohne Decoder mit indirekter Adressierung
Erklärung
Bei dieser Aufgabe besitzt der Würfel keinen integrierten Decoder, die Würfelaugen müssen trotzdem richtig leuchten. Das heißt, dass bei einer Zwei auch die richtigen zwei Würfelaugen leuchten müssen (s. Bild 18). Die folgende Codierungstabelle enthält die Hexzahlen, die für jeden Ausgabewert (1 bis 6) die richtigen Würfelaugen zum Leuchten bringen.
Ausgabewert |
Hexzahl |
Eins |
08h |
Zwei |
41h |
Drei |
49h |
Vier |
55h |
Fünf |
5D4 |
Sechs |
77h |
Diese Hexzahlen werden gemäß der Aufgabestellung im Adressbereich 31h…36h abgespeichert. Der Zähler geht dann diesen Adressbereich immer wieder durch. Durch die indirekte Adressierung werden diese Hexzahlen nacheinander ausgegeben.
Assemblercode
Code at 0000h
P1 equ 90h ; Schalter
P2 equ 0A0h ; Ausgabe
; Decoder:
; es werden bestimmte Werte in dem
; Adressbereich 31h bis 36h
; abgespeichert
;------------------------
mov 31h, #08h
mov 32h, #41h
mov 33h, #49h
mov 34h, #55h
mov 35h, #5Dh
mov 36h, #77h
;------------------------
laden: mov R1, #31h ; im R1 wird der Wert
; 31h abgespeichert
mov A, @R1 ; in A steht jetzt der
; Wert 08h (indirekte
; Andressierung)
mov P2, A ; Akkuinhalt wird
; ausgegeben
stopp: JB P1.0, stopp ; Stopp/Start-Schalter
count:
inc R1 ; erhohe R1
mov A, @R1 ; in A wird der Wert der
; Adresse, welche in R1
; steht, abgespeichert.
mov P2, A ; Ausgabe des Akkuinhalts
cjne A, #77h, stopp ; Verzweigen zum Stopp bei
; Ungleichheit.
sjmp laden ; Sprung zum Laden
END
Programmablaufplan
|
Aufgabe 4. 8051Win-Simulation der 7-Segment-Anzeige
При использовании материалов активная ссылка на источник обязательна.