Timer0 in Sekundentakt
-
Hallo,
hab ein kleines Problem, ich denke für die Profis sollte das kein Problem sein.
Ich möchte einen Timer programmieren, der alle eine Sekunde ein impuls ausgibt, also bis 1000ms zählt. Ich hab es zur Zeit so gemacht:
TH0 =0xFA;
TL0 =0xCA;TF0=0;
ms++;
if(ms==1000)
{
ms=0;
s++;
if(s==60) //die s, min nur zur Testzwecken
{
s=0;
min++;printf("%d,%d,%d",min,s,ms);
Mein Problem ist nun, wie stelle ich den Timer ein, so das er natürlich sehr genau wird. Ich arbeite mit einen 12MHz Controller. Ich weiß nicht mehr wie das wahr, mit TL0 und den TH0 ?
mfg ahl
-
Wenn du einen Timer in einem C-Code haben möchtest, dann nimm doch POSIX-Timer.
Ich verstehe jetzt dein Problem nicht so genau.
-
ahl schrieb:
Mein Problem ist nun, wie stelle ich den Timer ein, so das er natürlich sehr genau wird. Ich arbeite mit einen 12MHz Controller. Ich weiß nicht mehr wie das wahr, mit TL0 und den TH0 ?
Und um welchen Controller handelt es sich genau? Wo gibt's das Usermanual dazu? Welchen Compiler verwendest du? Willst du mit Interrupts arbeiten? ...
Diese Informationen sind notwendig um zu wissen wie die SFRs des Timers belegt werden müssen.
MfG
-
es handelt sich um ein Atmel T89C51CC02, er arbeitet mit 12MHZ.
Ich wollte es so einfach wie möglich machen. Ich brauche den Timer für eine Frquenzmessung (z.B. 1-1000Hz). Ich weiß dabei nicht mehr genau, wie das mit dem TH0 und TL0 war.
-
Google -> Suchbegriffe: Atmel T89C51CC02
Erstes Ergebnis liefert dir eine wunderbare Seite mit Beispielprogrammen für den Keil-Compiler.
MfG
Edit: Die Beispiele werden wohl nur mit dem Keil-Compiler funzen, da für die Interrupts nicht-ANSI-C Code verwendet wird.
-
Mein Problem liegt mehr darin, dass ich nicht genau weiß mit welchen Werten ich den Timer vorladen soll, also TH, TL, damit 1000ms auch 1000ms entsprechen.
-
Diese Frage wird das Usermanual aber eher klären als ein C-Forum.