Hallo
Falls es jemand interessiert
Habe obigen Code ausprobiert.
Funktioniert aber nicht so ganz .
Habe mich damit ein bisschen gespielt und das ist jetzt rausgekommen:
Eine Taste zaehlt mit Debounce rauf und beim länger halten, ab einen Wert von 10* Einer, zaehlt er dann die Zehner statt die Einer rauf..
(Ausgabe auf einem LCD)
Code:'-------- Debounce und Zählen mit verschiedenen Längen -------------- '-------- zaehlt bei zweiter Stelle schneller -------------- $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Config Lcdmode = Port Config Pind.7 = Input Config Pind.6 = Input Portd = 255 ' Port d auf High Config Debounce = 30 ' Tastenentbrellung mit 30ms Dim Zaehler As Word Dim Taste As Byte Dim Zaehlweite As Byte Dim Mitzaehlen As Byte Dim I As Byte Const Normalzaehlen = 1 Const Schnellerzaehlen = 10 Const Nochschnellerzaehlen = 100 Zaehlweite = Normalzaehlen Zaehler = 0 Mitzaehlen = 0 Cls Do Gosub Lesen While Taste = 1 Incr Mitzaehlen 'Mitzaehler +1 If Mitzaehlen > 10 Then Zaehlweite = Zaehlweite + 10 For I = 1 To Zaehlweite Incr Zaehler Next Waitms 200 Cls Locate 1 , 1 Lcd Zaehler Gosub Lesen Wend Mitzaehlen = 0 Zaehlweite = Normalzaehlen Locate 1 , 1 Lcd Zaehler Loop End Ein: Taste = 1 Return Aus: Taste = 0 Return Lesen: Debounce Pind.7 , 0 , Ein , Sub Debounce Pind.7 , 1 , Aus , Sub Return
und hier eine Verison, wo er die Zaehner und dann die Hunderter schneller zaehlt.
Code:'-------- Debounce und Zählen mit verschiedenen Längen -------------- '-------- zaehlt 2 und dann 3 Stellen schneller. -------------- $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Config Lcdmode = Port Config Pind.7 = Input Config Pind.6 = Input Portd = 255 ' Port d auf High Config Debounce = 30 ' Tastenentbrellung mit 30ms Dim Zaehler As Word Dim Taste As Byte Dim Zaehlweite As Byte Dim Mitzaehlen As Byte Dim I As Byte Const Normalzaehlen = 1 Const Schnellerzaehlen = 10 Const Nochschnellerzaehlen = 100 Zaehlweite = Normalzaehlen Zaehler = 0 Mitzaehlen = 0 Cls Do Gosub Lesen While Taste = 1 Incr Mitzaehlen 'Mitzaehler +1 If Mitzaehlen > 10 And Mitzaehlen < 101 Then Zaehlweite = Schnellerzaehlen Mitzaehlen = Mitzaehlen + 10 End If If Mitzaehlen > 100 Then Zaehlweite = Nochschnellerzaehlen For I = 1 To Zaehlweite Incr Zaehler Next Waitms 200 Cls Locate 1 , 1 Lcd Zaehler Gosub Lesen Wend Mitzaehlen = 0 Zaehlweite = Normalzaehlen Locate 1 , 1 Lcd Zaehler Loop End Ein: Taste = 1 Return Aus: Taste = 0 Return Lesen: Debounce Pind.7 , 0 , Ein , Sub Debounce Pind.7 , 1 , Aus , Sub Return







Zitieren

Lesezeichen