www.mikrocontroller.net

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


Autor: Volker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Volker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Dirk!

Mit Timer bin ich weiter gekommen.

VG Volker

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.