Es gibt ja mehrere Arten Ausgänge anzusteuern aber bei mir machen die alle was andres.
1. PORTB |= (1<<PB4);
2. PORTB &= ~_BV(PB4);
Bei diesem Code habe ich die 2. Variante verwendet. Wenn ich bei dem gleichen Programm die 1. Variante anwende, dann gehen nach 50 mal Durchblinken meine LED`s nicht mehr aus.
Code:#include <avr/io.h> #define F_CPU 1000000UL // 1 MHz #include <util/delay.h> int main(void) { DDRB = (1<<DDB0) | (1<<DDB1) | (1<<DDB2) | (1<<DDB3); // PB0, PB1, PB2 Ausgänge int leuchtzeit =200; // Blinkzeit int i=1; while (i<50) { // PORTB &= ~_BV(PB0); _delay_ms(leuchtzeit); PORTB |= _BV(PB0); PORTB &= ~_BV(PB1); _delay_ms(leuchtzeit); PORTB |= _BV(PB1); PORTB &= ~_BV(PB2); _delay_ms(leuchtzeit); PORTB |= _BV(PB2); i++; } return(0); }
Was ist der Unterschied zwischen 1. und 2.??







Zitieren
Lesezeichen