Ereignissteuerung+Tastatur Kategorie: Programmierung (von TN - 4.11.2003 15:47) | |
| |
Hallo, hab mal wieder ein Problem, bin jedoch mit Eurer Hilfe schon viel weiter in der Programierung. Nun ein bissl. Code: int i,a,u1, u2, key; byte adr, mask, out, input; //********************************// function Taste () returns int //********************************// { //while (ports.adc(7)>900); u1= ports.adc(7); u2= ports.adc(7); if (math.abs(u1-u2))< 4 { if u1<901 key=3;//3 if u1<825 key=6;//6 if u1<755 key=9;//9 if u1<690 key=12;//# if u1<620 key=2;//2 if u1<550 key=5;//5 if u1<480 key=8;//8 if u1<410 key=0;//0 if u1<335 key=1;//1 if u1<270 key=4;//4 if u1<190 key=7;//7 if u1<110 key=11;//* if u1>1000 key=-1; } return key; } //********************************// function error_on() //********************************// { rblcd.init(); rblcd.goto(2,4); rblcd.print("Bus Fehler"); sleep 5000; } //********************************// function error_off() //********************************// { run 100; rblcd.init(); rblcd.goto(2,4); rblcd.print("PIO-4 OK"); sleep 1000; } /*******************************************************/ /*** Thread Schlüsselschalter */ /*******************************************************/ thread schluessel { do{ports.set(14,1);} while key==3; } //********************************// function abfrage_Pio() //********************************// { rblcd.init(); adr = 1; // PIO-4 Sensor auf Adresse 1 mask = 0x08; // PA3 (violett) = Ausgang // PA0 bis PA2 (grau, wei�, pink) = Eingang // Bitmuster : 0000 1000 out = 0x08; // Ausgang soll +5V annehmen // Bitmuster : 0000 1000 input = twbs.rwport(adr, mask, out); // Digitalport schreiben & lesen // Wenn die Drähte grau und wei� mit violett verbunden wurden, ergibt sich : // input hat den Wert 0x0B Bitmuster : 0000 1011 // Für PA3 steht das Bit auf 1, weil das Ausgangsbit mit out gesetzt wurde if input==0x0C //Pink PA2 { run schluessel; } if input==0x08 //PA3 {error_off();} } /*******************************************************/ /*** Thread Tastaturabfrage */ /*******************************************************/ //------------ thread tast_abfrage //------------ { rbkeyb.select(0); lcd.init (); lcd.goto(0,0); //while (rbkeyb.get()==0); lcd.put(rbkeyb.get()); sleep 100; } /*******************************************************/ /*** Thread MAIN */ /*******************************************************/ //------------ thread main //------------ { ports.set(14,0); twb.init(); abfrage_Pio(); run tast_abfrage; } Nun das Problem: Im Thread "schlüssel" möchte ich, dass der Port 14 high geht und dass aber nur solange bis die Taste 3 betätigt wird. Funktioniert bei mir aber nicht. Was mach ich falsch. Sind fehler im Prog.? Allergrö�ten Dank!!! | |
Antwort schreiben Antworten: Re: Ereignissteuerung+Tastatur (von Markus A. - 4.11.2003 20:07) |