Wie führt 8032 das Programm aus?

Ich habe den 8032 Mikrocontroller untersucht. Es wird erwähnt, dass 8032 kein internes ROM hat. Jetzt gibt es einige Fragen, die ich habe.

  • Benötigen wir ein externes ROM dazu? Programme unbedingt ausführen? Können wir nicht den internen 256-Byte-RAM verwenden?

  • Angenommen, ich verwende den 8032-Mikrocontroller mit einem externen ROM 2732 und auch die Verwendung eines Latch zum Speichern der Adresse (niedrigerer Ordnung) von Port P0 (der Adresse / Daten übertragen kann). Nachdem Sie EA aktiviert und die PSEN Wie führt 8032 das Programm aus? Was passiert, wenn ich das System einschalte? (Wie führt der Programmzähler des 8032-Mikrocontrollers Anweisungen aus? Von welcher Adresse des externen Speichers soll das Programm gelesen werden?

Ich habe Lesen Sie diese Handbücher – Intel 8032H Keil , Atmel 80C32E .

Antwort

Wenn Sie sich unten eine typische 80 (C) 32-Schaltung ansehen (von hier ):

Geben Sie hier die Bildbeschreibung ein.

Sie können sehen, dass der 8032 über a mit externem EPROM, RAM und EEPROM kommuniziert Bus – 8-Bit-Daten und 16-Bit-Adresse. Letztere wird zwischengespeichert und somit mit dem HCT573 demultiplext. Es gab einige Chips mit eingebautem Latch, die für die Verwendung mit dem 8031/8032 entwickelt wurden, aber die oben genannte war die häufigere Konfiguration – mit Low -Kosten Standardspeicherchips. Es gibt auch ein bisschen “ Kleber “ Logik, um die Adressen und Gattungen zu decodieren Die richtigen Signale für die Speicher (HCT138 und Quad-NAND).

Es ist wichtig, dass die Klebelogik so ausgelegt ist, dass sich das EPROM an der Adresse 0 befindet, da nach einem Zurücksetzen die Ausführung immer mit dem beginnt 8032 Abrufen des ersten Bytes des Befehls von dieser Adresse. Dies ist eine Funktion der Hardware im 8032 und kann nicht geändert werden. Typischerweise ist der Befehl ein 3-Byte-LJMP-Befehl, der zum Anfang des Programms springt. Wir nennen das “ RESET VECTOR „. Andere Vektoren belegen die Bytes unmittelbar über dem Rücksetzvektor – für die externe Interrupt-Serviceroutine und die Timer-Interrupt-Serviceroutine.

In jenen Tagen würde das EPROM von einem separaten Programmierer außerhalb des programmiert (beschrieben) Schaltung und dann in der Regel in eine Steckdose eingesteckt. Damals keine In-Circuit-Programmierung. Der RAM und das EEPROM könnten vom Mikro geschrieben werden, aber das Programm müsste in das EPROM geladen werden, bevor dies möglich wäre.

Kommentare

  • .: Ich werde es +1. Können Sie bitte den Teil glue logic erläutern? Es scheint, dass LJMP zum Anfang des Programms verschoben wird? Aber hier befindet sich das Programm im externen Speicher. Hier wird diese Art von Anweisung verwendet? Ich meine einfach, die Anweisungen werden aus dem externen Speicher abgerufen und in die IR gestellt, dekodiert und ausgeführt? Wo ist der Fall von LJMP hier?
  • Die Klebelogik stellt nur sicher, dass ‚ das EPROM ist, das ‚ wird ausgewählt, wenn die Adresse 0000 lautet. In der obigen Konfiguration wird das EPROM immer dann ausgewählt, wenn A15 = 0 ist. LJMP ist ein 3-Byte-Befehl, der eine Adresse an einer beliebigen Stelle im 16-Bit-Speicher des 8031 verwendet. In der Regel springen Sie jedoch einfach über die anderen Vektoren, sodass die folgenden zwei Bytes nach dem LJMP eine Adresse in der Nähe des Beginns des enthalten EPROM. ‚ spielt normalerweise nicht direkt mit Adressen herum – Sie verwenden einen Assembler, der sie über symbolische Bezeichnungen verfolgt.
  • “ Klebelogik “ ist ein Slangbegriff, der sich auf die kleineren Logikfunktionen bezieht, die zwischen dem Prozessor und den Speichern erforderlich sind.

Antwort

Nein, Sie können den internen RAM nicht zum Speichern von Code verwenden. Der 8051/8032 verwendet eine Harvard-Architektur, was bedeutet, dass er vollständig getrennt ist Speicherbereiche für Code und Daten. Anweisungen werden aus dem Codebereich abgerufen, aber der RAM befindet sich im Datenbereich.

Nachdem Sie EA aktiviert und das PSEN angeschlossen haben, wie führt 8032 das Programm aus?

Der 8032 ruft Anweisungen aus dem Codebereich ab. Da EA aktiviert ist, erscheinen diese Abrufe (Speicherlesevorgänge) auf dem externen Speicherbus mit PSEN aktiviert. Wenn PSEN wird bei einer Leseoperation mit externem Speicher NICHT aktiviert, es handelt sich um einen Datenraumlesevorgang.

Was passiert, wenn ich das System einschalte?

Der 8032 beginnt mit dem Abrufen von Anweisungen aus der Code Space -Adresse 0.

Wie führt der Programmzähler des 8032-Mikrocontrollers Anweisungen aus?

Die Der Programmzähler ist einfach dafür verantwortlich, die Adresse des nächsten auszuführenden Befehls zu halten. Andere Teile der CPU führen die Anweisungen aus.

Von welcher Adresse des externen Speichers soll das Programm gelesen werden?

Adresse 0.

Wenn Sie Interrupts in Ihrem Programm verwenden möchten, sind andere Adressen im Speicher mit geringem Code-Speicherplatz für sie reserviert, also der Code, den Sie verwenden Beim Zurücksetzen ausführen muss schließlich um diese reservierten Adressen „herumspringen“.

Kommentare

  • Dies ist die Antwort auf die erste Frage. Ich werde es +1. Könnten Sie bitte den zweiten Teil der Frage näher erläutern? Diesen Teil kann ich ‚ nicht erkennen.
  • Siehe oben bearbeiten.

Antwort

Der 8032, eine Variante des 8052, verfügt über kein internes ROM zur Programmspeicherung. Stattdessen muss ein externes ROM / EPROM / EEPROM verwendet werden, um das Programm zu halten.

Zwei Ports werden verwendet, um auf den externen Speicher zuzugreifen: Port 0 (Zeilen P0.0-P0.7) gibt die Low 8 aus Bits einer 16-Bit-64K-Adresse und dienen auch als Lese- / Schreib-8-Bit-Datenbus, nachdem die Adresse vom externen Speicher zwischengespeichert wurde.

P2 (Zeilen P2.0-P2.7 ) werden verwendet, um die hohen 8-Bit-Werte der 16-Bit-64K-Adresse auszugeben.

Obwohl der 8032 über 256 Byte internen RAM verfügt, kann dieser durch Hinzufügen eines RAM-Chips zum externen Adressbus erweitert werden

Die externe Adresszeile \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ wird niedrig gehalten, um anzuzeigen, ob auf den externen Programmspeicher zugegriffen wird, andernfalls auf den externen RAM wird angenommen.

Um Code aus dem externen Speicher auszuführen, wird die Adresse vom Programmzähler auf den Datenleitungen von Port 0 und Port 2 ausgegeben. dann werden während des Lesezyklus die Bytes beim Einlesen in Port 0 aus dem ROM abgerufen und vom Prozessor ausgeführt.

Es wird jeweils nur ein Befehl abgerufen.

\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ ist ein Strobe, der beim Zugriff auf den externen Programmspeicher verwendet wird.

Kommentare

  • .: Aber wie führt es ein Programm aus, das sich im externen Speicher befindet? Ich verstehe nicht, wie der PC funktioniert, wenn sich das Programm im externen Speicher befindet. Ich meine, bei jedem m / c-Zyklus werden einige Bytes abgerufen. Nach dem Abrufen wird das Programm sofort ausgeführt oder das gesamte Programm wird sofort > abgerufen, wenn dies der Fall ist, wo es gespeichert wird?
  • .: Also zunächst PC=0000h. Es beginnt bei jedem m / c-Zyklus Bytes abzurufen und führt es dann aus? Daher sollten wir das Programm im ROM immer von der Adresse 0000h brennen, da wir es sonst nicht korrekt ausführen können.
  • @learner. Richtig. Normalerweise erfolgt ein Adresssprung zum “ echten “ -Start des Codes.
  • .: I. wird +1 Ihre Antwort. Aber wenn das Programm Befehl für Befehl ausgeführt wird, wie wird eine solche Weiterleitungsreferenz verwaltet? L1:JNZ L2 .. L2:.....
  • Der JNZ-Befehl (und andere Jump- und Branch-Befehle) laden die Zieladresse des Jump in den Programmzähler, sodass der Prozessor den nächsten abruft Anweisung von dieser Adresse und nicht von der Anweisung unmittelbar nach dem Sprung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.