![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
' ============================================================================ ' 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 |