Hallo, ich habe ein Problem, und zwar soll ich ein Programmcode in Assembler über folgendes Verfahren schreiben: "Mittels Zeitschleife und Interrupt soll eine Frequenz gemessen werden. Die Impulse, die innerhalb einer Sekunde an Port 3.4 anliegen, sollen mit dem Timer gezählt werden und an der zweistelligen 7-Segment-Anzeige(am P2) als Dezimalzahl ausgegeben werden. Die beiden 7-Segment-Anzeigen sollen im Multiplexbetrieb angesteuert werden. Die linke Anzeige wird mit P3.6 frei geschalten, die rechte Anzeige mit P3.7 frei geschalten." In der Regel sollten wir immer so beginnen: INCLUDE 5131.INC code at 0 SJMP init Leider habe ich nicht sehr viel Ahnung wie bzw was ich alles in den Programmcode schreiben soll, und frage deshalb ob mir hierbei jemand helfen kann. Mfg xxro
Ich empfehle Dir, ersteinmal mit einer Ablaufbeschreibung zu beginnen. 1. Tue dies 2. Tue das 3. Etc. 4. Wenn <Bedingung> gehe zu Schritt 2. 5. Etc. Du hast hier einen Sonderfall. Nämlich, das ein Vorgang, das Multiplexen der Anzeige ständig ablaufen soll. Und das ein Vorgang, nämlich das feststellen des letzten Zählerstandes zu einem bestimmten Zeitpunkt ablaufen soll. Im Ergebnis wirst Du 3 Ablaufbeschreibungen erstellen. Kläre auch ersteinmal ob Du grundsätzlich mit der Idee des Multiplexing vertraut bist und mit der Ereigniszählung während eines vorgegebenen Zeitraumes.
Hilfreich sind sicher auch die Artikel http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer und http://www.mikrocontroller.net/articles/Multiplexen Dabei fällt mir ein: Falls Dein Prozessor kein AVR ist, dann kannst Du aus diesen Artikeln aber wenigstens die Grundideen abschauen.
Also du willst dass dir jemand das Programm schreibt, und dann sagst du noch nichtmal den Controller dazu? Assembler ist ja nicht gleich Assembler, den Controller müsste man schon wissen. Aber andere Frage: Warum sollst du sowas machen? Wer verlangt das von dir? Und warum?
Peter E. schrieb: > SJMP init Mit 'nem Jump auf "init" sind Dein Prozessor und Du "eigentlich" bereits fertig - ohne Chance darauf, sich nach einem geregelten Return wirklich sinnvollen Aufgaben zu widmen. Peter E. schrieb: > Mittels Zeitschleife und Interrupt soll eine Frequenz gemessen werden. Beste Vorraussetzungen, ein Schätzeisen zu kreieren. Es sei denn, man opfert außerordentliche Anstrengungen, die Zeitschleife um die ihr mehr oder weniger periodisch von den Dauer der Interrupt-Behandlungen gestohlenen Zeit zu korrigieren... ...während es sich der Timer des Prozessors von Hartz IV Ruhestrom versorgt auf dem Kristall gemütlich macht. Peter E. schrieb: > Leider habe ich nicht sehr viel Ahnung Gar keine Sorge - hier schwebt hier nach der exakten Beschreibung inklusive der Nennung von P2, P3.4, P3.6 und P3.7 sicher schon die komplette Schaltung nebst Code und Simulationsergebnissen in 3D und Farbe vor dem geistigen Auge... ;-)
Nein, ich verlange nicht, dass mir jemand den Text schreibt und ich währenddessen faul auf dem Sofa sitze, lediglich hilfe beim bewältigen der Aufgabe. Das ist eine Abituraufgabe.
Peter E. schrieb: > Nein, ich verlange nicht, dass mir jemand den Text schreibt und ich > währenddessen faul auf dem Sofa sitze, lediglich hilfe beim bewältigen > der Aufgabe. > Das ist eine Abituraufgabe. Das Problem ist (momentan) eher darin zu sehen, dass diese Aufgabenstellung schon einiges an Voraussetzungen erfordert. Da sind ein paar Teilsysteme erforderlich, von denen man über jedes einzelne davon schon einen halben Roman schreiben könnte. Wenn du so gar keine Ahnung hast, dann wirds schwer dir da zu helfen. Kriegst du denn von der Aufgabenstellung überhaupt nichts alleine hin? Was ist mit der Anzeige? Die ist eine in sich abgeschlossene Einheit. Kannst du selbst die entsprechenden Multiplex-Routinen aufsetzen und schreiben? Wenn das eine Abituraufgabe ist, dann solltest du ja eigentlich in der Lage sein, zumindest die einzelnen Teilprobleme relativ problemlos zu bewältigen. Wenn es beim Zusammenführen der Einzelteil bzw. der Einzel-Strategien Schwierigkeiten gibt, dann wäre das soweit ok und man könnte darüber reden. Aber mit so gar nichts in der Hand ....
:
Bearbeitet durch User
Das Verb 'schalten' ist ein regelmäßiges Verb, das sein 'a' behält: schalten – schaltete – geschaltet. Im deutschländischen und im deutschschweizerischen Standarddeutsch heisst das Partizip also 'geschaltet' und nicht 'geschalten', weil 'schalten' im Präteritum nicht zu 'schielt' mutiert.
Logiker schrieb: > Falls Dein Prozessor kein AVR ist Peter E. schrieb: > Port 3.4 > P3.6 > P3.7 > INCLUDE 5131.INC ^^^^ Peter E. schrieb: > lediglich hilfe beim bewältigen > der Aufgabe. > Das ist eine Abituraufgabe. Und schon angefangen? Was hast Du schon? Gruß Jobst
Auf welchen Controller deutet "5131" denn hin? Etwa LP-5131, das ist doch eher son Linux getriebener Mini-PC...
:
Bearbeitet durch User
Hab hier mal die PAP´s dazu erstellt, kann mal jemand ein Blick darauf werfen ob es soweit stimmt? Danke im vorraus
Meiner Auffassung nach ist dieser "erste" Ablaufplan zu konkret, zu nah an dem eigentlichen Code, um erkennen zu können, was Du tust. Man sieht nur wie Du etwas tust, in ganz konkreten Zuweisungen, aber ohne Schaltplan etc. kannst nur Du verstehen, was da passiert. Z.B. im ersten Diagramm steht: "Setze P3.6 auf f0". Was aber soll das bewirken? Das ist aber nur meine Meinung. Wenn Dir das hilft dann mach es so. Nur das ich mir das nicht im Detail anschaue, weil ich so tief ja garnicht in Dein Projekt einsteigen will um zu beurteilen, das "Setze P3.5 auf f0" irgendwas sinnvolles tut. Es wäre auch nett wenn Du keine Handskizzen fotografierst sondern sowas mit einem Programm machst, Etwa "Dia". Siehst Du hier: http://dia-installer.de/ Das ist viel leichter lesbar, kann weiterverwendet werden und gibt kleiner Dateien (als PNG).
Logiker schrieb: > Meiner Auffassung nach ist dieser "erste" Ablaufplan zu konkret, zu nah > an dem eigentlichen Code, um erkennen zu können, was Du tust. Man sieht > nur wie Du etwas tust, in ganz konkreten Zuweisungen, aber ohne > Schaltplan etc. kannst nur Du verstehen, was da passiert. > > Z.B. im ersten Diagramm steht: "Setze P3.6 auf f0". Was aber soll das > bewirken? In der Aufagbenstellung steht, dass P3.6 bzw. P3.7 die Stellentreiber der 2-stelligen 7-Segment Anzeige sind. Aber ich geb dir in der Sache an sich recht. Es gibt keinen Grund im PAP da nicht einfach "Schalte die linke Anzeige ein", bzw. "Schalte die rechte Anzeige ein" hinzuschreiben. Auf die Art liest sich das PAP dann auch viel besser. Selbiges mit den R-Registern. Auch das sind Details, die eigentlich im PAP nicht so brennend interessant sind. EIn PAP soll ja nicht einfach nur der Programmtext in anderer Form sein, sonder in erster Linie die zugrundeliegende Logik veranschaulichen. DIe Logik ist aber unabhängig davon, wo genau jetzt die einzelnen Stellentreiber abgeschlossen sind oder welches R-Register jetzt die Einer aufnimmt und welches die Zehner. In einem PAP sollen meinem Verständnis nach durchaus noch die aufgabenspezifischen Vokablen benutzt werden und nicht die technischen Begriffe, wie einzelne Teile dann konkret umgesetzt wurden. Irre ich mich, oder läuft das Multiplexen in ein Ghosting-Problem an der Anzeige rein?
:
Bearbeitet durch User
Karl Heinz schrieb: > Irre ich mich, oder läuft der Aufgabenstellung in ein Ghosting-Problem > an der Anzeige rein? Nope. Ich denke, er wird ein Ghosting haben. Genauso wie die Anzeige ganz leicht flackern wird, wenn die ISR ihm das Hauptprogramm unterbrechen und man ganz genau schaut. Ich hätte den Multiplexteil mit in den Timer-Interrupt rein gelegt.
>Irre ich mich, oder läuft der Aufgabenstellung in ein Ghosting-Problem >an der Anzeige rein? Das sehe ich auch so. Die alten Segmentbits stehen noch an, wenn das nächste Digit aktiviert wird.
ok danke, hab jetzt mal angefangen. Schrift ist zweitrangig, wird später noch digitalisiert. Stimmt das bis Dato überein?
:
Bearbeitet durch User
Da steigst du ja schon in das Programm ein, dachte du arbeitest noch an dem PAP ? Vermutlich handelt es sich um einen AT89C5131, 8x51 Derivat, solche Infos solltest du eigentlich hier mit angeben. Die paar Zeilen Assembler bestätigen das es um 8051 geht. Liefer doch mal alles was du bereits hast... - aktueller PAP - Schaltplan wenn vorhanden - Bereits existierender Code Welche Teilbereiche verstehst du bereits, welche nicht ? - Assembler Programmierung - Multiplexen - etc.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.