Studoval jsem 8032
mikrokontrolér. Uvádí se, že 8032
nemá interní ROM. Nyní mám několik otázek.
-
Potřebujeme externí ROM k spouštět programy nutně? Nemůžeme použít 256bajtovou vnitřní RAM?
-
Předpokládám, že používám mikrokontrolér 8032 s externí ROM
2732
a také pomocí západky pro uložení adresy (nižšího řádu) portu P0. (který může přenášet adresu / data). Nyní po povolení EA a připojení PSEN jak program 8032 provádí program? Co se stane, když zapnu systém? (Jak počítadlo programu mikrokontroléru 8032 provádí pokyny? Z jaké adresy externí paměti by měl být program přečten?
Mám přečtěte si tyto příručky – Intel 8032H Keil , Atmel 80C32E .
Odpověď
Pokud se podíváte na typický obvod 80 (C) 32 níže (z zde ):
Můžete vidět, že 8032 mluví s externí EPROM, RAM a EEPROM přes sběrnice – 8bitová data a 16bitová adresa. Ta je blokována a demultiplexována s HCT573. Byly některé čipy s integrovanou západkou navrženou pro použití s 8031/8032, ale výše uvedená byla běžnější konfigurace – použití -standardní paměťové čipy. Existuje také trochu “ lepicí “ logiky pro dekódování adres a rodů Správné signály pro paměti (HCT138 a quad NAND).
Je důležité, aby logika lepidla byla navržena tak, aby se EPROM nacházela na adrese 0, protože po resetu vždy začíná spuštění 8032 načítání prvního bajtu instrukce z této adresy. Toto je funkce hardwaru v 8032 a nelze ji změnit. Typicky je instrukce 3bajtová instrukce LJMP, která přeskočí na začátek programu. Říkáme tomu “ RESETOVAT VEKTOR „. Další vektory zabírají bajty bezprostředně nad resetovacím vektorem – pro rutinu externí služby přerušení a pro rutinu služby přerušení služby.
V těchto dnech by byla EPROM naprogramována (zapsána) samostatným programátorem mimo obvodu a poté obvykle zapojen do zásuvky. V té době žádné programování na okruhu. Paměť RAM a EEPROM bylo možné zapsat mikroskopem, ale program by musel být načten do EPROM, než by to bylo možné.
Komentáře
Odpověď
Ne, k uložení kódu nemůžete použít interní RAM. Model 8051/8032 používá harvardskou architekturu, což znamená, že má zcela samostatnou paměťové prostory pro kód a data. Pokyny se načítají z kódového prostoru, ale RAM se nachází v datovém prostoru.
Nyní po povolení EA a připojení PSEN jak provádí program 8032 program?
Program 8032 načítá pokyny z prostoru kódu. Protože je uplatněna EA, tyto načítání (čtení z paměti) se objeví na externí paměťové sběrnici , s PSEN
. Když PSEN
NENÍ uplatněno při operaci čtení z externí paměti, jedná se o čtení v datovém prostoru.
Co se stane, když zapnu systém?
8032 začíná načítat pokyny z kódového prostoru adresy 0.
Jak programový čítač mikrokontroléru 8032 provádí pokyny?
čítač programu je jednoduše zodpovědný za uchování adresy další instrukce, která má být provedena. Pokyny provádějí další části CPU.
Z které adresy externí paměti by měl být program přečten?
Adresa 0.
Pokud chcete ve svém programu používat přerušení, jsou v paměti s malým prostorem pro kód vyhrazeny další adresy, takže kód, který vy spustit při resetu bude nakonec muset tyto vyhrazené adresy „přeskočit“.
Komentáře
- Toto je odpověď na první otázku. Dám tomu +1. Mohl byste prosím upřesnit druhou část otázky? Tuto část ‚ nezjistím.
- Viz úpravy výše.
Odpovědět
8032, což je varianta 8052, nemá interní ROM pro ukládání programu. Místo toho je nutné k uložení programu použít externí ROM / EPROM / EEPROM.
Pro přístup k externí paměti se používají dva porty: Port 0 (řádky P0.0 – P0.7) emituje spodní 8 bity 16bitové 64K adresy a slouží také jako 8bitová datová sběrnice pro čtení / zápis poté, co byla adresa zajištěna externí pamětí.
P2 (řádky P2.0-P2.7 ) se používají k vyzařování vysokých 8 bitů 16bitové 64K adresy.
Ačkoli má 8032 256 bytů interní RAM, lze ji rozšířit přidáním čipu RAM také na sběrnici externí adresy .
Řádek externí adresy \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ je držen nízko, aby indikoval, zda se provádí přístup k externí paměti programu, jinak externí Předpokládá se RAM.
Chcete-li spustit kód z externí paměti, na datových linkách Port 0 a Port 2 se vygeneruje adresa z čítače programu; pak během čtecího cyklu se bajty načtené z ROM načtou na port 0 a provedou procesorem.
Současně se načítá pouze jedna instrukce.
\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ je stroboskop používaný při přístupu do paměti externího programu.
Komentáře
- .: Jak ale provede program, který se nachází v externí paměti? Podívej, nechápu, jak se bude počítač kopírovat, když je program v externí paměti. Myslím tím, že při každém cyklu m / c načte určitý počet bajtů. Potom po načtení je program spuštěn okamžitě nebo je načten celý program najednou >, v takovém případě bude uložen?
- .: Takže zpočátku
PC=0000h
. Začíná načítat bajty v každém cyklu m / c a poté jej provede? Takže v ROM bychom vždy měli program vypálit z adresy0000h
, jinak bychom jej nemohli správně spustit. - @learner. Opravit. Obvykle dojde na adresu k skoku na “ skutečný “ začátek kódu.
- .: I dá vaší odpovědi +1. Ale pokud je program spuštěn, instrukce po instrukci, jak bude spravována taková předaná reference?
L1:JNZ L2 .. L2:....
. - Instrukce JNZ (a další pokyny pro skok a větev) načtou cílovou adresu skoku do čítače programu, takže procesor načte další instrukce z této adresy, spíše než instrukce bezprostředně po Skoku.
glue logic
. Zdá se, žeLJMP
se přesune na začátek programu? Ale tady je program v externí paměti. Zde se používá tento druh instrukce? Myslím jednoduše, instrukce jsou načteny z externí paměti a umístěny doIR
, dekódovány a provedeny? Kde je případLJMP
zde?