![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Ich habe das aus dem Projekt mal rausgelöst, weil es sonst zu unübersichtlich wird. Mein Problem ist, das ich keine funktioinerende Tastenabfrage hinbekomme. Zum Test habe ich einen OM mit 9 LEDs und zwei Tasten beschaltet. So einfache Testdurchläufe wie #start taste1 = led1 taste2 = led2 goto start funktionieren ohne Probleme. Aber jede if .. then- Abfrage bei den Tasten (nur bei den Tasten) funktioniert nicht. Und ich weiß einfach nicht was das sein kann. Ich habe schon eine ganze reihe Programmzeilen probiert. Aber keine hat mir ein Ergebnis geliefert, sodass ich annehme, dass hier ein genereller Fehler drin ist. if Taste1 = on then goto Unterprogramm1 if Taste2 = on then goto Unterprogramm2 goto start ' Rücksprung zu start bewirkt nichts. Auch das Ersetzen von on durch -1 oder durch eine variable bringt nichts. Ebenfalls in der etwas komplexeren Abfrage über Flanken kommt kein Ergebnis zustande. ' --- Betriebssystem konfigurieren ------------------------------------------ include "om.def" ' Definitionen fuer Betriebssystem option openmini 'pullupa = &b00111101 ' Schaltet die internen Pull-Up-Widerstände von ' Port1 und Port2 aus pullupa = 0 pullupb = 0 ClockDis = on ' --------------------------------------------------------------------------- RunOnErr = on ' bei Fehler Programm neu starten define PWM_Port port[1] ' 1. PWM Ausgang define spannung AD[2] ' Spannungskontrollport define Led1 port[4] define Led2 port[5] define Led3 port[6] define Led4 port[9] ' Die Open-Mini besitzt wie die Open-Micro define Led5 port[10] ' den PORTA und zusätzlich den PORTB. define Led6 port[11] define Led7 port[12] define Led8 port[13] define Tasterauf port[14] ' Taste höher define Tasterunter port[15] ' Taste niedriger define blank port[16] ' zum halbhell/dunkelsteuern der äußersten LEDs define Bit81_88 byte[11]' byte 11 (statische Bits 81 bis 88) define Flanke1 Bit[81] ' Flankenbit Taste rauf define Flanke2 Bit[82] ' Flankenbit Taste runter define taste1 Bit[87] ' Tastenbit Taste rauf define taste2 Bit[88] ' Tastenbit Taste runter define tmp byte ' Hilfsvariable für PWM define a byte ' Zählervariable define h byte ' Tastenvariable define l byte ' Tastenvariable define t byte ' Zählervariable Start-Timer define x byte ' Timervariable define y byte ' Zählervariable Ende-Timer define z byte ' Timervariable Ende define allleds_a byteport[1] ' Sammelfestlegung aller LEDs an Port a define allleds_b byteport[2] ' Sammelfestlegung aller LEDs an Port b ' Die Pinbelegung der ' Open-Mini (QY4) ' _____ _____ ' | \__/ | ' [ VDD GND ] VDD = 4.6 bis 5.5 Volt ' | | ' blank [ PTB7 PTB0 ] LED 4 ' | | ' LED 8 [ PTB6 PTB1 ] LED 5 ' | | ' LED 3 [ PTA5 PTA0 ] PWM1 ' | | ' LED 2 [ PTA4 PTA1 ] AD ' | | ' Taste1 [ PTB5 PTB2 ] LED 6 ' | | ' Taste2 [ PTB4 PTB3 ] LED 7 ' | | ' LED 1 [ PTA3 PTA2 ] host/run ' |______________| ' '----------------- Testprogramm für Tastenabfrage---------------------------- ' ---Initialisierung--------------------------------------------------------- allleds_a = 0 ' alle Ports A ausschalten allleds_b = 0 ' alle Ports B ausschalten #init if Taste1 = 0 then led1 = -1 ' LED1 leuchtet bei Nicht gedrückter Taste if Taste2 = 0 then led2 = -1 ' LED2 leuchtet bei Nicht gedrückter Taste if Flanke1 = -1 then led5 = -1 ' Flankenbit Taste1 gesetzt? LED5 on if Flanke2 = -1 then led6 = -1 ' Flankenbit Taste2 gesetzt? LED6 on if Flanke1 = 0 then led7 = 0 ' Flankenbit Taste1 nicht gesetzt? LED7 on if Flanke2 = 0 then led8 = 0 ' Flankenbit Taste2 nicht gesetzt? LED8 on if Tasterauf = -1 then goto setz1 ' Taste gedrückt? Ja, dann setze EIN-Flanke Flanke1 = 0 ' FlankenBit off setzen if Tasterunter = -1 then goto setz2 ' Taste gedrückt? Ja, dann setze EIN-Flanke Flanke2 = 0 ' FlankenBit off setzen goto initend ' Reset Ein-Flanke (bei Nichtbetätigung der Taste) #setz1 if Flanke1 = on then ' Ein-Flanke gesetzt? Ja, dann Ende End if Flanke1 = on ' Setze Ein-Flanke (Sperre für weiteres Setzen) goto init #setz2 if Flanke2 = on then ' Ein-Flanke gesetzt? Ja, dann Ende End if Flanke2 = on ' Setze Ein-Flanke (Sperre für weiteres Setzen) goto init PWM_Port = on #initend goto init end Die PWM_Port-LED soll einen erfolgreichen Durchlauf des Programms signalisieren. Sie bleibt aber aus, also das Programm kommt gar nicht bis dort. Hat jemand eine Idee dazu? Oder kann das mal gegentesten? Könnte es sein, dass irgendwie die Interpretation der Abfrage nicht richtig umgesetzt wird? |
Antwort schreiben |