Hallo
Externes Bild anzeigen
(http://www.youtube.com/watch?v=8cTLP5knsfk)
Das ist die Ausgabe von diesem Programm:und wird auf einem RP6-Base ausgeführt. Einzige Änderung gegenüber der ersten Version sind die geänderten StopWatch-Werte.Code:#include "RP6RobotBaseLib.h" void eigenefunktion(void) { // testzeile +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (getStopwatch3() < 800) { setLEDs(63); //PORTC |= IO_PC7; //PORTC |= IO_PC5; } else if (getStopwatch3() < 800+800) //testzeile { setLEDs(0); //PORTC &= ~IO_PC7; //PORTC &= ~IO_PC5; } else if (getStopwatch3() < 800+800+800) { setLEDs(63); //PORTC |= IO_PC7; //PORTC |= IO_PC5; } else if (getStopwatch3() < 800+800+800+1000) { setLEDs(0); //PORTC &= ~IO_PC7; //PORTC &= ~IO_PC5; } else setStopwatch3(0); } // testzeile +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ int main(void) { initRobotBase(); setLEDs(0); //DDRC |= IO_PC7 | IO_PC6 | IO_PC6 | IO_PC4 //PORTC &= ~IO_PC7; //PORTC &= ~IO_PC6; //PORTC &= ~IO_PC5; //PORTC &= ~IO_PC4; setStopwatch3(0); startStopwatch3(); while(true) { eigenefunktion(); } return 0; }
Die else-Zweige in den Abfragen werden doch erst ausgeführt, wenn die vorhergehende Prüfung auf "kleiner als" false ergab. "Case" würde mir hier auch besser gefallen...
Gruß
mic
[Edit]
Mit "case" sieht's nicht wirklich besser aus:
Code:#include "RP6RobotBaseLib.h" void eigenefunktion(void) { uint8_t step; uint16_t temp; temp = getStopwatch3(); step = (temp < 800) << 0 \ | (temp < 800+800) << 1 \ | (temp < 800+800+800) << 2 \ | (temp < 800+800+800+1000) << 3 \ | (temp >= 800+800+800+1000) << 4; //writeInteger(step, 2); //writeString_P("\n\r"); switch (step) { case(16-1): setLEDs(32+4); break; case(16-2): setLEDs(0b10010); break; case(16-4): setLEDs(9); break; case(16-8): setLEDs(0); break; case(16): setStopwatch3(0); break; } } int main(void) { initRobotBase(); setLEDs(0); setStopwatch3(0); startStopwatch3(); while(true) { eigenefunktion(); } return 0; }







Zitieren

Lesezeichen