vieleicht klappt folgendes
grussCode:#include <avr/io.h> #include <util/delay.h> #include <stdint.h> int main () { uint8_t start=1; DDRB = 0x00; // B Eingänge DDRD = 0xFF; // D Ausgänge PORTD = 0x00; //Standard: D0,D4 gesetzt 0x11 DDRA = 0xFF; // A Ausgänge PORTA = 0x00; // pb0 , pb1, pb2 oefner, also geben sie immer ne eins aus while(1) { if (PORTB==0b00000101) /*|| !(PORTB==0b00000011)*/) // Wenn B1 oder B2 == 0 dann ... { PORTD = 0x00; // Alle D Ports auf 0 start=1; } if ( PORTB==0b00010111 ) // Wenn B4 == 1 dann // die letxten 3 einser, weil die oefner immer einser liefern solang sie nicht betaetigt sind { PORTD = 0x17; //D0,D1,D2,D4 gesetzt } if ( PORTB==0b00001111 ) // Wenn B3 == 1 dann { PORTD = 0x19; //D0,D1,D4 gesetzt } if (PORTB==0b00000110 ) // Wenn B0 == 0 dann { PORTD = 0x11; //Standard: D0,D4 gesetzt start=0; } if(start==0) { if((bit_is_set (PORTD,4))) //2LEDs abwechselnd blinken //Wenn PortD4 gesetzt { PORTD &= ~(1 << PD4); //PortD4 auf 0 setzen PD4 statt nur 4 PORTD |= (1 << PD5); //PortD5 auf 1 setzen _delay_ms(40); } else { PORTD &= ~(1 << PD5); //PortD5 auf 0 setzen PD5 statt nur 5 PORTD |= (1 << PD4); _delay_ms(40); } } } return 0; }






Zitieren
Lesezeichen