hmm, ich würde es so machen:
Ich habs jetzt mal für nen Mega8515 ausprobiert und port-/pinnamen eingegeben:Code:'hier davor noch das übliche geschribsel. statt den buchstaben x,y,p und q, 'die gleich noch kommen musst du dir eben die entsprechenden 'Portnamen bzw die pinnummern eingeben PINx.y = Input 'Pin y von Port x als Eingang PORTx.y = 1 'Pullup von dem pin an Taster Alias PINx.y 'Pin y von port x heißt jetzt "Taster" Portp.q = Output 'Pin q von Port p ist dein output, wird nach 3 sec taster=0 getoggelt Ausgang Alias Portp.q 'jetzt heißt der pin q von port p "Ausgang dim Zähler as byte 'Variable "Zähler" deklariert 'Hauptschleife kommt jetzt: Do Zähler = 0 'das setzt den Zähler wieder zurück, wenn die While-schleife 'unterbrochen wurde. wird auch gebraucht, damit "Zähler" 'einen bestimmten Wert hat, wenn die While-Schleife beginnt while Taster = 0 'der Taster an Pin y von Port x muss nach GND gehen, 'darum ist logisch 1 hier low, also 0. wenn Taster = 1, 'dann hört die while-schleife auf, wird über die Do-Loop-Schleife 'aber immer wieder aufgerufen. dadurch wird nach jeder 'Tasterunterbrechung neu angefangen zu zählen Zähler = Zähler + 1 'Die Variable "Zähler wird um 1 erhöht if Zähler = 30 Then 'wenn Zähler 30 mal um eins erhöht wurde, 'was aufgrund der waitms-funktion nur 10mal pro sec passiert, 'dann toggle Ausgang 'wird der ausgang getoggelt Zähler = 0 'der zähler wieder rückgesetzt endif 'und neu angefangen waitms 100 'das ist die waitms- funktion. wenn du genauere ergebnisse haben willst, 'setze sie auf 10 und bei der if- anweisung "if Zähler = 300" 'dann könnte nur das byte nicht mehr ausreichen, 'als dass die Variable "Zähler " definiert ist. Wend loop
EDIT: fehler behoben, funktioniert!Code:$regfile = "m8515.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 8000000 Config Pina.0 = Input 'Pin y von Port x als Eingang Porta.0 = 1 'Pullup von dem pin an Taster Alias Pina.0 'Pin y von port x heißt jetzt "Taster" (kann sein, dass es "Taster Alias PORTx.y" heißen muss) Config Porta.1 = Output 'Pin q von Port p ist dein output, wird nach 3 sec taster=0 getoggelt Ausgang Alias Porta.1 'jetzt Heißt Der Pin Q Von Port P "Ausgang" Dim Zaehler As Byte 'Variable "Zähler deklariert" 'Hauptschleife kommt jetzt: Do Zaehler = 0 While Taster = 0 'der Taster an Pin y von Port x muss nach GND gehen, ' darum ist logisch 1 hier low, also 0. wenn Taster = 1, ' dann hört die while-schleife auf Zaehler = Zaehler + 1 'die Variable "Zähler wird um 1 erhöht" If Zaehler = 30 Then 'wenn Zähler 30 mal um eins erhöht wurde, 'was aufgrund der waitms-funktion nur 10mal pro sec passiert, dann Toggle Ausgang 'wird der ausgang getoggelt Zaehler = 0 'der zähler wieder rückgesetzt End If 'und neu angefangen Waitms 100 'das ist die waitms- funktion. wenn du genauere ergebnisse haben willst, 'setze sie auf 10 und bei der if- anweisung "if Zähler = 300" 'dann könnte nur das byte nicht mehr ausreichen, 'als welches die Variable "Zähler " definiert ist. Wend Loop








Zitieren
Lesezeichen