So..

also hier ist ein Programm, dass die LEDs beim ProBot der Reihe nach aufleuchten läst solange PA7 auf GND ist..

Wird PA7 von GND getrent, geht das Licht zwischen dem letzten und dem nächsten LED hin und her, bis PA7 wieder mit GND verbunden ist..

Das kanst du mit einem z.B Taster machen..

Hoffe, das das Programm verständlich ist..

Code:
//Lauflicht und 1 Taster für Pro Bot

#define LED1 16
#define LED2 17
#define LED3 19
#define LED4 18

#define Taster1 7

#define OFF  1
#define ON   0
#define IN   0
#define OUT  1



void main(void)
{
    Port_DataDirBit(LED1,OUT);    //Auf Ausgang schalten
    Port_DataDirBit(LED2,OUT);
    Port_DataDirBit(LED3,OUT);
    Port_DataDirBit(LED4,OUT);

    Port_DataDirBit(Taster1,IN);  //Auf Eingang Schalten

    Port_WriteBit(LED1,OFF);     //Alle LED OFF
    Port_WriteBit(LED1,OFF);
    Port_WriteBit(LED1,OFF);
    Port_WriteBit(LED1,OFF);

    Port_WriteBit(Taster1,1);   //Pull UP Wiederstand einschalten

    byte Status;

    Status = 1;

    while(true)
    {
        if (Status == 1)                  //ist der Status ==1
        {
            Port_WriteBit(LED2,OFF);
            Port_WriteBit(LED1,ON);
            AbsDelay(400);
            Port_WriteBit(LED1,OFF);
            Port_WriteBit(LED2,ON);
            AbsDelay(400);

            if(Port_ReadBit(Taster1)==0)  //Wird der Taster gedrückt??
            {
                Port_WriteBit(LED2,OFF);  //Wenn ja: LED2,OFF und
                Status = 2;             //Status Wechsel
            }
        }

        if (Status==2)           //Ist der Status == 2
        {
            Port_WriteBit(LED3,OFF);
            Port_WriteBit(LED2,ON);
            AbsDelay(400);
            Port_WriteBit(LED2,OFF);
            Port_WriteBit(LED3,ON);
            AbsDelay(400);

            if(Port_ReadBit(Taster1)==0)  //Wird der Taster gedrückt??
            {
                Port_WriteBit(LED3,OFF);  //Wenn ja: LED3,OFF und
                Status = 3;              //Status Wechsel
            }
        }

        if (Status == 3)                   //ist der Status == 3
        {
            Port_WriteBit(LED4,OFF);
            Port_WriteBit(LED3,ON);
            AbsDelay(400);
            Port_WriteBit(LED3,OFF);
            Port_WriteBit(LED4,ON);
            AbsDelay(400);

            if(Port_ReadBit(Taster1)==0)  //Wird der Taster gedrückt??
            {
                Port_WriteBit(LED4,OFF);  //Wenn ja: LED4,OFF und
                Status = 4;              //Status Wechsel
            }
        }
        if (Status == 4)          //Ist der Status == 4
        {
            Port_WriteBit(LED1,OFF);
            Port_WriteBit(LED4,ON);
            AbsDelay(400);
            Port_WriteBit(LED4,OFF);
            Port_WriteBit(LED1,ON);
            AbsDelay(400);

            if(Port_ReadBit(Taster1)==0)  //Wird der Taster gedrückt??
            {
                Port_WriteBit(LED1,OFF);  //Wenn ja: LED1,OFF und
                Status = 1;              //Status Wechsel
            }
        }
    }
}
Ich bin wie gesagt C anfänger..(noch nie zuvor C auf uc programiert) fals ein fehler im Programm ist, bitte melden!

Es funktioniert aber
Viel Spass und freundliche Grüsse
HD