dann setz die Beep-Befehlsfolge vor die Do-Loop-Schleife, dann hat sich das schonmal.
Goto Main2 und Main2 kannst du dir im übrigen sparen, das brauchst du nicht. (da springst du ja eh über nix drüber)
Hast du nen externen Pullup-Widerstand am Taster? Und geht der Taster nach GND?
vlt geht das:
Code:
$regfile = "m16def.dat"
$crystal = 16000000
Config Porta.0 = Output
Config Portd.7 = Output
Config Pina.2 = Input
Porta.2 = 1 ' (edit:) !!!Weil du da keine externen pullups hast!!!!!
Dim Zeit As Byte
Dim Main1 As Long
Dim Main3 As Long
Portd.7 = 1
Waitms 300
Portd.7 = 0
Waitms 300
Portd.7 = 1
Waitms 300
Portd.7 = 0
Main1:
Zeit = 0
Porta.0 = 1
If Pina.2 = 0 Then
Porta.0 = 0
Goto Main3
Else
Goto Main1
End If
Main3:
While Pina.2=0 'es muss ja solange sein, bis der Taster wieder geschlossen wird
Zeit = Zeit + 1
If Zeit = 10 Then
Porta.0 = 1
Portd.7 = 1
End If
If Zeit = 15 Then
Porta.0 = 1
Portd.7 = 1
Zeit = 0 ' so würde die lampe nach 30 Sekunden und nach 45 sekunden für je 3 sec angehen, der Beeper auch
End If
Waitms 3000 'weil sonst deine "Zeit" nicht wartet zwischen dem Zählen
Porta.0 = 0 'wenn die eh aus sind, dann juckts keinen, wenn nicht, dann passts
Portd.7 = 0 'weil dann eine der If-Schleifen dran war, und du das nicht in der If-Schleife brauchst.
Wend
Goto Main1
EDIT: gnaah, ich überseh immer wieder kleine fehler im prog.
Lesezeichen