Forum: Mikrocontroller und Digitale Elektronik Tastaturabfrage in einer zeitlich veränderbaren Schleife


von Volker (Gast)


Lesenswert?

Hallo Leute,

Ich habe eine (Blink-)Schleife aufgebaut, mit der ich eine LED zum
blinken bringe und gleichzeitig ein Signal erzeuge. Das Puls/
Pausenverhältnis ändere ich mit 4 Tasten hoch und runter.

Das erste Problem ist:
Die Schleife soll ca. 60 sekunden laufen. Wenn ich aber die Frequenz
erhöhe, zählt I auch schneller hoch und die IF Schleife ist beendet.
Gibt es eine Funktion, mit der ich eine Folge von Befehlen in einer
definierbaren Zeit ( 60s) ausführen kann?

Das 2. Problem ist die Tastenabfrage:
Wenn ich die Taste zur erhöhung der Frequenz drücke, zählt er bei hohen
Frequenzen zu schnell und auch durch sehr kurzes drücken der Tasten kann
man nicht einen genauen Wert einstellen.
Frage: Ist es möglich, die Tastaturabfrage parallel zur Blinkschleife
laufen zu lassen, ohne die Frequenz der Blinkschleife stark zu
beeinflussen?

Ich arbeite mit Bascom und das ist die Schleife. Hoffentlich bekommt
niemand einen Lachanfall bezüglich meine Programmierkünste.


For I = 1 To 1000

Key = Pina And &B11111000
' Tastenabfrage

If Key = 16 Then P = P + 2
' Pause größer heißt Frequenz runter
If Key = 32 Then P = P - 2
' Pause kleiner heißt Frequenz hoch
If Key = 64 Then T = T - 1
' Impulsbreite kleiner
If Key = 128 Then T = T + 1
' Impulsbreite größer

Locate 2 , 1
Lcd "I " ; T ; " F " ; P ; " "

Portb = &B00001000
' LED an
Waitms T

Portb = &B00000000
' LED aus
Waitms P

Next
End If

von Dirk (Gast)


Lesenswert?

Hi,

1. Schau dir mal die Timer an. In der Timer0_ISR. Erhoehst du eine
Variable um deine gewuenschte Zeit zuerhalten.


2. Die Tastenentprellung ist bei bascom sehr einfach. Schau mal in der
Hilfe unter debounce. Die routine ist leider nicht timer gesteuert
sondern reagiert auf flankenwechselerkennung. Um die Taste jetzt in
kurz / lang gedrueckt aufzuteilen faellt somit flach.

von Volker (Gast)


Lesenswert?

Danke Dirk!

Mit Timer bin ich weiter gekommen.

VG Volker

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.