Forum: Mikrocontroller und Digitale Elektronik Timer 0 programmierung bei 8051


von Jörn S. (muetzi)


Angehängte Dateien:

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

von Karl heinz B. (heinzi)


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.

von Jörn S. (muetzi)


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

von Norman Hempel (Gast)


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

von Norman Hempel (Gast)


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

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.