
Zitat von
Wsk8
Du solltest noch bedenken, dass solche delay-befehle und so bei zu großen werten etwas ungenau werden. Über 5-6s solltest du nicht nehmen. Bei diesen Anwendungen zwar nicht dramatisch, aber wenn es mal genau gehen soll, doch ein wichtiger Faktor.
Sobald ich Interrupts kann, werde ich das mit Timer-Interrupt und sleep ergänzen.
Ist bereits auf eine Lochrasterplatine gelötet, der Chip steckt nur im Sockel - also gut ergänzbar 
Ich denke, ich poste das mal, falls weiter Anfänger nach einem Demoprogramm suchen
Code:
//----------------------------------------------------------------------
#define F_CPU 1000000 // Taktfrequenz des myAVR-Boards
#include <avr\io.h> // AVR Register und Konstantendefinitionen
//----------------------------------------------------------------------
uint16_t weckton ()
{
int i=0;
for (i; i<3000; i++)
{
PORTB=PORTB|(1<<PB2); // us = mikrosekunden ; 200us -> 5000Hz
waitMs(0.8);
PORTB=PORTB&(~(1<<PB2));
waitMs(0.8);
}
waitMs(70);
for (i; i<3000; i++)
{
PORTB=PORTB|(1<<PB2); // 200us -> 5000Hz
waitMs(1);
PORTB=PORTB&(~(1<<PB2));
waitMs(1);
}
waitMs(50);
for (i; i<2000; i++)
{
PORTB=PORTB|(1<<PB2); // us = mikrosekunden ; 200us -> 5000Hz
waitMs(1.5);
PORTB=PORTB&(~(1<<PB2));
waitMs(1.5);
}
return 0;
}
main ()
{
DDRB=0b11110110;
PORTB=0b00011001;
waitMs(500);
PORTB=PORTB&(~(1<<PB4));
while(true) // wichtig, dass Controller mehrmals if-abfragt!!!
{
if(!(PINB&(1 << PB0))) // Wenn Taster1 gedrückt, dann
{
PORTB=PORTB|(1<<PB1); // Status-LED: 2 min
for (int j=0; j<24;j++) //24* 5sek = 2Min (*10=20 min)
{
waitMs(6000); // 1000ms *60 sek -> min -> *2 min (6sek ~ 5sek laut AVR)
// waitms schafft nur 64K Zyklen, je nach Taktung zb. 30 sek -> Schleife
}
while (true)
{
weckton ();
}
}
if(!(PINB&(1 << PB3))) // Wenn Taster3 gedrückt, dann
{
PORTB=PORTB|(1<<PB4); // Status-LED: 5 min
for (int g=0; g<60;g++) //600* 5sek = 50Min (60*5 = 5 min)
{
waitMs(6000); // 1000ms *60 sek -> min -> *20 min (6sek ~ 5sek laut AVR)
// waitms schafft nur 64K Zyklen, je nach Taktung zb. 30 sek -> Schleife
}
while (true) //5 min
{
weckton ();
}
}
}
}
Danke, Micha 
Mfg
Lesezeichen