Die LED an PB0 des ATtiny2313 @1MHz soll im Sekundentakt blinken (500ms an, 500ms aus).
Die Zeit soll mit der Verzögerungsfunktion _delay_ms() realisiert werden.
// *** Blinklicht 1.2 (c) Oliver Mezger 19.02.2016
#include <avr/io.h> // Definitionen laden
#include <util/delay.h> // Delay-Bibliothek laden
// Blinklicht mit STK 200 (LED neg. Logik) und ATtiny2313 @1MHz
int main(){// Hauptprogramm
PORTB=1;// L0 aus
DDRB=1;// PB0 als Ausgang
while(1){// Endlosschleife
PORTB &= ~1;// PB0<-0 L0 an
_delay_ms(500);// warte 500ms
PORTB |=1;// PB0<-1 L0 aus
_delay_ms(500);// warte 500ms
}
return0;
}
Die Taktfrequenz des µC im Projekt einstellen, damit _delay_ms() richtig übersetzt wird.
In _delay_ms() nur konstante Zahlen (keine Variablen) verwenden, sonst "explodiert" der Code. Für variable Wartezeiten _delay_ms() einfach in for-Schleife verpacken.
// *** Lauflicht 1.0 (c) Oliver Mezger 5.3.2010#include <avr/io.h> // Definitionen laden#include <util/delay.h> // Delay-Bibliothek laden// Lauflicht mit STK 200 (LED neg. Logik) und AT90S2313int main(){
PORTB=0xff;// alle LED aus
DDRB=0xff;// PB als Ausgangwhile(1){// Endlosschleifeif(PORTB ==0xff)// wenn alle LED aus
PORTB =0xfe;// LED0 anelse
PORTB = PORTB *2+1;// naechste LED
_delay_ms(100);// warte 100ms}return0;}