Nur mit dem hochzählen möchte es noch nicht so ganz.
Edit: quark, bin etwas daneben.
du arbeitest ja erst Main1 ab, dann kommt Main2 und dann Main3. dann immer abwechselnd Main2 und Main3. in Main3 incrementierst du Zeit (Zeit+1) nach 100ms, dann kommt wieder Main2 und wieder Main3.
da wird nirgends mit nem "IF Zeit = 5 Then Zeit =0" Zeit zurückgesetzt.
auserdem ist Zeit nirgends ein Wert zugewiesen. du solltest in Main1 "Zeit=0" schreiben.
Die meisten Do-Loops kannst du dir auch spaaren, da das Programm da nie hinkommt (davor wird mit Goto gesprungen)
Code:
$regfile = "m16def.dat"
$crystal = 16000000
Config Porta.0 = Output
Config Portd.7 = Output
Config Pina.2 = Input
Dim Zeit As Byte
Dim A As Byte
Dim Main2 As Long
Dim Main1 As Long
Dim Main3 As Long
Main1:
Zeit=0
Portd.7 = 1
Waitms 300
Portd.7 = 0
Waitms 300
Portd.7 = 1
Waitms 300
Portd.7 = 0
Goto Main2
Main2:
Do
If Pina.2 = 0 Then
Goto Main3
Else
Zeit=0
End if
Loop
Main3:
Do
Waitms 100
Zeit = Zeit + 1
If Zeit = 5 Then
Porta.0 = 1
Waitms 3000
Porta.0 = 0
End If
Waitms 3000
Goto Main2
Lesezeichen