Also ... Du brauchst eine Zeit, 5Minuten = 300 Sekunden.
Dann haste noch nen Taster, soweit klar.
Beim Tasterdruck soll etwas ausgelöst werden, nämlich
Deine Zeitmessung. Wenn die Zeitmessung auch nach dem
Tastendruck weiter laufen soll muss sich die Kiste merken, das die
Taste gedrückt war, soweit klaro denk ich. Du brauchst also ein
sog. Flag, ein Zeichen das gesetzt wird, Jawoll, die Taste war gedrückt.
Ich verwende dafür gerne ne Variable namens Flag um das
zu erhalten. Die andere Variante ist, Du merkst Dir den Start in dem zu messenden Wert selbst, weil dieser den Endpunkt einfach noch nicht erreicht hat![]()
Man kann im Übrigen mit nem Uhrenquarz und nem Mega auch ganz einfach ne Uhr generieren ... aber schön, das du's noch zum lernen zufuß machst.Code:$regfile = "m8def.dat" $crystal = 1000000 $baud = 9600 Config Timer0 = Timer , Prescale = 64 Start Timer0 Enable Timer0 Enable Interrupts On Timer0 Timer0_isr Config Portb.0 = Output Config Portb.0 = Output Config Pinc.0 = Input Config Portb.1 = Output Config Portb.4 = Output Config Pinc.2 = Input Portc.0 = 1 Portc.2 = 1 Dim Intzaehler As Byte Dim Zehntelsek As Byte Dim Sekunde As Byte Dim Minute As Byte dim sec_counter as word ausgang alias Portb.1 taste alias Pinc.2 Led3 Alias Portb.4 Do Loop Timer0_isr: Tcnt0 = 194 incr Intzaehler If Intzaehler > 25 Then Zehntelsek = Zehntelsek + 1 If Zehntelsek < 5 Then Led3 = 1 Else Led3 = 0 End If If Zehntelsek > 9 Then Zehntelsek = 0 End If If Zehntelsek > 9 Then Zehntelsek = 0 Sekunde = Sekunde + 1 gosub tastenabfrage End If If Sekunde > 59 Then Sekunde = 0 Minute = Minute + 1 End If If Minute > 4 Then Minute = 0 End If Intzaehler = 1 End If Return End tastenabfrage: if taste = 1 then sec_counter=0 endif if sec_counter < 301 then ' 300 Sekunden nicht erreicht incr sec_counter Ausgang=1 ' Tu halt irgendwas else Ausgang=0 ' Schalts wieder ab endif return end
Man kann auch den Timer langsamer laufen lassen über den Prescale, also den Vorteiler und mit dem 16-Bit Timer1 lassen sich auch direkt Sekundentakte erzeugen.








Zitieren

Lesezeichen