Tastaturabfrage in einer zeitlich veränderbaren Schleife

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

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.