Hi! Seit kurzem beschäftige ich mich mit µControllern. Dieses Forum is da echt ne Hilfe. Jetzt hab ich abedr mal ein paar Fragen: 1. Haben µC's auch ein BIOS oder so etwas? 2. Wie geht das eigentlich, dass der µC weiss, bei welchen Befehl er etwas tun muss? Denn ein Stückchen Silizium is ja alleinen noch nicht schlau?! Irgendwie muss da ja noch die "Seele" rein? Wie geht das genau? Denn nur durch die .hex Datei weiss er ja noch nicht, was er wann genau machen muss? 3. Wie weiss zb. die CPU im Computer welche Daten sie wie verarbeiten muss und auf welchen pin's sie was ausgeben muss? Genau das selbe bei sämtlichen Signalprozessoren. Vllt. könntet ihr mir diese Fragen beantworten, denn ich hab da schon lange drüber nachgedacht, aber keine befriedigende Antwort gefunden. Wenn die Antworten allzu blöd sind, einfach ignorieren oder trotzdem beantworten ;-) Grüße!
1. Nein. 2. Doch, die "Hex" Datei ist das Programm, das er abarbeitet. 3. Dafür ist das Programm da.
1. Nein. 2. Doch. 3. CPUs sind schlau.
Ein Prozessor hat eine ALU, dort werden Berechnungen und logische Verknüpfungen ausgeführt. Und ein Prozessor hat einen "Speichermanager", der immer den nächsten (passenden) Befehl aus dem Programmspeicher holt. Und diese Befehle werden schrittweise von der ALU abgearbeitet. > Denn nur durch die .hex Datei weiss er ja noch nicht, was er wann genau > machen muss? Doch, denn dort drin stehen die Maschinencodes, die der uC schrittweise abarbeitet. Sieh dir mal sowas an: http://www.realschule.bayern.de/lehrer/dokumente/untmat/inf/ak-inf/knhow-pc/start.htm Als Tipp: Mach das Schritt für Schritt durch. Mach mit dem nächsten Schritt erst weiter, wenn du den vorigen kapiert hast. Mit "überfliegen" wirst du das nie kapieren.
Gast schrieb: > 1. Haben µC's auch ein BIOS oder so etwas? Es gibt Microcontroller mit eingebautem Bootloader, das entspricht wohl am ehesten Deiner Vorstellung. Der Begriff BIOS stammt aus dem PC-Bereich, war auch eher zu DOS-Zeiten sehr aktuell und dient heute mehr oder weniger nur noch dazu, die PC-Hardware so weit zu bringen, dass das Betriebssystem starten kann. Früher (DOS-Ära) waren im BIOS z.T. reichhaltige Funktionen implementiert, heute hat sich das ziemlich in Richtung anderer Techniken verschoben (z.B. ACPI), auch wenn z.B. manche Grafikkarten noch immer ein eigenes BIOS mitbringen und die dort sitzenden Funktionen tatsächlich noch nützlich sind. > 2. Wie geht das eigentlich, dass der µC weiss, bei welchen Befehl er > etwas tun muss? Abstrakt: Der µC ist ein endlicher Automat. > Denn ein Stückchen Silizium is ja alleinen noch nicht > schlau?! Vgl. Halbleiterfertigung. Die Evolutionsschritte kurz und knapp sind in Etwa folgende: Bringe einem Stück Silizium bei, sich wie ein Transistor zu verhalten -> Baue einfache Grundelemente digitaler Logik (Gatter) aus integrierten Transistoren -> Verschalte die Gatter zu einem digitalen Schaltwerk (da sind wir wieder beim endlichen Automaten) -> fertig. > Denn nur durch die .hex Datei weiss er ja noch nicht, was er wann genau > machen muss? Eigentlich schon. Versuch mal die Turing-Maschine zu verstehen. Das Ding kann alles, was heutige Computer auch können, sie ist aber im Gegensatz zum Standard-Desktop-PC einfach und leicht verständlich aufgebaut :-) > 3. Wie weiss zb. die CPU im Computer welche Daten sie wie verarbeiten > muss und auf welchen pin's sie was ausgeben muss? Genau das selbe bei > sämtlichen Signalprozessoren. Das gibt "das Programm" vor, was auch immer "das Programm" ist. > Vllt. könntet ihr mir diese Fragen beantworten, denn ich hab da schon > lange drüber nachgedacht, aber keine befriedigende Antwort gefunden. > Wenn die Antworten allzu blöd sind, einfach ignorieren oder trotzdem > beantworten ;-) Je nachdem wie tief Du da einsteigen möchtest gibt es mehr oder weniger oberflächliche bzw. tiefschürfende Literatur. Mit einem Buch über digitale Logik anzufangen ist sicherlich nicht ganz verkehrt, manche ältere Bücher enthalten in den letzten Kapiteln sogar einige Ausblicke, die zeigen, wie einfache Prozessoren realisiert werden können. Wenn man die Kapitel davor verstanden und verinnerlicht hat, sind diese Inhalte dann meist völlig problemlos verständlich. Viel Erfolg, Stephan
Hi! Danke schonmal für die ganzen tollen Antworten! EIn bisschen mehr blicke ich da schon durch;-). EIn Transistor ist ja ein vergleichsweise einfaches Bauteil. Ein µC sind ja eigentlich auch nur recht viele Transistorn und ein paar Wiederstände und so. Aber ein Transistor kann doch auch keine Programme verarbeiten? EIn .hex sind ja nur Nummern, oder? Und woher weiss der µC dann, was er damit machen muss? grüße!
Gast schrieb:
> Aber ein Transistor kann doch auch keine Programme verarbeiten?
Den 1-Transistor-Computer hat auch noch keiner erfunden. Unterhalb von
einigen Tausend wird das nix.
>EIn .hex sind ja nur Nummern, oder? Und woher weiss der µC dann, was er
damit machen muss?
Vereinfacht kanst Du dir das so vorstellen, daß jede Nummer ein Befehl
ist.
Ich denke am einfachsten kann man das verstehen, wenn man bedenkt wie sich das alles entwickelt hat. Ausgangspunkt ist der mechanische Webstuhl. Solche Webstühle hatten eine Besonderheit: An einer Stelle ist etwas durchgelaufen, was man heute als Lochstreifen bezeichnen würde. Das Band ist in Zeilen unterteilt und in jeder Zeile können mehrere Löcher angebracht sein. Läuft das Band durch, dann tastet eine Einheit die jeweilige Zeile ab. Je nachdem, ob dort ein Loch vorhanden ist oder nicht, werden im Webstuhl bestimmte Schaltvorgänge ausgelöst oder auch nicht. Die Löcher sorgen also einfach nur dafür, dass zb bestimmte Fäden angehoben werden, andere wieder nicht, dass die Feder ausgelöst wird die das Schiffchen von einer Seite zur anderen schiesst etc. Du hast die Idee dahinter hoffentlich verstanden :-) In einem µC passiert im Grunde auch nichts anders. Die Zahl, die aus dem Programmspeicher gelesen wird, sorgt einfach nur dafür, dass im µC bestimmte Verbindungen geschaltet werden. ZB. gibt es dort einen Addierer mit jeweils 2 8 Bit Eingängen (Aufgebaut aus ganz normalen Gatterschaltungen). Weiters gibt es Speicherzellen (wir nennen sie Register) und ein Bussystem auf das alle diese Komponenten aufgeschaltet werden können. Eine ganz bestimmte Zahl ist zb so geformt, dass ihre 1 Bits das Register A auf den Bus schaltet, der beim Addierer an dem einen Eingang ankommt. Ein anderes 1 Bit in dieser Zahl sorgt dafür dass das Register H auf einen anderen Verbindungsbus geschaltet wird, der am anderen Eingang des Addierers mündet. Und dann gibt es noch einen drittes 1 Bit in der Steuerzahl sorgt dafür, dass ein drittes Register C mit dem Ausgang des Addierers verbunden wird. Alles in allem hat daher diese Steuerzahl die Eigenschaft, dass der Wert aus dem Register A mit dem Wert aus dem Register H addiert wird und das Ergebnis in Register C abgelegt wird. Eine andere Steuerzahl stellt wieder andere Verbindungen her, aber das Prinzip ist das gleiche. Die Steuerzahl (wir nennen sie OpCode) sorgt dafür, dass in der CPU bestimmte Verbindungen hergestellt werden und bestimmte Abläufe vor sich gehen. Nun, so war das einmal. Heutzutage ist das alles in klein wenig komplizierter aber wenn man nicht ganz genau hinschaut, stimmt das Modell immer noch :-)
Buchtipp: Rainer Klar, Digitale Rechenautomaten. Eine Einführung in die Struktur von Computerhardware.
>Vereinfacht kanst Du dir das so vorstellen, daß jede Nummer ein Befehl >ist. Aber woher weiss der µC, welche Nummer welcher Befehl ist? Grüße!
> Wiederstände ... ... sind da garantiert keine verbaut. Wenn, dann wären das Widerstände ;-) > Aber woher weiss der µC, welche Nummer welcher Befehl ist? Das ist in ihm fest verschaltet. Hast du die Papier-CPU schon durchgespielt? :-/
Das hat der Entwickler vorher eben so in den µC eingepflanzt.
@ Gast (Gast)
>Aber woher weiss der µC, welche Nummer welcher Befehl ist?
Das ist fest ins Silizium in Form von Logikschaltungen und "Tabellen"
(ROM) einprogrammiert.
MfG
Falk
Ich stell's mir so vor: Es ist eine Art Schlüssel-Schloss-Prinzip. Ein Schloss "weiss" auch nicht, welcher Schlüssel zu ihm passt. Wenn es sich mechanisch fügt, passt der Schlüssel eben und eine Tür öffnet sich aufgrund wohlfeil konstruierter Mechanik. Evtl. läuft das beim Decodieren eines OpCodes in der CPU -mit elektronischen Mitteln umgesetzt- vergleichbar ab?!
Im Mikrokontoller drinnen sitzen viele kleine Männchen die die Hex Datei abackern...
Hi! Das Papiercomputer Prinzip, hab ich verstanden. Aber woher zur Hölle, weiss der µC, was die Daten im Programmspeicher bedeuten? Und wie kann der das Lesen? Ich nehme an, bei der Programmierung wandelt der µC die .Hex schon in passende ein und aus zustände der Sepicherzellen? Aber wie wurde das bei der Herstellung in den Speicher programmiert, dass der µC weiss, was die einzelnen Zustände bedeuten? Um das zu verstehen braucht der µC doch auch sowas wie einen basis Bootloader, der die Porgramme lädt und einen Interpreter für die .hex hat? Hat eine CPU im Computer eine Firmware/Bios? >> Wiederstände ... >... sind da garantiert keine verbaut. Wenn, dann wären das Widerstände >;-) Verflixt... immer der selbe Fehler :-( Naja, kann sich ja noch ändern, das mit den Widerständen ;-) Grüße!
@ Stephan M. Verschone bitte die Welt mit Deinem gefährlichen Halbwissen! Was hat ein BIOS mit einem Bootloader zu tun? usw. usw. @ Gast Google 'mal nach "von Neumann Architektur".
Hallo Gast. > 2. Wie geht das eigentlich, dass der µC weiss, bei welchen Befehl er > etwas tun muss? Denn ein Stückchen Silizium is ja alleinen noch nicht > schlau?! Der Computer hat einige "fest" verdrahtete Transistor Verschaltungen, die schon bei der Herstellung entstehen, und die er nach dem Programm eben halt abarbeitet. Das sind in erster Linie arithmetische Operationen, z.B. addieren, subtrahieren, Logisch UND, logisch-ODER und Schiebeoperationen, und Speicheroperationen. Du könntest das als "Seele" bezeichen. Die allerallereinfachsten Controller kennen noch nicht einmals eine Multiplikation und Division, so wie Du sie kennst. Sie können aber ein Byte jeweils ein Bit nach links oder rechts verschieben, was einer Multiplikation oder Division mit 2 entspricht. Damit kann man, vorausgesetzt man hat genug Speicher, alle Rechenarten aus dem Gymnasium nachbilden. :-) > Irgendwie muss da ja noch die "Seele" rein? Wie geht das genau? Du meinst jetzt das Programm, nicht? Das ist von Ausführung zu Ausführung verschieben. Grob gesagt, man schaltet den Controller ein, legt an eine bestimmte Stelle eine Spannung, dann weiss er, das er jetzt programmiert wird, und benutzt diese Spannung auch als Energiequelle beim Programmieren, Eventuell braucht er noch ein Taktsignal. Dann kommen auf einer Leitung die Signale des Programmes zum Schreiben bittweise an. Manche Controller können sogar Handshakebetrieb und Rückmeldungen machen anbieten. Aber es geht eben auch ganz einfach. PIC12 Serie z.B. oder 8051er > Denn nur durch die .hex Datei weiss er ja noch nicht, was er wann genau > machen muss? Wie gesagt, er hat schon eine gewisse "Grundintelligenz" oder "Instinkt". Das langt, um das Programm hineinzubekommen und abzuarbeiten. Andere, etwas esoterische Erklärung, die Leuten mit hoher Glaubensfähigkeit deutlich entgegenkommt: Das ganze geht mit Magie und Hexerei. Darum heissen die Programme ja auch "Hex"-files. Im Controller verwandeln sie sich in kleine Dämonen, die in den Controllern sitzen, mit Spannung gefüttert werden und durch Stromstösse gezwungen werden, ihre Aufgaben zu erfüllen. Es ist wichtig, das die Controller ganz dicht sind. Der Dämon kann durch feine Risse als Rauchwolke entweichen. Ist der Rauch erstmal aus dem Controller herausgekommen, geht nichts mehr, wir bezeichnen den Controller dann als kaputt. :-) Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Ich kann das wahrscheinlich nicht gut erklären, aber ich glaube der erste nach dem Moderator zu sein, der deine Frage so richtig durchschaut, weil ich mir das schon oft selbst überlegt habe. Ich würde mich daher freuen, wenn jemand meine Ausführungen berichtigt. Wissen tut da gar nichts. Das sind alles Transistorschaltungen, die gerade einen bestimmten Pegel (1 oder 0) haben. Das Programm wird auch in Transistoren gespeichert. Wie eine Liste. 1001 1010 1110 0100 0110 Das heißt, für jedes Programm-Bit (Und ein Befehl besteht ja aus mehreren) gibt es eine Transistorstufe. Wieder eine andere Transistorschaltung XY tastet die erste, dann die zweite, dann die dritte, ... Zeile ab. Logikschaltungen greifen wiederum den Zustand dieser ab und sorgen dann dafür, dass immer etwas anderes passiert (r16 und r17 auf den Addierer schalten, Addierer wieder auf r18 umlenken, also auch wieder Transistoren), je nachdem was die Transistorschaltung XY ausgelesen hat.
Man müsste das mal mit einer GAAAANZ einfachen 4 Bit CPU demonstrieren. Wäre mal wieder eine sehr schöne Idee für einen Artikel. MFG Falk
cooles Applet. Ich muss sagen früher hab ich die Zusammenhänge auch nicht verstanden. Es gab aber eine gute Vorlesung in meinem Studium - Rechnerarchitektur. Da hat der Prof angefangen beim Transistor, dann gezeigt wie man daraus ein Flip-Flops und Logikschaltungen baut (und, oder xor etc.). Der nächste Schritt war dann aus Logik-Grundelementen eine ALU und Speicher zu bauen. Und von da aus gings dann immer weiter, von der MIMA (Minimal-Maschine) bis zur DLX-Architektur. Da sind dann Sachen wie Pipeline und so interessant. Ich denke das sind ein paar Stichworte zum zusammengoogeln.
Frank schrieb: > @ Stephan M. > Verschone bitte die Welt mit Deinem gefährlichen Halbwissen! Was hat ein > BIOS mit einem Bootloader zu tun? usw. usw. Ein bisschen mehr Information oder ggf. eine Richtigstellung hätte der Sache sicherlich auch nicht geschadet. Stephan
Ich glaub auch zu wissen, auf was er hinaus will. Das selbe Problem hatte ich anfangs auch. Richtig gelernt habe ich das erst in der Vorlesung Technische Informatik. Ich versuch mal kurz ein Beispiel zu geben: Ein Prozessor mit 4-Bit Datenbreite, welcher nur die Verknüpfung AND, OR, NOT kann und 4 Register A, B, C und D besitzt. Der Prozessor hat einen Programmspeicher, typischerweise einen Flash- speicher. Das sind ganz viele FlipFlops, welche beim programmieren entsprechend geschalten werden. Jetzt legen wir fest, dass immer 8 FlipFlops ein Befehl ergeben. 2 Bit für AND/OR/NOT, 2 Bit für das Zielregister, 2 Bit für Quellregister 1 und 2 Bit für Quellregister 2. Natürlich kann man damit nichts anfangen, da wir keine Daten laden können. Aber es reicht um zu verdeutlichen, wie ein Prozessor schaltet. Wir nehmen ganz viele 8er-Packungen-FlipFlops und schließen danach einen Multiplexer an. Dann nehmen wir einen Zähler und schließen den Takt an dessen Zähleingang. Der Ausgang des Zählers geht auf den Multiplexer und bestimmt, welcher 8er-Packen-FlipFlops gewählt wird. Damit haben wir schonmal ein Teil, welcher mit jedem Takt eine Instruktion auswählt und diese weiter gibt. Jetzt brauchen wir die Register. Ebenfalls 4 FlipFlops bilden diese. Eines nennen wir A, eines B, ... Jedes Register hat 4 Ausgänge und 4 Eingänger für Daten, einen WriteEnable und einen Clock. Geschrieben wird nur bei Clock und WriteEnable. Die ALU besteht aus einem 4-Bit AND, 4-Bit OR und 4-Bit NOT. Die ALU hat also 2 mal 4 Eingänge für die beiden Daten, 2 Eingänge für die Auswahl der Operation und 4 Ausgänge. Die ersten 4 Dateneingänge werden auf das AND, OR und NOT gelegt. Die zweiten ebenfalls. Der Ausgang jeder Logik (AND/OR/NOT) wird an einen Multiplexer angeschlossen. Dieser wählt durch die 2 Operationeingänge den entsprechenden Datensatz aus und führt ihn auf den Ausgang. Der Ausgang der ALU wird auf jeden Registereingang gelegt. Aber Write- enable wird nicht direkt angeschlossen, sondern über ein Decoder, welcher anhand 2 Zielregister-Bits des Programmspeichers den entsprechenden einschaltet. Clock wird auf die Taktleitung gegelegt. Dann haben wir noch 2 Multiplexer. Einen für jedes Quellregister. Jedes Register legt seinen Ausgang einmal auf jeden dieser Multiplexer. Der eine Multiplexer legt seinen Ausgang auf Eingang 1 der ALU, der Andere auf Eingang 2. Multiplexer 1 nimmt zur Auswahl die 2 Bit für das Quellregister 1 aus dem Programmspeicher, der zweite nimmt eben die für Quellregister 2. Du musst nur noch nachlesen, was FlipFlops, Flashspeicher, Register, Multiplexer, Decoder, AND-Gatter, OR-Gatter, NOT-Gatter sind. Ich hoffe, dir wird dadurch klarer, wie ein Rechner aufgebaut ist. Viele Grüße Sebihepp
@ Sebastian Hepp (sebihepp)
>Ich hoffe, dir wird dadurch klarer, wie ein Rechner aufgebaut ist.
Das bezweifle ich. Einfach mal wild was hinschreiben bringt hier GAR
NICHTS. Didaktisch wertlos. Von inhaltlichen Fehlern mal abgesehen.
Nochmal, das ist ein sehr gutes Thema für einen Artikel. Den zu
schreiben, so dass ihn auch die Zielgruppe gut verdauen kann, ist aber
recht anspruchsvoll.
MFG
Falk
Das komische Java-Applet ist nicht sonderlich anschaulich. In dem Artikel müsste man erstmal das Konzept eines Zustandsautomaten klären. Voraussetzung dafür sind die Grundlagen der Digitaltechnik. Das ist dann aber fast schon Abiturniveau und drüber. Hmmmm.
Ihr sollt doch nicht immer die Trolle überfüttern. Die leidenn hier schon genug an Übergewicht!!!
Hi Falk hat recht, wenn er darauf hinweist, das die Funktion eines µC nicht mit wenigen Worten einigermaßen erklärbar ist. Schon gar nicht von der Seite der Elektronik. Sehr schnell fallen Begriffe wie Flipflop’s, RAM, PROM, Hex, Binär, jeder fast eine Wissenschaft für sich. Bestenfalls kann man sich einen einfachen Stapel mit Anweisungen vorstellen, den ein Mitarbeiter abarbeiten soll. Er kann lesen und einfachste Arbeiten ausführen. Dieser Mitarbeiter hat in seinem Zimmer einen Stapel Zettel: 1.Anweisung Gehe in die Scheune 2. Anweisung Nehme einen Spaten 3. Anweisung Gehe in den Garten 4. Anweisung Gehe zum 3. Beet 5. Anweisung merk dir die 9 6. Anweisung Stich den Spaten in den Boden 7. Anweisung Dreh den Spaten um 8. Anweisung Geh einen Schritt zurück 9. Anweisung Zieh eins von der gemerkten Zahl ab 10. Anweisung ist das Ergebnis 0 11. Anweisung Wenn nicht,wiederhole Schritt ab Schritt6 12. Anweisung Nimm den Spaten 13. Anweisung Gehe zur Scheune 14. Anweisung Stelle den Spaten ab 15. Anweisung Geh nach hause 16. Anweisung Warte auf den Morgen 17. Anweisung nimm den ersten Zettel ( Schritt 1) Ziemlich langweilig und nicht hundertprozentig vergleichbar, aber um es deutlich zumachen, sollte es reichen. Wenn du diesen Text liest, siehst du auch nicht nur die Buchstaben, sondern reihst das dir beigebrachte Muster zu den Worten, die letztlich einen Sinn ergeben ( oder auch nicht). Ein Programm ist nichts anderes wie eine Arbeit bis ins letzte Detail zerlegt und zu einer Anweisungsliste abgelegt. Das ist der Programmspeicher (Stapel). Je nach Speicherausrüstung (Merkfähigkeit des MA) kann mehr oder weniger „gemerkt“ und „berechnet“ werden. So finden sich immer wieder die Anweisungen LD Reg, 0xff ; LDI ist der Befehlscode, der auf der Liste steht, FF der Wert im folgenden Byte Andi Reg,0x55 ; ANDI ist eine Und-Verknüpfung mit Inhalt vom Register und dem Wert im folgenden Byte STS Variable, Reg ; STS ist der Befehl, der das Erebnis aus Reg in eine Speicherzelle schreibt Das ist Assembler, noch kein Format, was ein µC versteht. Es muß durch ein Programm erst zu einem binären Muster geformt werden, damit der Controller damit umgehen kann. Nur ein binäres Muster läßt sich mit Spannungspegeln eindeutig beschreiben und entsprechend bearbeiten. Und jetzt kommen wir zu den Begriffen FlipFlop usw. Gruß oldmax
oldmax schrieb: > Ziemlich langweilig und nicht hundertprozentig vergleichbar, aber > um es deutlich zumachen, sollte es reichen. Wobei mir persönlich es wichtig ist, ausdrücklich festzuhalten, dass sich die Befehle an einen µC auf einem Niveau befinden, das einige Zehnerpotenzen unter dem von dir genannten Beispiel liegt. Der Befehl > 2. Anweisung Nehme einen Spaten zb ist bereits auf einem Schwierigkeitsniveau, dass eine komplette Programmierermanschaft auf Jahre hinaus beschäftigt, sie in einfachere µC-verständliche Einzelbefehle herunterzubrechen. Die tatsächlichen µC Befehle spielen sich auf der Ebene ab: Zähle zu einer Zahl 1 dazu, vergleiche Zahl A mit Zahl B. Ich erwähne das nur, weil bei Nichtprogrammierern oftmals die Vorstellung vorherrscht, dass zb ein Schachprogramm so aussieht:
1 | int main() |
2 | {
|
3 | play( "chess" ); |
4 | }
|
soweit sind wir noch lange nicht.
Ich empfehle hier dringend ein Buch zu rate zu ziehen. Dieses Thema beschäftigt ganze Vorlesungen und mit nur einem oder zwei Posts ist dieses Thema mit Sicherheit nicht erledigt. Man könnte genausogut fragen, woher unser Gehirn weiß, was es wann zu tun hat...ist ebenso leicht wie schwer wie diese Frage.
Das wohl beste Buch zu dem Thema: http://www.amazon.de/Computer-Organization-Design-Interface-Architecture/dp/0123744938/ref=sr_1_1?ie=UTF8&s=books-intl-de&qid=1259230660&sr=8-1 Gibts auch ne ältere deutsche Ausgabe. Da wird sehr schön erklärt wie ein prozessor funktioniert. Vielleich noch ein Bild zu Deiner Frage woher der µC weiß was er machen soll. Stell Dir mal folgende Befehle vor 1001 1101 1100 Nun stell Dir Siebe for, die genau entsprechende Öffnungen haben. Nun wird jeder Befel auf die Siebe geworfen. Nur bei einem davon fällt er durch und dort wird ein Befehl ausgelöst. Danach kommt der nächste Befehl dran. Gruß Tom
Die von Tom erwähnte Siebanordnung heißt übrigens "Befehlsdecoder" und ist im Prozessor "hartverdrahtet", d.h. Bestandteil der auf dem Silizium verewigten Struktur. Wenn der Mikrocontroller aus dem Resetzustand erwacht (z.B. nach dem Einschalten) holt er den Inhalt einer ganz bestimmten Speicherstelle des Programmspeichers; bei einem 8-Bit-Prozessor wäre das ein Byte, und zwar ein sogenanntes Befehlsbyte. Dieses Byte wandert in den Befehlsdecoder und wird "gesiebt". Je nachdem, in welchem Sieb der Befehl hängen bleibt, weiß der Controller dann, was er zu tun hat, und er weiß, wo im Programmspeicher der nächste Befehl abzuholen ist. Außerdem weiß er, wieviele Parameter er für den gerade dekodierten Befehl noch aus dem Programmspeicher holen muß (z.B. die Summanden bei einem Additionsbefehl). Der Zugriff auf den Programmspeicher wird über einen Programmzähler (Program Counter) gesteuert, der vom Befehlsdecoder jeweils auf die Adresse des nächsten Befehlsbytes gesetzt wird. Dieser Zähler kann aber auch durch das ablaufende Programm verändert werden, z.B. für Entscheidungen oder Sprungbefehle. Der Inhalt des Programmspeichers ist übrigens das, was Du über das .hex-File "eingefüllt" hast. So, wer macht an diesem Punkt weiter?
Hi Ich schrieb >Der Befehl > 2. Anweisung Nehme einen Spaten und erhielt die Antwort >zb ist bereits auf einem Schwierigkeitsniveau, dass eine komplette >Programmierermanschaft auf Jahre hinaus beschäftigt, sie in einfachere >µC-verständliche Einzelbefehle herunterzubrechen. Also, meine Frau sieht's so, wie du mit dem Beispiel Play("Chess") " Der Garten müßte umgegraben werden" .... Nach der Werbung von Mario Barth extrem kurz... allerdings bkomme ich den Rest des Gespräches auch schon nicht mehr mit, weil a: die Bürotür lautstark ins Schloß fiel (selten, man will ja mal wieder...) oder b: weil ich schon eifrig dabei bin.... bevor es dunkel wird. Gruß oldmax
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.