Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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)