Hallo, ich habe die Frage in einem anderen Beitrag gestellt, aber da schaut keiner rein, denn die Überschrift sieht anderst aus, egal ich probier es noch ein mal: Bei windows mit µVision programmiere ich einen XC167 Eigenltich möchte ich einfach eine LED ein und aus machen und damit man sie blinken sieht, brauch ich eine Pause dazwischen. Wie kann ich das denn realisieren ohne, dass ich gleich nen Timer mitlaufen lassen muss und so. Gibt es da in C nicht ein Befehl? THX
long int i; LED_EIN for(i=0;i<=0xF0000;i++); LED_AUS for(i=0;i<=0xF0000;i++);
Achtung: Wenn Du die Wartezeit mit einer idle-Schleife implementierst, paß auf, daß der Watchdog nicht zuschlägt! Falls Du ihn nicht deaktiviert hast oder über einen interrupt regelmäßig bedienst, ändere die Schleife: for(i=0;i<=0xF0000;i++) { _srvwdt_(); } Die skizzierte idle-Schleife hat halt den Nachteil, daß Du wirklich nichts anderes in dieser Zeit machen kannst. Benutzt Du ein RTOS oder hast Du nur ein Hauptprogramm mit der klassischen Endlosschleife? Im letzteren Fall kannst Du ja den watchdog regelmäßig bedienen und einen einfachen Zähler mitlaufen lassen. Die LED kannst Du dann aus- / einschalten, wenn ein bestimmter Zählerstand erreicht wird: #define LED_TIMEOUT 0xF0000L sbit LED_PORT = ... sbit LED_PORT_D = ... main() { long int led_tmr = 0L; /* port direction = out */ LED_PORT = 0; LED_PORT_D = 1; for (;;) { _srvwdt_(); led_tmr++; if (led_tmr >= LED_TIMEOUT) { led_tmr = 0L; LED_PORT = !LED_PORT; } /* und hier alles andere */ ... } }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.