mikrocontroller.net

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


Autor: Acid! (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard B. (schluchti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Acid! (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss dir sagen mein englisch ist nicht das beste.

Autor: Bernhard B. (schluchti)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tom (Gast)
Datum:

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

Gruß
Tom

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.