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
Lesezeichen