Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: do - while Problem Kategorie: Programmierung C (von Hannes - 5.04.2006 11:07)
Als Antwort auf Re: do - while Problem von PeterS - 5.04.2006 9:55
Ich nutze:
C-Control Pro Mega32, eigenes Board
Hi,

Deine Schleife funktioniert korrekt! Wenn keine Taste gedr├╝ckt wird, wird immer 0 ausgegeben,
ansonsten ein Zahlenwert der sich mit jeder Taste ├Ąndert. An der Hardware liegts nicht! Das Demo-
Programm LCD_Key.cc funktioniert auch korrekt, es wird die Taste am LCD angezeigt die gedr├╝ckt
wird.

Wenn ich bei meinem Programm, (hier aufgef├╝hrt ein paar Zeilen weiter unten) den Datentyp f├╝r key_ch
├Ąndere von Char auf Integer ,dann funktioniert die Schleife!!!!!!!!!!!!!!!!!!!!
Es wird solange kein Zeichen ausgegeben, bis eine Taste gedr├╝ckt wird und dann die gedr├╝ckte Taste
ausgegeben.

Ist das Funktionieren der while-Schleife vom Datentyp abh├Ąngig? Char geht doch auch von -128 bis 127


Gruss



 




> Hallo,
>
> word key_in;
>
> while(1)
> {
>      key_in=Key_Scan();
>       AbsDelay(500);
>     Msg_WriteWord(key_in)
> }
>
> Teste mal diese Schleife. Wenn keine Taste gedr├╝ckt wird, sollte key_in 0 sein. Ansonsten wird
> f├╝r jede gedr├╝ckte Taste ein Bit im Wert von key_in gesetzt. Sollte der Wert ungleich null sein wenn
> keine Taste gedr├╝ckt ist, dann ist vermutlich die Hardware Schuld. Bitte dann erstmal die Verbindung
> der Tastatur ├╝berpr├╝fen.
>
> Gruss Peter
>
>
> > Hallo,
> >
> > ich m├Âchte die Tastatur solange abfragen bis ein Zeichen gedr├╝ckt wurde und die gedr├╝ckte Taste
> > einer Variablen ├╝bergeben.
> >
> > das Tastaturabfrage-Programm funktioniert bei mir aber nicht.
> > ______________________________________________________
> > word key_in;
> > char key_ch;
> >
> > void main(void)
> > {
> >     Key_Init();
> >     key_ch = -1;
> >
> >     do
> >     {
> >         key_in=Key_Scan();
> >         key_ch=Key_TranslateKey(key_in);
> >         AbsDelay(200);
> >     }
> >     while(key_ch == -1);
> >     Msg_WriteChar(key_ch);
> >
> >     while(1);
> > }
> > ________________________________________________________
> >
> > nach dem Start wird folgendes ausgegeben:
> >
> > Interpreter gestartet - 2kb RAM                                                
> > ├┐
> >
> >
> > D.h. die do-Schleife wird genau 1x durchlaufen, auch wenn key_ch==-1 ist und dann das Zeichen "├┐"
> > ausgegeben, das ist nach meiner Tabelle das Zeichen 255 des ANSI Zeichensatzes.
> >
> > Kannst Du das reproduzieren??
> >
> >
> > Gruss
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > > Hi,
> > >
> > > ich wei├č nicht genau was Du machen willst. M├Âchtest Du die Tastatur pollen bis eine Taste gedr├╝ckt wurde,
> > > empfehele ich folgendes:
> > >
> > > do
> > > {
> > >     key_in=Key_Scan();
> > >     key_ch=Key_TranslateKey(key_in);
> > >     AbsDelay(200);
> > > }
> > > while(key_ch == -1);
> > > Msg_WriteChar(key_ch);
> > >
> > > Die Schleife l├Ąuft solange, bis der Wert von key_ch ungleich -1 ist. Das bedeutet ein g├╝ltiges Zeichen
> > > wurde getippt.
> > >
> > >
> > > Gruss Peter
> > >
> >


    Antwort schreiben


Antworten:

weitere Probleme mit Datentyp Char (von Hannes - 9.04.2006 16:59)
    Re: weitere Probleme mit Datentyp Char (von PeterS - 14.04.2006 15:33)
        Bis wann kann man mit dem korrigierten Interpreter/Compiler rechnen? (von Hannes - 24.04.2006 8:01)