mumum
29.12.2008, 17:45
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.
#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.??
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.
#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.??