Wir kommen weiter. Versuche mal den Quellcode von mir aus dem obrigen Beitrag.
Wir kommen weiter. Versuche mal den Quellcode von mir aus dem obrigen Beitrag.
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
meine (damen) und herren, herr tinsen darf einen ersten erfolg verbuchenwenn ich drueck wirds rot ^^
![]()
naja sagen wir teilerfolgund im terminal "es wurde eine taste gedrückt"
#include "asuro.h"
int main()
{
Init();
int i=0;
for (i=0;i<100;++i)
{
BackLED (OFF, ON);
Msleep(200);
BackLED (ON, OFF);
Msleep(200);
}
BackLED (OFF, OFF);
while (1); //ansonsten endlos
return 0; //wird nicht erreicht
}
das probiere ich gerade mal ! msleep kriegt er nur nicht hin ! mach ich nur sleep gehen beide leds an und bleiben an
ich bin kurz vorm verstaendniss![]()
So vielleicht?
(ungetestet)Code:#include "asuro.h" int main(void) { void Msleep(unsigned int dauer) // dauer in millisekunden { if(dauer) while(dauer--) Sleep(72); // Sleep(72) dauert 1 ms } int i=0; Init(); for (i=0;i<100;++i) { BackLED (OFF, ON); Msleep(200); BackLED (ON, OFF); Msleep(200); } BackLED (OFF, OFF); while(1) {StatusLED(RED); Msleep(20); StatusLED(OFF); Msleep(200);} //ansonsten endlos return 0; //wird nicht erreicht }
Spannenderweise kann ich das auch mit meiner v2.3er-Version fehler- und warnungsfrei kompilieren, weil die neue Funktion Msleep() lokal in main() ist? Wieder was gelernt.
Gruß
mic
Geändert von radbruch (20.10.2011 um 14:07 Uhr) Grund: unsigned int ist besser ;)
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
ja so lüppt das ! versteh den void krams nicht ... sonst alles ok !
int main(void)
{
void Msleep(unsigned int dauer) // dauer in millisekunden
{
if(dauer) while(dauer--) Sleep(72); // Sleep(72) dauert 1 ms
}
Das wird schon.
"void" ist nur ein Platzhalter für "nichts". Die Funktion main() benötigt keinen Parameter (nichts zwischen den Klammern) und liefert einen "int"-Wert an die aufrufende Funktion zurück. Darum das olbigatorische return(0); am Ende jedes Programms. Da aber bei den Microkontrollern kein übergeordnedes Betriebssystem existiert endet ein return irgendwo im Nirwana des Kontrollerspeichers.
Die neu definierte Funktion Msleep() gibt keinen Wert zurück, deshab das "nichts" vor der Definition. Allerdings benötigt sie einen vorzeichenlosen 16-Bit-Parameter "unsigned int" und auf den wird innerhalb der Funktion mit Namen "dauer" zugegriffen.
http://www.mikrocontroller.net/articles/C
http://www.mikrocontroller.net/artic...R-GCC-Tutorial
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Alles klar danke !!! lesen bildet uebrigenshabs auch mal probiert und bin echt was weiter gekommen ^^
hier mal mein erstes Programm
und danke nochmal fuer deine geduld ! danke danke#include "asuro.h"
int main(void)
{
Init();
int zahler;
while(1)
{
if (PollSwitch()==0)
{
MotorDir(FWD,FWD);
MotorSpeed(200,200);
StatusLED(YELLOW);
FrontLED(ON);
BackLED(OFF,OFF);
SerWrite(" ALLES SUPER!",20);
}
else
for (zahler=0;zahler<15;zahler++)
{ MotorDir(RWD,RWD);
MotorSpeed(100,200);
StatusLED(RED);
FrontLED(OFF);
BackLED(ON,ON);
SerWrite(" AUA!",11);
}
}
return (0);
}
Lesezeichen