Hi,
wie genau soll die Zeit den sein?
Hier mal ein Beispiel
Timer 1 läuft und zählt sekunden hoch, diese zählen minuten hoch bis Taster 1 gedrückt wird oder 60 Minuten gezählt sind.Code:$regfile = "M168Pdef.dat" 'es handelt sich um einen ATmega168P $crystal = 3686400 'der eingebauter RC-Oszillator läuft mit 3,6864 Mhz $hwstack = 100 'im Speicher werden für den Hardware-Stack 100 Byte reserviert $swstack = 100 'im Speicher werden für den Software-Stack 100 Byte reserviert $framesize = 100 'im Speicher werden für den Frame 100 Byte reserviert $baud = 19200 S1 Alias Pind.2 'Schalter 1 an Port D2 (Taster) Config S1 = Input ' als eingang festlegen Pind.2 = 1 'Pullup einschalten 'Timer einstellen 'Frequenz-Teiler 1,8,64,256 or 1024 Config Timer1 = Timer , Prescale = 1024 '3686400 / 1024 = 3600 impulse/sek 'Variable festlegen Dim Sekunde As Byte , Minute As Byte Sekunde = 0 Minute = 0 'Unterprogramme Declarieren Declare Sub Prog1 'Unterprog. 1 Declare Sub Prog2 'Unterprog. 2 Do If S1 = 0 Then 'Wenn S1 gedrückt Call Prog1 'und Unterprog. 1 Starten End If If Timer1 >= 3600 Then Incr Sekunde 'Sekunden werden gezählt bis 60 Print "Sekunden: " ; Sekunde Timer1 = 0 End If If Sekunde >= 60 Then Incr Minute Print "Minuten: " ; Minute 'Minuten Zähler, Sekunden auf 0 setzen Sekunde = 0 End If If Minute >= 60 Then 'Bei 60 Minuten, Unterprog 2 starten und Minuten auf = setzen Minute = 0 Call Prog2 End If Loop End Sub Prog1 'Unterprog. 1 Bitwait S1 , Set 'warten bis Taster S1 losgelassen wird Print Print "Taster S1 wurde gedrueckt" Print Sekunde = 0 'Zeit auf 0 setzen Minute = 0 End Sub Sub Prog2 'Unterprog. 2 Print Print "Prog2 gestartet" Print Sekunde = 0 'Zeit auf 0 setzen Minute = 0 End Sub
Bei Taster startet Prog1 und Zeit wird wieder auf 0 gestellt
Bei 60 min startet Prog2 und Zeit wird wieder auf 0 gestellt
ACHTUNG: Quarz richtig einstellen!!! und Timer anpassen falls andere Quarz verwendet wird







Zitieren

Lesezeichen