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..
Ich bin wie gesagt C anfänger..(noch nie zuvor C auf uc programiert) fals ein fehler im Programm ist, bitte melden!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 } } } }
Es funktioniert aber
Viel Spass und freundliche Grüsse
HD







Zitieren

Lesezeichen