Code:#include <avr/io.h> int main () { DDRB = 0x00; // B Eingänge PINB = 0x00; //jeden Eingang benutzen PIN ist ein ausgaberegister!!! nie was reinschreiben! DDRD = 0xFF; // D Ausgänge sieht ok aus PORTD = 0x11; //Standard: D0,D4 gesetzt das auch DDRD = 0xFF; // A Ausgänge erm das register für port A ist DDRA PORTD = 0x00; // dasselbe in grün nicht PORTD sondern PORTA while(1) { if ((!PINB1 & (1<<PINB1)) || ( !PINB2 & (1<<PINB2)) ) // Wenn B1 oder B2 == 0 dann ... // iwie falsch (!(PINB & (1<<PB1)) || !(PINB & (1<<PB2))) { PORTD = 0x00; // Alle B Ports auf 0 PORTB statt PORTD } if ( PINB4 & (1<<PINB4) ) // Wenn B1 == 1 dann ... siehe oben { PORTD = 0x17; //D0,D1,D2,D4 gesetzt } if ( PINB3 & (1<<PINB3) ) // Wenn B1 == 1 dann { PORTD = 0x19; //D0,D1,D4 gesetzt } if ((!PINB0 & (1<<PINB0)) ) // Wenn B0 == 0 dann { PORTD = 0x11; //Standard: D0,D4 gesetzt } if((bit_is_set (PORTD,4))) //2LEDs abwechselnd blinken //Wenn PortD4 gesetzt { PORTA &= ~(1 << 4); //PortD4 auf 0 setzen PD4 statt nur 4 PORTD |= (1 << 5); //PortD5 auf 1 setzen } else { PORTA &= ~(1 << 5); //PortD5 auf 0 setzen PD5 statt nur 5 PORTD |= (1 << 4); //PortD4 auf 1 setzen } } return 0; }
Lesezeichen