Hallo

Bild hier  
(http://www.youtube.com/watch?v=8cTLP5knsfk)

Das ist die Ausgabe von diesem Programm:
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;
}
und wird auf einem RP6-Base ausgeführt. Einzige Änderung gegenüber der ersten Version sind die geänderten StopWatch-Werte.

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;
}