Hogyan hajtja végre a 8032 a programot?

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 ):

írja ide a kép leírását

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?

  • A ragasztó logika csak arról gondoskodik, hogy ‘ az EPROM, amely ‘ kiválasztva, ha a cím 0000. A fenti konfigurációban, amikor A15 = 0, az EPROM van kiválasztva. Az LJMP egy 3 bájtos utasítás, amely egy címet bárhová visz a 8031 16 bites memóriaterületén, de általában csak átugorhatja a többi vektorot, így az LJMP után következő két bájt tartalmazna egy címet a EPROM. Ön általában nem ‘ nem címkézi meg közvetlenül a címekkel – használjon egy olyan összeállítót, amely szimbolikus címkék segítségével követi őket.
  • ” Ragasztási logika ” egy szleng kifejezés, amely a processzor és a memóriák között szükséges kisebb logikai funkciókra utal.
  • 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. Amikor PSEN 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 a 0000h 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.

    Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük