Liste der Anhänge anzeigen (Anzahl: 2)
Guten Morgen mare_crisium,
habe nun endlich den Code so weit, dass ich ihn posten kann.
Aenderungen:
Ohne Tastenflanke - kein kompletter Durchlauf bis zur Totmannzeit
Einzeltastenabfrage zur Erkennung, ob nur eine Taste zur Auswahl ansteht.
Nach Tastenerkennung in CHKTASTEN ist jetzt eine Programmunterbrechnung eingebaut, die auf Anfangsbedingungen setzt.
Ergebnisaufnahme in Datensegment zur weiteren Verarbeitung abgelegt.
Menuesignalisierung eingepflegt-tut aber noch nichts.
Wenn ich mir das Programm so anschaue, bin ich nicht 100ig zufrieden damit.
Es gibt noch viel Optimierungspotential... :-(
Liste der Anhänge anzeigen (Anzahl: 2)
robo_wolf,
so, hier sind meine Kommentare zu Deinem Programm. Mein Eindruck ist, dass Du ruhig die Zustandstabelle ändern solltest ;-) . Ich hab' Dir ein paar Vorschläge dazu in den Quelltext geschrieben.
Ciao,
mare_crisium
Liste der Anhänge anzeigen (Anzahl: 3)
Guten Abend, robo_wolf,
hier habe ich eine neue Version _04j, die aus _04i abgeleitet ist. Sie hat jetzt ein neues Modul "STACK8_V01.asm", das Software-Stacks bereitstellt. Man kann in seinem Hauptprogramm mehrere davon einbauen.
In _04j dient der "MENUSTACK" dazu, die Nummern der betätigten Menutasten zwischenzuspeichern. Die Gründe dafür sind folgende:
Man kann die Verarbeitung der Menutasten in die MAIN-Schleife verlagern und braucht nicht alles während des Timer-Interrupts zu erledigen. Ausserdem kommt es oft vor, dass jemand die Menutasten so schnell hintereinander betätigt, dass die erste noch nicht abgearbeitet ist, wenn die zweite gedrückt wird. Ohne Zwischenspeicherung ginge die zweite verloren. Noch ein anderer Grund ist, dass auf diese Weise die Verarbeitung der Menutasten von der Menusteuerung abgekoppelt wird. Das Modul "MENU8STRG_Vxx" braucht nichts über die Funktionen zu wissen, die die Tasten auslösen. Das Modul bleibt dadurch universell verwendbar ;-) .
Ciao,
mare_crisium
Liste der Anhänge anzeigen (Anzahl: 4)
robo_wolf,
nach der ganzen Testerei wird's mal wieder Zeit, das eigentliche Ziel ins Auge zu fassen :-). Deshalb habe ich hier eine Version (LernPrgrm_04k) angehängt, die eigentlich alles können sollte: Tasten entprellen, die Menuaktivierung steuern und die angewählten Menupunkte ausführen.
Dazu habe ich den Timer2-Interrupt wieder aktiviert. Die Zeitkonstante habe ich von Dir übernommen (0,1s). Die Zeitintervalle für die Menuaktivierung habe ich provisorisch auf
T0 = 0,1s, T1 = 3s und T2 (Totmannzeit) = 5,1s eingestellt.
Wenn wir beim Austesten alle Fehler bemerkt und beseitigt haben ;-) müsste das Ding funktionieren... Probier's doch mal!
Ciao,
mare_crisium
Liste der Anhänge anzeigen (Anzahl: 1)
robo_wolf,
nur zu mit Fragen :-) !
Für die nächste Aufgabe, die FIFO, habe ich etwas zusammengeschrieben, das - wie ich hoffe - Dir den Einstieg erleichtert ;-) .
Ciao,
mare_crisium
Liste der Anhänge anzeigen (Anzahl: 2)
Guten Abend mare_crisium,
lang hat es gedauert... aber nun habe ich einen Stand des FIFO-Moduls erreicht, den ich Dir vorstellen moechte.
Ich hoffe die Kommentare sind ausreichend und verstaendlich geschrieben.
Auf Deine Kommentare bin ich schon sehr gespannt 8-[
Liste der Anhänge anzeigen (Anzahl: 1)
robo_wolf,
chapeau! Das ist Dir gut gelungen :-) . Meine Kommentare sind alle im Quelltext des Moduls. Weil ich im Hauptprogramm nichts geändert habe, hänge ich es hier nicht an.
Wie Du sehen wirst, habe ich zwei Prozeduren vergessen, die man beim Verwenden von FIFOs häufig braucht. Die müsstest Du noch nachrüsten; ist aber einfach. Danach reden wir 'mal über das Protokoll, das wir für die Unterhaltung zwischen den RS232s verwenden wollen.
Hast Du auf der PC-Seite ein Programm, das die RS232 bedienen kann? Ich habe mir eins mit Delphi geschrieben, das die "Serial"-Komponente aus dem (sehr empfehlenswerten) Heft "Toolbox" verwendet.
Ciao,
mare_crisium
Liste der Anhänge anzeigen (Anzahl: 2)
Guten Feiertags-Vorabend, robo_wolf ;-) !
Deine Frage beantwortet sich am Besten anhand des Quellprogramms. Ich habe Dein Modul so umgebaut, dass es so läuft, wie ich mir das vorgestellt habe. War'n noch ein paar fette Fehler drin ;-) . Die in FIFO8_CREATE und FIFO8_WRITE habe ich beseitigt; FIFO8_READ überlasse ich Dir :-) !
Ciao,
mare_crisium