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)