Fuer den weiteren Aufbau des Programm und mit Hinsicht auf Kapselung habe ich nun Nachfolgendes:
Modul Menuesteuerung:
Das Menue wird aufgerufen durch das gleichzeitige Druecken der Tasten T0 und T7 fuer 3sec(Menue-Abfrage).
1 - nach dem Aufruf des "Menue-Auswahl" bleibt dies ohne weiteren Eingriff(Tastendruck)
5sec aktiv und beendet sich nach abgelaufender Zeit mit dem Ruecksprung zu MainSchleife.
2 - wird waehrend des Aufrufs von "Menue-Auswahl"ein Taste gedrueckt,
so schreibt der Inhalt von R18 in R15 geschoben
T0 := Bit0.... T7 :=Bit7 von rTastMenue und bendet "Menue-Steuerung" mit dem Ruecksprung zu Main-Schleife.
3 - Register r18 enthaelt die gedrueckten Tasten(High-Flanken)
-> r18 wird fuer die "Menuesteuerung" eingelesen und verarbeitet.
4 - fuer die Ausarbeitung und Erstellung des Testprogramms wird folgendes festgelegt:
Der Zeitgeber wird durch ein RegisterZaehler simuliert.
Code:
.equ MenueInTime = 3
.equ MenueTimeOut = 5
def r15 = rTastMenue ; wird default mit 0x01 geladen
def r20 = rMenueTC ; (MenueTimer-Counter)
F U N K T I O N:
Menue-Abfrage:
r18 wird in einer Schleife mit 0x81 (0b1000 0001) verglichen.
bei Uebereinstimmung incrementiert rMenueTC.
rMenueTC wird mit MenueInTime verglichen.
bei Uebereinstimmung wird das Untermenue "Menue-Auswahl" aufgerufen
und rMenueTC wird mit MenueTimeOut geladen.
Menue-Auswahl:
Menue-Auswahl durchlaeuft eine Schleife, in der rMenueTC decrementiert.
Bei "tst rMenueTC" wird rTastMenue mit 0x01 geldaen und die Funktion mit dem Ruecksprung in Main beendet.
oder die naechste erkannte Taste in R18 wird in R15 verschoben und das Menue-Auswahl damit beendet.
Innerhalb von Menue-Auswahl sollen die LEDs zur Signalisierung blinken.
Dazu wird rTastMenue geloescht := 0x00.
rTastMenue wird mit der naechsten in der Main-Schleife befindlichen Prozedur "SWITCH_OUT_PORT" bislang "SWITCH_LED" verarbeitet.
rTastMenue := 0x00 liefert das Blinken aller LEDs
Lesezeichen