Tanultam a 8032
mikrovezérlőt. Megemlítik, hogy 8032
nincs belső ROM-ja. Most kevés kérdésem van
-
Szükségünk van-e külső ROM-ra szükségszerűen futtat programokat? Nem használhatjuk a 256 bájtos belső RAM-ot?
-
Tegyük fel, hogy a 8032 mikrovezérlőt külső ROM-tal használom
2732
és reteszt is használ a P0 port címének (alacsonyabb rendű) tárolásához (amely címet / adatot továbbíthat). Miután engedélyezte az EA szolgáltatást, és összekapcsolta a PSEN hogyan hajtja végre a 8032 a programot? Mi történik, ha bekapcsolom a rendszert? (Hogyan hajtja végre a 8032 mikrokontroller programszámlálója a behatolásokat? A program melyik külső memória címéről kell olvasni?
olvassa el ezeket a kézikönyveket- Intel 8032H Keil , Atmel 80C32E .
Válasz
Ha az alábbiakban egy tipikus 80 (C) 32-es áramkört nézünk ( -ból ide ):
Láthatja, hogy a 8032 külső EPROM-mal, RAM-mal és EEPROM-mal beszél egy busz – 8 bites adat és 16 bites cím. Ez utóbbi reteszelődik és így demultiplexálódik a HCT573-zal. Volt néhány chip, amelynek beépített retesze a 8031/8032-hez használható, de a fentiek voltak a leggyakoribb konfigurációk – alacsony -cost standard memóriachipek. Van még egy kis ” ragasztó ” logika a címek dekódolásához és a nemzetségekhez a memóriák megfelelő jeleit (a HCT138 és a quad NAND).
Alapvető fontosságú, hogy a ragasztó logikát úgy alakítsuk ki, hogy az EPROM a 0. címen legyen, mert egy visszaállítás után a végrehajtás mindig a 8032 az utasítás első bájtjának lekérése erről a címről. Ez a hardver függvénye a 8032-ben, és nem változtatható meg. Az utasítás általában egy 3 bájtos LJMP utasítás, amely a program elejére ugrik. Úgy hívjuk, hogy a ” RESET VECTOR “. Más vektorok elfoglalják a bájtokat közvetlenül a visszaállítási vektor felett – a külső megszakítási szolgáltatási rutin és az időzítő megszakítási szolgáltatás rutin számára.
Azokban a napokban az EPROM-ot egy külön programozó programozta (írta be) a áramkört, majd jellemzően egy aljzathoz csatlakoztatja. Azokban a napokban nincs áramkörön belüli programozás. A RAM-ot és az EEPROM-ot a mikro írhatta, de a programot be kellett tölteni az EPROM-ba, mielőtt ezek bármelyikére lehetőség nyílna. li> .: + 1-ezem. Bemutatja a glue logic
részt. Úgy tűnik, hogy az LJMP
átkerül a program elejére? De itt a program a külső memóriában van. Itt van ez a fajta utasítás? Úgy értem, hogy az utasításokat egyszerűen lekérjük a külső memóriából, és az IR
fájlba helyezzük, dekódoljuk és végrehajtjuk? Hol van itt az LJMP
esete?
Válasz
Nem, a kód megtartásához nem használhatja a belső RAM-ot. A 8051/8032 egy Harvard-architektúrát használ, ami azt jelenti, hogy teljesen külön van memóriaterek a kódhoz és az adatokhoz. Az utasítások a kódtérből származnak, de a RAM az adattérben található.
Miután engedélyezte az EA-t és csatlakoztatta a PSEN-t, hogyan végrehajtja a programot? ,
PSEN
állítással. AmikorPSEN
NEM érvényesül egy külső memóriaolvasási műveletnél, ez egy adattérolvasás.Mi történik, ha bekapcsolom a rendszert?
A 8032 megkezdi az utasítások lekérését a kódtér 0 címről.
Hogyan hajtja végre a 8032 mikrokontroller programszámlálója a behatolásokat?
A programszámláló egyszerűen felelős a következő végrehajtandó utasítás címének megőrzéséért. A CPU további részei végrehajtják az utasításokat.
A külső memória melyik címéről kell olvasni a programot?
0. cím.
Ha megszakításokat szeretne használni a programjában, akkor az alacsony kódtartományú memóriában vannak más címek is, amelyek fenntartva vannak számukra, tehát a kód, amelyet A reset-nél végrehajtva végül “át kell ugrani” a fenntartott címeken.
Megjegyzések
- Ez a válasz az első kérdésre. + 1-ezem. Bővebben részletezné a kérdés második részét? Az a rész, ‘ nem kapok nyomot.
- Lásd a fenti szerkesztést.
Válasz
A 8032-nek, amely a 8052 változata, nincs belső ROM-ja a program tárolásához. Ehelyett egy külső ROM / EPROM / EEPROM-ot kell használni a program megtartásához.
Két portot használnak a külső memória eléréséhez: A 0-os port (P0.0-P0.7 sorok) az alacsony 8 egy 16 bites 64K cím bitjei, és egyúttal 8 bites írási / olvasási buszként is szolgálnak, miután a címet rögzítette a külső memória.
P2 (P2.0-P2.7 sor ) a 16 bites 64K-cím magas 8 bitjének kibocsátására szolgál.
Bár a 8032 256 bájt belső RAM-mal rendelkezik, ez kibővíthető egy RAM-chip hozzáadásával a külső cím buszra is. .
A \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ külső címsor alacsony szinten van tartva annak jelzésére, hogy hozzáférést biztosít-e a külső programmemóriához, különben külső Feltételezzük a RAM-ot.
A külső memóriából történő kód futtatásához a program számlálójának címe a 0-os és a 2-es port adatsorain jelenik meg; majd az olvasási ciklus során a bájt (ok) a ROM-ról a 0-as portra olvasva beolvasásra kerülnek, és a processzor végrehajtja őket.
Egyszerre csak egy utasítás kerül letöltésre.
\ Az $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ egy strobe, amelyet a külső programmemória-hozzáférés során használnak.
Megjegyzések
- .: De hogyan hajtja végre a külső memóriában található programot? Nézd, nem értem, hogyan fog felépülni a számítógép, amikor a program külső memóriában van. Úgy értem, hogy minden m / c ciklusban elér néhány bájtot. Ezután a letöltés után a program azonnal végrehajtásra kerül, vagy az egész program egyszerre lesz letöltve >, ha ez az eset, hol tároljuk?
- .: Tehát kezdetben
PC=0000h
. Minden m / c ciklusban kezd bájtokat beolvasni, majd végrehajtja? Tehát a ROM-ban mindig ki kell égetnünk a programot a0000h
címről, különben nem tudnánk helyesen végrehajtani. - @learner. Helyes. Általában ugrás lesz a címre a ” valós ” kód elejére.
- .: I + 1-ezi a válaszodat. De ha a programot utasítással hajtják végre, akkor hogyan kezelik az ilyen továbbítási referenciákat?
L1:JNZ L2 .. L2:....
. - A JNZ utasítás (és más Jump and Branch utasítások) betölti a Jump célcímét a program számlálójába, így a processzor beolvassa a következőt utasítás erről a címről, nem pedig az Ugrás után azonnal.