Hi,
wie genau soll die Zeit den sein?
Hier mal ein Beispiel
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
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.
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
Lesezeichen