Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 01. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

Tastendruch zählen

ATMega-Controller in BASIC programmieren

Postby burkhard kainka » Thu Aug 28, 2008 12:00 am

Frage:
um hier nicht die gesamte Vorgeschichte rein zu pinnen, hier ein kurzer "Teaser":
http://www.cczwei-forum.de/cc2/thread.php?postid=21137#post21137

Meine Frage ist nun nach einem kurzen Progrämmchen, dass folgendes tut:

Taster 1 hat Wertigkeit 1
Taster 2 hat Wertigkeit 3
-drücken in beliebiger Anzahl und Reihenfolge-
Taster 3 veranlasst die Ausgabe des Gesamtergebnisses / Summe aller Werte:
LED 1 hat Wertigkeit 1
LED 2 hat Wertigkeit 2

BEISPIEL:
Taster 1 vier mal gedrückt, Taster 2 zwei mal gedrückt ( ergibt Wert 10 ) Taster 3 veranlasst 5 mal blinken an LED 2.....usw....

Eine kleine Hilfestellung für mich in Bascom, da das wohl so fundamental ist, dass es ( auch in Büchern ) keine Tipps gibt.

...schon mal vielen Dank auch für Code-Schnipsel

--------------------------------------------
Antwort:

Hier ein kleines Programm. Die Tastendrücke erhöhen einen Zähler, der gleichzeitig beim Blinken wieder abgebaut wird. Drücken und Blinken geht also gleichzeitig. Die 50 ms entprellen die tasten und bilden gleichzeit ein Timing für den Blinker.

Bascom Taste

$regfile = "m88def.dat"
$crystal = 4000000



Dim Taste1 As Byte
Dim Taste2 As Byte
Dim Taste1alt As Byte
Dim Taste2alt As Byte
Dim Zaehler As Byte
Dim Blinkzeit As Byte

Ddrb.2 = 1
Portb = 3 ' Pullups


Taste1alt = 1
Taste2alt = 1
Portb.2 = 0 'LED aus
Zaehler = 0

Do
Taste1 = Pinb.0
Taste2 = Pinb.1
If Taste1 = 0 Then
If Taste1alt = 1 Then Zaehler = Zaehler + 1
End If
If Taste2 = 0 Then
If Taste2alt = 1 Then Zaehler = Zaehler + 3
End If
Taste2alt = Taste2
Taste1alt = Taste1
Blinkzeit = Blinkzeit + 1
If Blinkzeit = 11 Then Blinkzeit = 0
If Blinkzeit = 1 Then
If Zaehler > 0 Then
Portb.2 = 1 'LED an
Zaehler = Zaehler - 1
If Zaehler = 255 Then Zaehler = 0
End If
End If
If Blinkzeit = 6 Then Portb.2 = 0 'LED aus
Waitms 50 'Entprellung
Loop

End



Viel Erfolg!

Burkhard'
burkhard kainka
 
Posts: 736
Joined: Thu Jan 02, 2014 10:41 am

Return to BASCOM-AVR-Kurs

Who is online

Users browsing this forum: No registered users and 1 guest