Interrupt und Taktflankenabfrage
-
Hallo,
ich hab hier eine Aufgabe bei der ich nicht weiterkomme:
http://antoras.an.ohost.de/schule/it/parkhaus/aufgabe.pdf
Do-D4 geben binär die Dezimalzahl an. D5 ist Parkhauseingang, D6 ist Parkhausausgang und D7 die Lampen. "+" ist Interrupt0 und "-" ist Interrupt1.Mein generelles Problem ist, dass ich nicht die geringste Ahnung habe, wie ich da jetzt anfangen soll. Ich hab aber mal ein kleines PAP hinbekommen:
http://antoras.an.ohost.de/schule/it/parkhaus/parkhaus.png
Das hinter dem bescheuerten Wasserzeichen bedeutet "merker :=0". Der PAP stellt auch nur die Interrupts und die Taktflankenabfrage dar. Allerdings bezweifle ich, dass der was taugt.
Ich bekomme es irgendwie nicht hin vom objektorientierten auf das maschinenorientierte Assembler umzudenken. Ich such auch keine fertige Lösung, sondern nur ein paar Denkanstöße.Wäre schön wenn mir hier jemand weiterhelfen könnte.
-
Vielleicht solltest du dir erst nochmal vergegenwaertigen, was ein Interrupt ist (der deutsche Wikipedia-Artikel taugt dazu AFAIR nicht).
Weiter brauchst du eigentlich nur 2 Handler fuer die Interrupts, in denen du je den Zaehler fuer die Autos im Parkhaus checken und ggF. 1 hoch oder runter setzen, die Ampel entsprechend setzen, sowie die Ausgabe des Zaehlers machen musst.
Nach welchen Regeln der erste Teil funktioniert, steht recht genau in der Aufgabenstellung, wie der Rest funktioniert, muesste euch wahrscheinlich auch schon irgendwie vermittelt worden sein.Was das Umdenken OOP/Asm betrifft: Tja, Asm ist eigentlich nur simpelste imperative, prozedurale Programmierung. Das hat es so gesehen mit zB. C oder Pascal gemein.
... hth
-
Ich hab es jetzt doch noch hinbekommen. Hatt mich zwar viel Zeit gekostet, aber nachdem ich alle möglichen Datenblätter noch einmal durchgegangen bin hat's "Klick" gemacht und am Schluss ging alles.
Nobuo T schrieb:
Vielleicht solltest du dir erst nochmal vergegenwaertigen, was ein Interrupt ist (der deutsche Wikipedia-Artikel taugt dazu AFAIR nicht).
Stimmt, das hätte ich zuerst machen sollen. Hab ich jetzt nachgeholt. Und auf Wikipedia schau ich bestimmt nicht vorbei. Mal nicht wenn es um IT-Themen geht...
Nobuo T schrieb:
Nach welchen Regeln der erste Teil funktioniert, steht recht genau in der Aufgabenstellung, wie der Rest funktioniert, muesste euch wahrscheinlich auch schon irgendwie vermittelt worden sein.
Hatten wir echt wirklich schon alles gemacht. Hatte es nur wieder vergessen. Aber jetzt weiß ich wieder alles. Hoffe ich mal.
Nobuo T schrieb:
Was das Umdenken OOP/Asm betrifft: Tja, Asm ist eigentlich nur simpelste imperative, prozedurale Programmierung. Das hat es so gesehen mit zB. C oder Pascal gemein.
Asm ist echt sehr einfach. Man muss nur einmal die Logik dahinter verstanden haben.
Ich bin jetzt auf jeden Fall glücklich, dass es läuft.Danke dir auch jeden Fall mal für deine Antwort. Vllt. brauch ich seine/eure Hilfe irgendwann nochmal. Dann hab ich aber eine "richtige" Frage:
-
Asm ist echt sehr einfach. Man muss nur einmal die Logik dahinter verstanden haben.
Äh ... nö. GANZ SICHER nicht. Es gibt zwar nur einen sehr kleinen Befehlssatz (das ändert sich allerdings wenn du mal einen ARM oder ähnliches in der Hand hast) aber dieser muss eben manchmal sehr verschachtelt und streng korrelativ eingesetzt werden. Ehrlich gesagt kann ich mir nichts komplexeres als ASM vorstellen, selbst die analoge "Hässlichkeit" von C und C++ kommt da nicht ran.
Das bischen Lauflicht und Hausinstallations-Steuerungsgedöns was ihr in der Schule macht hat recht wenig mit richtiger ASM-Programmierung zu tun, soviel kann ich dir versichern. Du erhälst lediglich einen EINBLICK in die GRUNDPRINZIPIEN, das ganze wird dann nochmal um ein vielfaches komplexer, für professionelle Anwendungsbereiche muss man auch elektrotechnische Überlegungen anstellen - ein guter ASM'ler kann sich (zumindest theoretisch) auf einem FPGA den Prozessor selbst "bauen" (!) und/oder die Platine dazu.
ASM-Code ist natürlich generell kleiner und übersichtlicher, dafür steckt aber BEDEUTEND mehr Logik dahinter ... das ist nicht einfach.
Lass mich raten: Ihr benutzt/habt den 8051? Das Ding ist extrem komfortabel ... schwachbrüstig aber eben ultrabequem - wenn du dir mal moderne µCs anguckst wirst du feststellen dass der Befehlssatz
a) grösser
b) schwerer in der Handhabung istist.
-
In den PDF-Dokumenten wird win8051 erwähnt, also liegst du da mit deiner Vermutung wohl richtig.
Assembler hat recht wenig mit FPGAs zu tun. Die werden mit Schaltplänen oder über Hardwarebeschreibungssprachen wie Verilog oder VHDL konfiguriert. Es ist zwar möglich einen Prozessor in VHDL zu schreiben, den auf den FPGA zu brennen und dann einen eigenen Assembler-Befehlssatz dafür zu erstellen, aber alleine mit Erfahrung in Assemblersprachen und deren Einsatz wird es auch für den größten Assembler-Profi unmöglich sein, den Prozessor zu beschreiben. Assembler ist Softwareentwicklung, FPGA-Designs sind Hardwareentwicklung.