Výskum vývoja a aplikácie výkonových elektronických zariadení a technológie frekvenčnej premeny

Jun 09, 2021

Zanechajte správu

A ARM (alebo dokonca x 86) MCU / CPU so štruktúrou von Neumanna, jeho adresný priestor je zjednotený a nepretržitý, registre kódovej pamäte / RAM / CPU a dokonca aj videopamäť PC sú riešené jednotne. Je to len to, že pamäť s rôznymi funkciami zaberá rôzne bloky adries a robia si svoje veci.


Dobre, nech sa&# 39 vráti späť na MCS-51.


Pre programovú pamäť sú dve časti: on-chip a off-chip. A bez ohľadu na programovú pamäť integrovanú v čipe alebo mimo programovú pamäť čipu sú ich adresy zdieľané. Ak je na čipu 4k ROM, adresa je 0x0000-0x0FFF a 0x1000-0xFFFF je adresný priestor externej ROM. Či sa použije časť externej ROM 0x0000-0x0FFF, záleží na hodnote úrovne kolíka EA mikrokontroléra. Keď EA=1, použije sa táto časť internej ROM a táto časť externej ROM sa premrhá a nepoužíva sa; keď EA=0, použije sa táto časť externej ROM a interná ROM sa premrhá a nepoužíva sa. Na načítanie údajov zo segmentu CODE použite zostavenú inštrukciu MOVC. Jednočipový mikropočítač automaticky určí, z ktorej pamäte sa majú načítať údaje podľa pokynov MOVC, stavu EA a hodnoty adresy, ktorá sa má načítať.


Pre dátovú pamäť je rozdelená na dve časti: interná dátová pamäť (IDATA / RAM) a externá dátová pamäť (XDATA), ale tieto dve pamäte nezdieľajú adresný priestor ako pamäť kódu. Všeobecný čip 8051, interná pamäť RAM je iba 128 B, od 0x00-0x7F a od 0x80-0xFF je oblasť SFR (tu sú pracovné registre CPU a rôzne periférne registre). Pre 8052 má interná RAM 256B, takže 0x80-0xFF je vysoká 128B RAM, ktorá sa používa. Nie je však táto časť venovaná SFR? Je určený pre SFR, ale všimnite si, že prístup SFR môže využívať iba&"priame adresovanie GG"; (implementované pomocou konkrétnych montážnych pokynov), rozdiel je tu. Iba adresa prístupná priamym adresovaním je SFR, inak je to obyčajná RAM. Pokiaľ ide o rozšírenú pamäť RAM (XDATA), adresa je tiež od 0x0000-0xFFFF a 0x0000 sa tu líši od 0x00 internej RAM a sú úplne nezávislé od dvoch medzier. Líšia sa aj ich prístupové metódy. MCS-51 používa inštrukciu MOVX na čítanie a zápis oblasti XDATA. Okrem toho si prístup do oblasti XDATA vyžaduje pomoc registra DPTR. Pretože iba DPTR môže obsahovať ďalších 16-bitových XDATA adries.


MCS-51 má teda najvyššiu rýchlosť čítania a zápisu v oblasti IDATA a najviac prístupových metód. Rýchlosť prístupu do oblasti XDATA je pomerne nízka. Zásobník MCS-51 by sa mal najskôr vyvinúť v oblasti IDATA a zásobník otvorený v oblasti IDATA je možné ovládať registrom SP zásobníka. Ak je zásobník skutočne príliš veľký a dá sa otvoriť iba v oblasti XDATA, bude ťažké si SP register CPU požičať a štruktúru zásobníka a ukazovateľ zásobníka si môžeme zostaviť iba sami. Pretože externý programový priestor aj dátový priestor sú 0-64K (0x0000-0xFFFF), potom môžem skutočne uložiť problémové / pohodlné programy na prepisovanie a iné dôvody, takže externý KÓD a DATA môžu zdieľať prepisovateľnú pamäť (napríklad rôzne Čo môže RAM vymazateľné a zapisovateľné). Napríklad systém má 64K externú PAMÄŤ. Dolná 32 kB sa používa na uloženie KÓDU a mikrokontrolér môže čítať a spúšťať program v tejto 32 kB a vyššia 32 kB sa používa ako úložné miesto pre používateľské údaje. Ale v tejto dobe, pôvodne úplne nezávislý priestor CODE a DATA, pretože MEMORY je zdieľaná na hardvérovom čipe, sa môžu navzájom ovplyvňovať a program ho môže prepísať sám. Napríklad 0x0020 je inštrukcia a ja prepíšem 0x0020 cez MOVX, potom pomocou MOVC prečítam 0x0020 a údaje sa líšia od originálu.


Podstatou zmätku je, že úložný priestor jednočipového mikropočítača je logickým konceptom, čo sú dva samostatné priestory, ktoré sú umelo rozdelené. Čip MEMORY na hardvérovom obvode je v skutočnosti koncept. Úložný priestor jednočipového mikropočítača bude nakoniec implementovaný na čipe na úrovni obvodu, takže logický úložný priestor sa bude prekrývať v dôsledku pripojenia fyzického obvodu. Ale na logickej úrovni sú tieto dva priestory stále úplne nezávislé.


Príloha: Definícia rôznych názvov úložného priestoru:


Údaje: pevne odkazujúce na 128 RAM 0x00-0x7f vpredu, ktoré je možné čítať a zapisovať priamo z registra, čo je najrýchlejší a najmenší vygenerovaný kód.


Idata: pevne odkazuje na 256 RAM 0x00-0xff vpredu, z ktorých je prvých 128 úplne rovnakých ako 128 dát, len kvôli rôznym prístupovým metódam. idata je prístupná pomocou ukazovateľa podobného C. Príkaz v zostave je: mov ACC, @ Rx. (nie je dôležitý doplnok: idata vc má dobrý efekt prístupu ukazovateľa) xdata: externá rozšírená RAM, všeobecne sa odkazuje na externý priestor 0x0000-0xffff, ku ktorému pristupuje DPTR. pdata: dolných 256 bajtov externej rozšírenej RAM, čítanie a zápis, keď sa adresa objaví na A0-A7, na čítanie a zápis používajte movx ACC, @Rx. Toto je dosť zvláštne a zdá sa, že C51 má túto chybu, preto sa odporúča používať menej. Ale sú tu aj jeho výhody. Konkrétne použitie je prechodný problém. Neviem, ako ho používať, takže som ho tu nezmienil.