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
Lesezeichen