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