zu dem hier


Code:

#include <avr/io.h>
//#include <iom88.h>

long i;


#define STATSLED0_ON  (PORTC |= 1<<PC0)
#define STATSLED0_OFF (PORTC &= ~(1<<PC0))
#define STATSLED1_ON  (PORTC |= 1<<PC1)
#define STATSLED1_OFF (PORTC &= ~(1<<PC1))

#define STATSLED2_ON  (PORTC |= 1<<PC2)
#define STATSLED2_OFF (PORTC &= ~(1<<PC2))
#define STATSLED3_ON  (PORTC |= 1<<PC3)
#define STATSLED3_OFF (PORTC &= ~(1<<PC3))

#define SWITCH_LEFT (PINC & 1<<PC6)
#define SWITCH_RIGHT (PINB & 1<<PB4)
#define SWITCH_BACK_LEFT (PINB & 1<<PB6)
#define SWITCH_BACK_RIGHT (PINB & 1<<PB0)




void driveForward(){

	// Motor 1 Forward
	PORTD |= 1<<PD6;
	PORTD &= ~(1<<PD7);
	// Motor 2 Forward
	PORTB |= 1<<PB2;
	PORTB &= ~(1<<PB1);

}

void turnLEFTforward(){

	// Motor 1 stop
	PORTD |= 1<<PD6;
	PORTD |= 1<<PD7;
	// Motor 2 Forward
	PORTB |= 1<<PB2;
	PORTB &= ~(1<<PB1);

}

void turnRIGHTforward(){

	// Motor 1 Forward
	PORTD |= 1<<PD6;
	PORTD &= ~(1<<PD7);
	// Motor 2 stop
	PORTB |= 1<<PB2;
	PORTB |= 1<<PB1;

}

void stop(){

	// Motor 1 stop
	PORTD |= 1<<PD6;
	PORTD |= 1<<PD7;
	// Motor 2 stop
	PORTB |= 1<<PB2;
	PORTB |= 1<<PB1;

}

void driveBackward(){
	
	// Motor 1 backward
	PORTD &= ~(1<<PD6);
	PORTD |= 1<<PD7;
	// Motor 2 backward
	PORTB &= ~(1<<PD2);
	PORTB |= 1<<PD1;
}

void turnLEFTbackward(){
	// Motor 1 backward
	PORTD &= ~(1<<PD6);
	PORTD |= 1<<PD7;
	// Motor 2 stop
	PORTB |= 1<<PD2;
	PORTB |= 1<<PD1;
}

void turnRIGHTbackward(){
	// Motor 1 stop
	PORTD |= 1<<PD6;
	PORTD |= 1<<PD7;
	// Motor 2 backward
	PORTB &= ~(1<<PD2);
	PORTB |= 1<<PD1;
}


int main(){

	DDRD = 1<<PD6 | 1<<PD7;			// PD6 PD7 Output Motor1;
	DDRB = 1<<PB1 | 1<<PB2;			// PB1 PB2 Output Motor2;
	


	DDRC = 1<<PC0 | 1<<PC1 | 1<<PC2 | 1<<PC3;	// PC0 PC1 Output StatusLED 0 & 1 & 2 & 3;

	

	//PORTD &= ~(1<<PD6);
	//PORTD &= ~(1<<PD7);


	// SWITCH_LEFT  	= STATSLED0
	// SWITCH_RIGHT 	= STATSLED1
	// SWITCH_BACK_RIGHT 	= STATSLED2
	// SWITCH_BACK_LEFT  	= STATSLED3

	while(1){


		if( ! SWITCH_RIGHT  && ! SWITCH_LEFT ){
			driveForward();
			STATSLED0_OFF;
			STATSLED1_OFF;
			STATSLED2_OFF;
			STATSLED3_OFF;
		}

	else if(! SWITCH_BACK_RIGHT && ! SWITCH_BACK_LEFT ){
			driveForward();
			STATSLED0_OFF;
			STATSLED1_OFF;
			STATSLED2_OFF;
			STATSLED3_OFF;
		}

	else if( SWITCH_RIGHT  && SWITCH_LEFT ){
			driveBackward();
			STATSLED0_ON;
			STATSLED1_ON;
			STATSLED2_OFF;
			STATSLED3_OFF;
		}

	else if( ! SWITCH_RIGHT  && SWITCH_LEFT ){
			turnLEFTbackward();
			STATSLED0_ON;
			STATSLED1_OFF;
			STATSLED2_OFF;
			STATSLED3_OFF;
		}

	else if( SWITCH_RIGHT  && ! SWITCH_LEFT ){
			turnRIGHTbackward();
			STATSLED0_OFF;
			STATSLED1_ON;
			STATSLED2_OFF;
			STATSLED3_OFF;
		}


	else if( ! SWITCH_BACK_RIGHT  && SWITCH_BACK_LEFT ){
			turnRIGHTforward();
			STATSLED0_OFF;
			STATSLED1_OFF;
			STATSLED2_ON;
			STATSLED3_OFF;
		}

	else if( SWITCH_BACK_RIGHT  && ! SWITCH_BACK_LEFT ){
			turnLEFTforward();
			STATSLED0_OFF;
			STATSLED1_OFF;
			STATSLED2_OFF;
			STATSLED3_ON;
		}
//PORTC = 1<<PC5;
	
//PORTC = 0<<PC5;	
		

	}
}