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!
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 :-)
> 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? :-/
@ 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?!
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.
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.
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:
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