> Leider fehlt mir jeglicher Ansatz zur Realisierung des Projekts.
Das ist schlecht.
Vor allem deswegen, weil in der Aufgabenstellung schon fast 70%
des Programmaufbaus beschrieben ist
> Ein Zähler soll von 1-6 (Würfelzahlen) zyklisch zählen.
> Wenn die "blaue" Taste (P3.3) gedrückt wird soll der momentane
> Zählerstand am Port 2 (Adresse A0h) ausgegeben werden.
Ich denke wir können mal von einem Stadardaufbau ausgehen:
Soll heissen: Nach der Initialisierung betritt das Programm
die Hauptschleife und arbeitet dieselbe Befehlssequenz immer
und immer wieder ab.
Mit diesem Ansatz kann man schon mal nicht so falsch liegen.
+-----------------+
| Initialisierung |
+-----------------+
|
v
+---------------+
| |<------+
+---------------+ |
| |
+---------------+
Da ist also von einem Zähler die Rede. Na das wird wohl
eine Variable werden, und da wir uns in Assembler bewegen
und absehbar ist, dass für die Aufgab nicht viele Register
benötigt werden, merken wir uns gleich mal, dass der Zähler
in einem Register residieren wird.
Schön und gut.
Was soll der Zähler machen?
> Ein Zähler soll von 1-6 (Würfelzahlen) zyklisch zählen.
Aha. Er soll also von 1 beginnend immer um 1 hochzählen
und wenn er 6 erricht hat, wieder bei 1 beginnen.
Na das ist doch nicht schwer einzuarbeiten
+-----------------+
| Initialisierung |
| |
| Zähler = 1 |
+-----------------+
|
v
+---------------------+
| Zähler = Zähler + 1 |<-----+
+---------------------+ |
| |
v |
/-------------\ Nein |
/ Zähler = 7 ? \-----------+
\ / |
\-------------/ |
| |
v |
+---------------+ |
| Zähler = 1 | |
+---------------+ |
| |
+--------------------+
Überzeuge dich davon, dass dies tatsächlich die Vorgabe
> Ein Zähler soll von 1-6 (Würfelzahlen) zyklisch zählen.
erfüllt. Notfalls fährst du einfach mit dem Finger die
Verbindungen ab und führst die Aktionen aus. Im Kopf kannst
du dabei das Register 'Zähler' mitführen.
> Wenn die "blaue" Taste (P3.3) gedrückt wird soll der momentane
> Zählerstand am Port 2 (Adresse A0h) ausgegeben werden.
Aha. Da ist also von einer Taste die Rede.
Nun die Taste wird ja vom Programm nicht einfach so erkannt.
Da muss doch sicherlich irgendetwas initialisiert werden.
Auch sollte man festhalten, dass im Text von 'gedrückt wird'
und nicht von 'gedrückt ist' die Rede ist. Das bedeutet, der
Zählerstand wird nur dann ausgegeben, wenn die Taste vom Zustand
'nicht gedrückt' in den Zustand 'gedrückt' übergeht. Macht auch
Sinn, denn wenn der Zählerstand jedesmal ausgegeben werden würde,
wenn die Taste gedrückt ist, dann würden da so schnell Zahlen
durchlaufen, dass man nichts mehr sehen würde.
Das heist aber auch, dass das Prgramm über den Zustand der Taste
Buch führen muss: Nur dann wenn die Taste jetzt gedrückt ist
und im Schleifendurchlauf vorher war sie noch nicht gedrückt,
dann ist offensichtlich in der Zwischenzeit die Taste gedrückt
worden und die Ausgabe soll erfolgen.
Also so in etwa
+-------------------------+
| Initialisierung |
| |
| Zähler = 1 |
| TasteVorher = nicht g. |
+-------------------------+
|
|<----------------------------------------------+
v |
/----------------\ Ja |
/ Taste gedrückt ? \---------+ |
\ / | |
\----------------/ v |
Nein | Ja /------------------------\ |
| +------/ TasteVorher = gedrückt ? \ |
| | \ / |
| | \------------------------/ |
| | | |
| | v |
| | +------------------------+ |
| | | Zähler ausgben | |
v | | TasteVorher = gedrückt | |
+-------------------+ | +------------------------+ |
| TasteVorher=n. g. | | | |
+-------------------+ | | |
| | | |
| +--+ +----------+ |
| | | |
v v v |
+---------------------+ |
| Zähler = Zähler + 1 | |
+---------------------+ |
| |
v |
/-------------\ Nein |
/ Zähler = 7 ? \--------------------------------------+
\ / |
\-------------/ |
| |
v |
+---------------+ |
| Zähler = 1 | |
+---------------+ |
| |
+-----------------------------------------------+
Jetzt verlangt aber deine Aufgabenstellung, dass die Taste entprellt
werden muss. Zum Entprellen gibt es meherer Methoden. Da ich
aber nicht wissen kann, welche ihr gelernt habt, musst du hier
selbst Hand anlegen und das gegebenenfalls modifizieren.
War doch bisher nicht schwer, oder?
Und so gehst du deine Aufgabenstellung durch und arbeitest mal
alles ein was du aus der Aufgabenstellung entnehmen kannst.
Und für den Rest: sei erfinderisch. Wie könnte man das wohl
hinkriegen, das jede 2.te Ausgabe eine 6 sein soll. Na da
wird man wohl mitzählen müssen! Ein 2ter Zähler der immer
0, 1, 0, 1, 0, 1, 0, 1 ... zählt. Steht der Zähler auf 0
dann gibst du das Ergebnis vom echten 'Würfelzähler' aus.
Steht er auf 1, dann gibst du immer eine 6 aus.