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