www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer 0 programmierung bei 8051


Autor: Jörn Schäfer (muetzi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Bin noch Neuling bei der µC Programmierung, gehe zwar in die
Abendschule, aber dort wird uns aus Zeitmangel einfach zu wenig
erklärt.

Mein Problem:

Das Prog ist für einen 50c517a geschrieben, typisches Anfängerprog
halt.

Ich glaub, ich kapier grundsätzlich nicht, wie ein Timer arbeitet.
Das mit den Initialisierungen ist mir klar, aber warum blinken die Leds
an Port1 1s lang, 1s nicht, 1s wieder,...

Wäre nett, wenn ihr für einen Anfänger mal wieder etwas Gedult
aufbringen könntet!

Danke im voraus,

Gruß Jörn

Autor: Karl heinz Buchegger (heinzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist Dir klar wie die 1 sek zustande kommt?

Das Blinken ist leicht erklaert:
Zustaendig dafuer ist die Anweisung
   P1=~P1;
und da wiederum das '~'
Der ~ - Operator dreht einfach alle Bits um.
Enthaelt also P1 (und damit das Port) den binaeren Wert

      00100101

dann macht ~P1

      11011010

daraus. Jedesmal, wenn Dein Pgm also auf

      P1 = ~P1;

stoesst, werden alle Bits einfach umgedreht und damit werden
die Leds ein bzw. ausgeschaltet.

Autor: Jörn Schäfer (muetzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl,

danke für die schnelle Antwort!
Jetzt ist mir dises Phänomen klar!
Am Anfang steht das Port auf 0xFF,dann nach ~ wieder auf 0x00, usw.
Naja, aller Anfang ist halt schwer!

Ich hatte vergessen zu erwähnen, wegen der Zeit.
Dies ist mir auch zum Glück auch klar (Hoff ich halt)!


In Kurzfassung:
Jedesmal, wenn der Timer einen Interrupt auslöst (nach 250µs),
wird diese Basis bis 4 hochgezählt = 1ms.
dann wird diese Basis mit der Var. tsek bis 1000 gezählt:
Ergebnis: 1s

Der Timer löst zwar alle 250µs durch den Reload-Modus die ISR aus, aber
solange die Bedingungen nicht erfüllt sind, wird auch der Port1 nicht
invertiert.

Schätz einmal, das ist so etwa richtig.

Jetz kann ich hoffentlich mein Protokoll für die Schule RICHTIG fertig
schreiben.

Gruß Jörn

Autor: Norman Hempel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich bin auch gerade in meinen Anfängen der µC Programmierung, ebenso
mit dem 8051. Mein Problem setzt früher an. Könnte mir jemand ein
kurzes Tutorial für einen simplen Timer geben, der auf eine Sekunde
genau zählen kann?

gruß Norman

Autor: Norman Hempel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Entschuldigung. Ich habe gerade erst den Anhang in Jörgs ersten Beitrag
gesehen (Ich bin heute zum ersten mal hier). Ich denke das wird mir
erstmal helfen.

gruß Norman

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.