Forum: Mikrocontroller und Digitale Elektronik (8051) interrupt und Timer


von Acid! (Gast)


Lesenswert?

Hi leute
bring mir grad bisschen assambler bei. Hab das Buch von Rolf Klaus zu 
hilfe chacke leider nicht wirklich was in sachen Interrupt und Timer. 
Ich hab ne Aufgabe aus dem Buch hoffe ihr könnt mir helfen und mir 
vlleicht zeigen wie man mit dem Timer programmiert.

Ein Grenztaster liefert Eingangsimpulse. Wird er innerhalb von fünf 
Sekunden dreimal betätigt, liegt eine Störung vor. Im Normalbetrieb 
leuchtet eine grüne Lampe, im Störfall eine rote. Die Störung muss mit 
einer Taste quittiert werden.

So also wird der Taster jetzt 5 mal in 5 sek gedrückt, muss ich setb 
lrot
,dass ist mir noch klar. Aber ich habe Null ahnung wie ich den Timer 
programmier und in diesen 5 sek soll ja der Grenztaster abgefragt 
werden.

Hättet ihr nen Beispiel für mich oder eigene Ideen?

MFG Acid

von Bernhard B. (schluchti)


Lesenswert?


von Acid! (Gast)


Lesenswert?

Muss dir sagen mein englisch ist nicht das beste.

von Bernhard B. (schluchti)


Lesenswert?

Wenn du vor hast dich intensiv mit Mikrocontollern auseinanderzusetzen, 
dann wirst du früher oder später in den sauren Apfel beißen müssen um 
deine Englischkenntnisse zu verbessern. Jeder Controller hat ein paar 
Eigenheiten, die man meist nur durch das Lesen von Datenblättern 
herausbekommt.
Ich kann dich aber beruhigen, die meisten Datenblätter und englische 
Tutorials sind in der Regel relativ einfach verfasst.

von Stephan H. (stephan-)


Lesenswert?

Laß einen Timer laufen, zähle Sekunden mit und polle den Port.
Wenn er 3 Ergebnisse in 5 sekunden hat, schalte die Lampe an.
Für Timer braucht man zB.: TMOD, IE, TCON

von Stephan H. (stephan-)


Lesenswert?

Es passt ohne Anpassung sicher nicht für Dich gleich so wie es ist, aber 
du willst ja lernen. Passe den Timer an Deinen Quarz an.
Du brauchst auch noch ne Zählvariable  für die ISR.

    MOV  tmod,#01h  ; Timer 0 16 Bit
    MOV  th0,#0EDh  ;
    MOV  tl0,#0FFh  ; Initialisaierung 7ms bei 11.059 MHz
    MOV  ie,#82h    ; Int für global und T0
    SETB  TR0    ; Timer 0 Run

Dann musst du nur noch in die ISR springen, den Port lesen, etwas 
addieren und dann ist es fast geschafft.

von Tom (Gast)


Lesenswert?

zu beachten ist, dass der vorteiler zu den verschiedenen betriebsarten 
der timer das taktsignal durch 12 teilt.

Gruß
Tom

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
Noch kein Account? Hier anmelden.