Unterscheiden ob ein Taster kurz oder lange gedrückt wird

OP #1903149
Ich möchte mit einem Transceiver Daten von einer Senderplatine auf eine 
Empfängerplatine übertragen und die Daten auf der Empfängerseite 
auswerten.

Mittels Taster auf der Senderseite möchte ich zwei Funktionen steuern.
Tastendruck = kurz (< 1sek.) --> mache dies...
Tastendruck = lang (> 1sek.) --> mache das...

Der derzeitige Code kann diese Unterscheidung zwar treffen, aber das 
Programm wird an der Stelle der delay-Anweisung für die Dauer der 
Zeitverzögerung blockiert.

Hat wer eine Idee, wie ich das Problem am Besten lösen kann?

Hier der C-Code:
1
#include <avr/io.h>
2
#include <util/delay.h>
3

4
#define button_down  !(PINC & (1<<PINC7))  // Button = Low
5

6
int main(void)
7
{
8
  DDRB = 0xFF;      // PORTB auf Ausgang
9
  DDRC = (0<<PINC7);    // PINC7 auf Eingang
10

11
  char zustand=0;
12

13
  while (1)
14
  {
15
    char wert=0;
16
    if(zustand == 0 && button_down)  
17
    //Wenn Button = Low
18
    {
19
      zustand=1;
20
      _delay_ms(1000);
21
      wert=1;
22
    }
23
    else if(zustand == 1 && button_down) 
24
    //Wenn Button noch immer Low
25
    {
26
      zustand=2;
27
      wert=2;
28
      PORTB |= (1<<PB0);  // Tastendruck lang
29
    }
30
    else if(zustand == 1)
31
    {
32
        PORTB |= (1<<PB1);  // Tastendruck kurz
33
    }
34
  }
35
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.