So jetzt hat es den Effekt, das es nur 3 mal piept, dann die Lampe aufleuchtet. Wenn ich den Taster drücke passiert wieder nichts.
DOCH, wie willst du denn dann den anderen Zustand hinbekommen (1)????Deswegen müssen die Internen pull ups ja nicht an.
ich hab den code editiert, probiers doch nochmal.
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
So jetzt hat es den Effekt, das es nur 3 mal piept, dann die Lampe aufleuchtet. Wenn ich den Taster drücke passiert wieder nichts.
hast du den ' vor PORTA.2=1 weggemacht?
ich hab ihn mittlerweile wegeditiert
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
Also so funktioniert das alles mal garnicht.
Den Pullupwiederstand hab ich erstmal wieder rausgenommen, denn das brachte garnichts.
Ich hab einfach mal den Taster mit dem Minimalcode:
Do
If PINA.2 = 0 Then
PORTA.0 = 1
End if
Loop
angesteuert. Das klappt so alles super. Taster wird gedrückt, lampe leuchtet.
??? ohne pullup???
ok, vlt liegts an den goto- befehlen, mit denen kenn ich mich noch nicht so gut aus.
Code:$regfile = "m16def.dat" $crystal = 16000000 Config Porta.0 = Output Config Portd.7 = Output Config Pina.2 = Input Porta.2 = 1 Dim Zeit As Byte Portd.7 = 1 Waitms 300 Portd.7 = 0 Waitms 300 Portd.7 = 1 Waitms 300 Portd.7 = 0 Do Zeit=0 Porta.0 = 1 If Pina.2 = 0 Then Porta.0 = 0 ' könnte man auch noch in die While-Schleife schieben, dann braucht man die if-schleife nicht mehr While Pina.2=0 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 End If Waitms 3000 Porta.0 = 0 Portd.7 = 0 Wend End If Loop
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
Jo ohne Pull Ups gehts schonmal halbwegs. Hab es jetzt nochmal etwas umgestellt:
Jetzt tut sich nur das Problem auf das mein timer nicht mehr will. Wenn ich allerdings Zeit = 5 setze funktioniert es. Nur mit dem hochzählen möchte es noch nicht so ganz.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: Do Portd.7 = 1 Waitms 300 Portd.7 = 0 Waitms 300 Portd.7 = 1 Waitms 300 Portd.7 = 0 Goto Main2 Loop Main2: Do If Pina.2 = 0 Then Goto Main3 Loop Main3: Do Waitms 100 Zeit = Zeit + 1 If Zeit = 5 Then Porta.0 = 1 Waitms 3000 Porta.0 = 0 End If Goto Main2 Loop End
Edit: quark, bin etwas daneben.Nur mit dem hochzählen möchte es noch nicht so ganz.
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
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
Wie würde sich das Problem denn jetzt lösen lassen ?
hrmpf, ich hab heute schon zuviel gedacht /-)
ich hab nochmal was editiert, wenn das nicht geht, bin ich mit meinem Latein am Ende.
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
Gibt fehler weil Loop fehlt.
Lesezeichen