mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT89C51ED2 - Timer


Autor: Daniel W. (danny84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo kann mir jemand helfen!
Ich habe ein Programm geschrieben, nun will ich eine Uhr(Zeit´) einbauen 
die abläuft! Leider habe ich garkeine Ahnung wie ich das mit den Timern 
machen muss.

Chip: AT89C51ED2
Compiler: GCC

Welchen Timer solch dafür nehmen?
Wie spreche ich in den Timer in C an?

Das man den Timer durch den Quarz zählen läßt und die Zeiten ausrechen 
muss! Hab ich einwenig verstanden, aus dem Tutorial hier im Forum.

Würde mich freuen wenn jmd bereit ist mir zu hälfen.
Kommentare die nicht Hilfreich sind  bitte für sich behalten.

mfg danny

Autor: hälfer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Uhr

Da ist alles drin, was du brauchst. Les dir das mal in Ruhe durch und 
wenn dann immer noch Fragen bestehen, wird dir mit Sicherheit hier im 
Forum geholfen.
Ich würde dir (genau wie das Tutorial) zum CTC Mode raten. Welcher Timer 
das kann steht in deinem Datenblatt. viel Spass!

Autor: hereinspaziert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke mal, dass das AVR-Tutorial ihm bei nem 8051er nur begingt 
helfen wird.

Schau mal auf www.8052.com/tutorial.phtml, im Kapitel 8052 Tutorial wird 
da ein wenig erklärt. Ansonsten hilft das Datenblatt oder GOOGLE...

Autor: hereinspaziert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch besser direkt im normalen 8051 Tutorial in Kapitel 7, da 
steht genaueres.

Autor: Daniel W. (danny84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal werd ich mal lesen hoffe das gibt was mit meinem Englisch 
^^

Autor: hälfer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Asche auf mein Haupt...

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Compiler: GCC

Meinst du SDCC ?

Im Prinzip geht das recht einfach, sehr gut erklärt hier:

http://www.8052.com/tutrtc.phtml

Autor: Daniel W. (danny84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich meinte ich SDCC (ka, wo ich mit meinen Gedanken war, sry)!

Danke dir auch hälfer

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Daniel W. (danny84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Peda ;)

Hab aufjedenfall soweit alles verstanden auf deiner Seite.

Was muss ich in deinem C beispiel noch verändern nur den XTAL eintragen?
Aber wie kann ich jetzt eine Ausgabe der Zeit machen?
Und muss ich viel umändern um die Zeit von zb. 3 min runterlaufen zu 
lassen?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
F_1second wird doch jede Sekunde gesetzt.

Damit kannst Du dann im Main eine Variable runterzählen und anzeigen.


Peter

Autor: Joe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anbei mal eine Übersetzung für den SDCC Preprozessor aus dieser 
Erklärung:

http://www.8052.com/tutrtc.phtml

Brauchst nur noch die Timerwerte eintragen und es sollte 1 Sekunde 
herauskommen.

Vielleicht einfacher nachzuvollziehen.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim ED2 geht aber auch MACHINE_CYCLE = 6, je nach dem ob du x2 Mode 
verwendest.

Die Timer initialisierung sieht dann so aus:

TMOD = 0x01;              // Timer 0 Modus 1 = 16 BIT Timer
ET0 = 1;                  // Enable Timer 0 Interrupt
EA = 1;                   // Enable All BIT = 1
TR0 = 1;                  // Timer 0 starten

Dann in der ISR:

void timer_0_isr (void) interrupt 1  {
  TH0 = TIMER_RELOAD_H;   // reload Timer 0
  TL0 = TIMER_RELOAD_L;
...
}

Autor: Daniel W. (danny84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:
> F_1second wird doch jede Sekunde gesetzt.
>
> Damit kannst Du dann im Main eine Variable runterzählen und anzeigen.
>
>
> Peter

okay danke.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.