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

Re: Warum funktioniert dieses einfache Programm nicht?? Kategorie: Programmierung C (von PeterS - 23.10.2008 1:06)
Als Antwort auf Warum funktioniert dieses einfache Programm nicht?? von Markus Wimmer - 22.10.2008 23:56

> Hallo!
> Brauche dringend Hilfe!!
>
> Wiseo funktioniert dieser einfache Syntax nicht??
>
>
>
> // Hauptprogramm
> //
> void main(void)
> {
>     Port_DataDirBit(PORT_SW1,PORT_IN);
>     Port_DataDirBit(PORT_LED1,PORT_OUT);
>     Port_WriteBit(PORT_LED1,PORT_OFF);
>
>     while (1)
>     {
>
>             while (Port_ReadBit(PORT_SW1));{
>             Port_WriteBit(PORT_LED1,PORT_ON);}
>             AbsDelay(500);
>             while(Port_ReadBit(PORT_SW1));{
>             Port_WriteBit(PORT_LED1,PORT_OFF);}
>
>
> }
> }
>
> Versuche die LED am Applikation Bord mit einem Tastendruck anzumachen (was auch funktioniert)
> und mit einem Weiteren Tastendruck wieder auszumachen- das funktioniert aber nicht!
> Jumper vom SW1 ist auf GND!
> Danke
> MFG
> Markus Wimmer

Hallo,

erstmal sind da ein paar geschweifte Klammern überflüssig. Zweitens, nehme ich an Du möchtest mit
der while Schleife auf einen Tastendruck warten. Das wäre aber besser so:

while (!Port_ReadBit(PORT_SW1));

Du möchtest ja warten, solange das Portbit NICHT gleich 1 ist. Da Du vielleicht in 0.5 Sekunden auch
den Schalter nicht sofort loslassen wirst, danach auch eine Schleife, die wartet solange das SW1
Portbit gleich 1 ist. Der Code muÃ? daher so aussehen:

     while (1)
     {
 
             while (!Port_ReadBit(PORT_SW1));   // warten solange SW1 nicht gedrückt ist
             Port_WriteBit(PORT_LED1,PORT_ON);
   
             while (Port_ReadBit(PORT_SW1));   // warten bis SW1 losgelassen wird

             while(!Port_ReadBit(PORT_SW1));    // und wieder warten solange SW1 nicht gedrückt ist
             Port_WriteBit(PORT_LED1,PORT_OFF);
 
      }

Gruss Peter


    Antwort schreiben


Antworten:

Re: Warum funktioniert dieses einfache Programm nicht?? (von PeterS - 23.10.2008 1:15)
    Re: Warum funktioniert dieses einfache Programm nicht?? (von Markus Wimmer - 23.10.2008 8:27)
        Re: Warum funktioniert dieses einfache Programm nicht?? (von PeterS - 23.10.2008 9:19)