Timer 0 programmierung bei 8051

OP #257116
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
Angehängte Dateien:
#257117
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.
OP #257118
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
Gast #257119
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.