Delay Funktion

Gast #2515
Lesenswert?

Erstmal Hallo alle zusammen!
Ich habe ein Problem mit dem Timer Funktionen unter einem 8051 
Mikrokontroller!
Ich arbeite mit dem Keil Compiler und wollte eine richtige Delay 
Funktion in mein Programm implementieren, der man als Parameter die 
Wartezeit (z.B. in ms oder us) übergibt.
Ich hab ne ganze Weile im Internet nach einer guten Lösung gesucht und 
auch was gefunden, und zwar auf der Keil Homepage (siehe Anhang).
Doch jetzt haben die eine Berechnung ganz am Anfang des Files

#define TIMER0_COUNT 0xDC11 /* 10000h - ((11,059,200 Hz / (12 * FREQ)) - 
17) */

die ich nicht kapiere.

Kann mir mal jemand erklären warum 10000h - ....... ?????????????
Angehängte Dateien:
Gast #2517
Lesenswert?

Wie wäre es damit?

//---------------------------------

unsigned int Set_1ms (unsigned int new_time)
{
  return(Clock_1ms + new_time);
}

bit Check_1ms (unsigned int time)
{
  return((time - Clock_1ms) & 0x8000);
}
//-------------------------
Die Variable Clock_1ms zählst Du im TimerInterrupt hoch.
Die Abfrage sieht dann so aus:


unsigned int Zeit=Set_1ms(150);

 if (Check_1ms(Zeit))
   {
     // mach etwas....
     Zeit = Set_1ms(150);
   }

//--------------------------------

Das hat den Vorteil, das Dein Polling nicht komplett von angehalten 
wird. Im Gegensatz zu einer Warteschleife...

Bis dann,
Ingo!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren