Timer Programmieren in C

Gast #2005889
Lesenswert?

Hallo,

Ich muss in einem Programm eine Wartezeit von 5-10 Minuten 
Programmieren. Es sollte so ablaufen, wenn Fehler auftritt warte 5 
Minuten wenn dann der Fehler immer noch ansteht dann mache was. Jetzt 
weiß ich weder wie man einen Timer in C Programmiert noch ob es auch 
anders geht. Habe schon ins Datenblatt vom Controller geschaut doch 
daraus werd ich nicht schlau. Ich benutze einen Atmel at89c51ac3 und 
habe den Ausschnitt aus dem Datenblatt über Timer angehängt. Kann mir 
vielleicht jemand helfen und sagen wie ich einen Timer Programmiert 
sodass ich eine Wartezeit in meinem Programm einfügen kann? Wäre sehr 
Dankbar
Mfg
Christian
Angehängte Dateien:
#2006100
Lesenswert?

Hier mal ein Beispiel für nen 1s Timer:
1
#include <reg51.h>
2

3
typedef unsigned char u8;
4

5
//#define  XTAL  12e6
6
#define  XTAL  11.0592e6
7

8
#define TH0_RELOAD  (XTAL / 12 / 256 * 50e-3)
9
#define TH0_REMAIN  ((TH0_RELOAD - (u8)TH0_RELOAD) * 20 + 0.5)
10

11
bit one_second;
12
u8 count_50ms;
13

14

15
void t0_init( void )
16
{
17
  TMOD = 1;  // T0: Mode 1 (16 Bit)
18
  TR0 = 1;
19
  ET0 = 1;
20
}
21

22

23
void t0_int( void ) interrupt INT_T0
24
{
25
  TH0 = -TH0_RELOAD;
26

27
  if( count_50ms <= (u8)TH0_REMAIN )  // handle remainder
28
    TH0--;
29

30
  if( --count_50ms )
31
    return;
32

33
  count_50ms = 20;    // 1sec = 20 * 50msec
34
  one_second = 1;
35
}
36

37

38
void main( void )
39
{
40
  t0_init();
41
  EA = 1;
42
  for(;;){
43
    if( one_second ){
44
      one_second = 0;
45
      P2++;
46
    }
47
  }
48
}


Peter
Gast #2006121
Lesenswert?

Welches Tutorial?
Vom Prinzip her weiß ich ja wie der Timer funktioniert. Ich kenn nur 
nicht die Syntax wie ich das für den at89c51ac3 in C eingeben muss. Mit 
welchen Befehl kann ich den Timer starten? Wie kann ich die Zeit 
einstellen und wie kann ich ein Bit setzen wenn der Timer seine Zeit 
erreicht hat?
Die Parameter sind doch von Controller zu Controller unterschiedlich 
oder?
#2006318
Lesenswert?

@  Christian (Gast)

>Vom Prinzip her weiß ich ja wie der Timer funktioniert. Ich kenn nur
>nicht die Syntax wie ich das für den at89c51ac3 in C eingeben muss.

Ssprich, du kannst gar nicht programmieren. Dann musst du das lernen. 
Und NEIN, das geht nicht mal fix in 10 Minuten.

> Mit
>welchen Befehl kann ich den Timer starten? Wie kann ich die Zeit
>einstellen und wie kann ich ein Bit setzen wenn der Timer seine Zeit
>erreicht hat?

Steht im Datenblatt, welche Bit man in welchen Rgistern setzen muss.

>Die Parameter sind doch von Controller zu Controller unterschiedlich
>oder?

Ja.

MFG
Falk

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