Tastaturabfrage in einer zeitlich veränderbaren Schleife

Gast #130642
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
Gast #130643
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren