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 - ....... ?????????????
Hi, Was die berechnung soll, weis ich auch nicht, aber was haltest du von dieser Warteschleife(siehe Anhang)?
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!
Hallo, ich möchte die eigentliche Frage beantworten: 10000h deshalb, weil der Timer im 8051 raufzaehlt und nach 0FFFFh seinen Ueberlauf hat. Jens
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.