Hallo @all!! Ich hätte ein paar fragen zum timer die mir ältere forum-beiträge nicht konkret beantworten können... Ich hab meinen Timer0 (AT89S8252, 12Mhz, 8051er) im 8-Bit-Modus laufen. Nach 12 oder 13 mal timer0 Overflow-bit überprüfen/löschen/warten auf nächsten overflow soll eine ca. 150 - 160ms lange schleife erzeugt werden. - Wenn das overflow-Bit hardwaremäßig gesetzt wird hält mein timer automatisch an oder muss ich ihn mit clr TR0 wieder stoppen? - hab ich beim initialisieren des timers alles richtig gemacht - vor allem nichts vergessen??? set_timer: mov tmod,#00000000b ;--- timer-operation, 8Bit timer mov tcon,#00000000b ;--später wird der timer gestartet.... setb 8ch (TR0 = 1) ;-- ....und gewartet, bis das Overflow-bit gesetzt wird waiting_for_overflow: jnb 8dh,waiting_for_overflow ;-- jetzt wird das Overflow-bit geslöscht, eine variable dekrementiert (von 12h bis 0h), und die timerschleife erneut durchlaufen ???!! (ich weiß dass die SFRs tmod und tcon nach einem reset schon 00h sind aber dass ich es gleich richtig lerne.....) -was ist der auto-reload-timer (im tmod-register bit 0 und 1) (ist das villeicht das was ich oben meine? dass er wieder von 0 anfängt zu zählen bis 255( 256??) um dann wieder bei 0 anzufangen??) -findet der überlauf ÜBERHAUPT schon bei 256 statt??? (Im datenblatt steht noch was von 5 Bit prescaler)??? Ich bin dankbar für jede antwort!!!! P.S. Hab schon einiges im Datenblatt gefunden aber andere dinge eben nicht, bin auch nicht so der engländer.... :-) habt verständniss:-)) MFG Burt
Der Überlauf findet bei 255 statt (der zählt von 0-255) und nach 255 fängt der automatisch wieder bei 0 an.
Je nach Mode zählen T0 oder T1 8, 13 oder 16 Bit breit. Im Reload-Mode zählt er nur 8 Bit, da das High-Byte als Reload-Wert werwendet wird. Dieser Mode wird hauptsächlich für die UART verwendet. Und natürlich laufen sie nach dem Overflow weiter, ansonsten wäre ja keine exakte Zeitmessung möglich. Peter
Danke für die Antworten!!! -Was macht dann der Timer im Reload modus genau???? wie kann ich eigentlich eine Schleife berechnen mit dem Timer0?? hab im DB was gelesen von teilen durch 12 (bei 12Mhz, ein cycle = 1us) danke, Burt
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.