dino03 schrieb:
Hi,
mohi schrieb:
Ja der Groschen ist zwar gefallen aber noch nicht so richtig...
Nach dem was du aber sagst, scheine ich ja schonmal auf dem richtigen Weg zu sein, juhuuu
er klemmt noch ein wenig
Aber frag nicht wie!
Sehr cool von dir, das du das wenigstens mit Humor siehst!
Hättest mich ja auch fertig machen können, wie es in unzähligen anderen Foren üblich ist...
Aber wie heißt es so schön:
Humor und Geduld sind zwei Kamele, mit denen du durch jede Wüste kommst...
Vielen Dank Dino, ganz ehrlich, ich weiß deine Geduld mit mir zu schätzen!!
dino03 schrieb:
mohi schrieb:
mohi Beitrag anzeigen
Ok, die Subroutine für den Plustaster lautet bei mir: Debounce Taster_p , 0 , Zeit_plus , Sub, also Zeit_plus und mit Taster_p rufe ich die Subroutine Zeit_plus ab.
Also wenn ich auf Taster_p drücke, dann geht er runter zu dem Abschnitt:
und dazwischen muss ich dann reinschreiben:
Code:
Zeit_plus:
Select Case Zeit_pos
Case 0
If Taster_p = 1 Then
Incr Zeit_pos
End If
End Select
Return
warum machst du das ?
Ich mache das, damit wenn ich auf
Taster_p (also für Plus) drücke, die Routine
Zeit_plus abgerufen wird.
Und in der Routine
Zeit_plus steht, das wenn ich auf
Taster_p drücke (also = 1), der Inhalt von
Zeit_pos um eins erhöht werden soll...
Das passt ja offensichtlich nicht
Aber komm gib's zu, es klingt schon logisch, oder?
dino03 schrieb:
Also deine Routine für die zu stellende Position paßt ja und funktioniert auch
- Du drückst auf Taster_s (Pind.5) und rufst damit die Subroutine Zeit_stelle auf
- In der Subroutine wird bei jedem Aufruf (Tastendruck) die zu stellende Position um eins weitergerückt.
- Die Routine liefert dir in Zeit_pos die Position die du ändern möchtest.
Deine Routine Zeit_plus soll die Zeit/Datum verändern. Warum veränderst du dann nicht die Zeit/Datum ?
- Du drückst auf Taster_p (Pind.6) und rufst damit die Subroutine Zeit_plus auf (OK)
(du willst dem Atmel mit dem Tastendruck sagen : mach mal zu den Minuten, Stunden, ... ein dazu)
- Die zu stellende Position wird durch die Variable Zeit_pos geliefert. (OK)
- Wenn die Routine aufgerufen wird dann muß ja der Taster gedrückt worden sein. Warum nochmal prüfen ?
- In der Subroutine wird bei jedem Aufruf (Tastendruck) die entsprechende Stelle der Zeit/Datum +1 gemacht. Warum änderst du die nicht ?
- Die entsprechende Stelle prüfen ob da nicht auf einmal 61 Minuten oder 25 Stunden drinstehen (Überlauf bearbeiten)
Denk das fette nochmal durch und dann aber los ...
Wenn ich noch mehr Tips gebe dann muß ich dir fertigen Code liefern
Zwischenschritte gibts da eigentlich nicht mehr. Das ist jetzt der Wink mit dem Balken
Gruß
Dino
Bitte denke nicht, das ich will, das du den Code komplett für mich schreibst!
Du sagst ja selber, das es nur ein paar Zeilen noch sind! Und sooo faul bin ich auch nun wieder nicht ein paar Zeilen zu tippen, aber ich hab da echt ne lange Leitung.
Edison hat ma gesagt: Jedes gelöste Problem ist einfach.
Ich bin mir sicher, wenn ich den Code fertig habe, das ich mich in Grund und Boden schämen würde, weils halt doch super einfach ist, so wie du es gesagt hast
Ok, kommen wir nochmal aufs wesentliche zurück:
Mit der Routine
Zeit_stelle, schiebe ich doch jede Stelle (je nach Tastendruck von PD.5) in die Variable
Zeit_pos, richtig?
Das bedeutet, jedesmal, wenn ich auf
Taster_s drücke, wird der Inhalt der Variable um einen Case verschoben, nämlich um die Case's die in der Routine
Zeit_stelle: hinterlegt sind.
Also muss ich doch schreiben,
If Taster_p = 1 Then Incr Zeit_pos, dass muß so einfach funktionieren! Es muß...
Ich muß also die Routine
Zeit_plus: folgendes schreiben:
Code:
Zeit_plus: ' Wenn ich auf Taster_p jumpt er zu der "Zeit_stelle:"-Routine
Select Case Zeit_pos ' Hier wird die Variable ins Case geschoben
Case 3 ' Case 3 da wurde durch das 3malige drücken auf Taster_s die Variable Zeit_pos
If Taster_p = 1 Then ' Hier wird der Wert der gerade in Zeit_pos drinne ist um eins increased, also erhöht
Incr Zeit_pos ' Bei Minus nehme ich glas klar Decr
End if
End select
Return
Du schreibst: - Wenn die Routine aufgerufen wird dann muß ja der Taster gedrückt worden sein.
Warum nochmal prüfen ?
Wo überprüfe ich den was? Ich überprüfe doch nix, zumindest nicht bewusst...
Den Überlauf zu programmieren, ist das kleiner Problem bei mir, habe ich es erst mal geschafft mit Taster_p den Jeweiligen Wert zu ändern, dann schaff ich den überlauf auch ganz alleine (mein Wort in Gottes Ohr
)
Nochmal ne doofe Frage: Was macht
Menu_homecnt eigentlich? Du hast den Wert auf 10 gesetzt... Auto-Home alle 10 Sekunden, was bedeutet das?
Schade, das es in der Volkshochschule keinen Bascom-Kurs gibt!
Programmierung nur durch lesen zu erlernen ist wesentlich schwieriger, als zwischendurch auch mal darüber zu reden...