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
Gast
#519255
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR 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!
Gast
#519258
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...
Gast
#519260
Schau doch besser direkt im normalen 8051 Tutorial in Kapitel 7, da steht genaueres.
Danke erstmal werd ich mal lesen hoffe das gibt was mit meinem Englisch ^^
Gast
#519286
Asche auf mein Haupt...
Gast
#519293
> Compiler: GCC Meinst du SDCC ? Im Prinzip geht das recht einfach, sehr gut erklärt hier: http://www.8052.com/tutrtc.phtml
Natürlich meinte ich SDCC (ka, wo ich mit meinen Gedanken war, sry)! Danke dir auch hälfer
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?
F_1second wird doch jede Sekunde gesetzt. Damit kannst Du dann im Main eine Variable runterzählen und anzeigen. Peter
Gast
#519469
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.
Gast
#519485
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;
...
}
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
Bitte melde dich an, um einen Beitrag zu schreiben.