Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Demoprogramm: Tasten abfragen Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 15.11.2018 19:29)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
' ============================================================================
' Tasten des P/E-Boards abfragen und daraufhin Signale erzeugen
' In OCBASIC 1.12a_e1 für Open-Macro von Dietmar Harlos am 15. November 2018
' ============================================================================

' Die Tasten werden auf dem P/E-Board nach 0 Volt (GND) geschaltet. Sie sind
' also invertiert.

' Stichwort "Entprellung": Die Tasten prellen, aber wenn die Tasten nicht zu
' häufig abgefragt werden, wirkt das wie eine Entprellung. Sie können zum
' Beispiel 10 mal pro Sekunde abgefragt werden. Also einmal alle 100 ms.

' --- Definitionen für das System --------------------------------------------

INCLUDE "omac.def"         'Definitionen für die Open-Macro

' --- Definitionen des Anwenders ---------------------------------------------

DEFINE taste1 PORT[4]      'Taste auf dem P/E-Board
DEFINE taste2 PORT[5]      'Taste auf dem P/E-Board

DIM bitarray  BYTE         'Bitvariablen liegen in den ersten 32 Bytes des
                           '  USER-RAMs, deshalb am Anfang definieren

DIM taste1alt BIT[1] OF bitarray     'Alte Zustände der Tasten
DIM taste2alt BIT[2] OF bitarray
DIM signal1   BIT[3] OF bitarray     'Signale
DIM signal2   BIT[4] OF bitarray

' --- Das Hauptprogramm ------------------------------------------------------

init                       'Initialisierung

WHILE TRUE
  PRINT "Ich warte auf Tastendrücke an PORT[4] und PORT[5]."

  handlekeys               'Tastenabfrage behandeln

  IF signal1 THEN
    PRINT "Taste 1 wurde gedrückt. Signal 1 ist HIGH."
    signal1=OFF
  END IF

  IF signal2 THEN
    PRINT "Taste 2 wurde gedrückt. Signal 2 ist HIGH."
    signal2=OFF
  END IF

  PAUSE 20
WEND

End2Host=ON                'Nach Programmende in den Host-Modus
END                        'Programmende, Neustart mit der Enter-Taste

' --- Subroutinen ------------------------------------------------------------

' Verschiedene Initialisierungen

PROCEDURE init
  taste1alt=taste1
  taste2alt=taste2
  signal1=OFF
  signal2=OFF
  RETURN
END PROCEDURE


' Tasten abfragen

' Stichwort "Entprellung": Die Tasten prellen, aber wenn die Tasten nicht zu
' häufig abgefragt werden, wirkt das wie eine Entprellung. Sie können zum
' Beispiel 10 mal pro Sekunde abgefragt werden. Also einmal alle 100 ms.

' Für besonders hohe Ansprüche könnte man die Zustände der Tasten vor dem
' Abfragen buffern. Dann können sich die Zustände während des Abfragens nicht
' verändern.

PROCEDURE handlekeys
  IF taste1<>taste1alt THEN          'Zustand verändert?
    taste1alt=taste1
    IF NOT(taste1) THEN              'gedrückt
      signal1=ON
    END IF
  END IF

  IF taste2<>taste2alt THEN          'Zustand verändert?
    taste2alt=taste2
    IF NOT(taste2) THEN              'gedrückt
      signal2=ON
    END IF
  END IF

  RETURN
END PROCEDURE

' --- Programmende ----------------------------------------------------------


Passender Link: Bedienungsanleitung zur Open-Macro und Open-Maxi

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten:

Entprellung? (von Joachim - 16.11.2018 19:40)
    Re: Entprellung? (von Dietmar - 16.11.2018 20:20)
        Re: Entprellung? (von Joachim - 16.11.2018 20:30)