I ARM (ili čak x86) MCU / CPU s von Neumann strukturom, njegov adresni prostor je jedinstven i kontinuiran, kodna memorija / RAM / CPU registri, pa čak i PC video memorija su svi adresirani ravnomjerno. Samo što memorija s različitim funkcijama zauzima različite adresne blokove, a oni rade svoje stvari.
Vratimo se na MCS-51.
Za programsku memoriju postoje dva dijela: on-chip i off-chip. I bez obzira na memoriju programa na čipu ili memoriju off-chip programa, njihove adrese se dijele. Ako na čipu ima 4k ROM-a, adresa je 0x0000-0x0FFF, a 0x1000-0xFFFF je adresni prostor vanjskog ROM-a. Koristi li se 0x0000-0x0FFF dio vanjskog ROM-a, to ovisi o vrijednosti razine EA igle mikrokontrolera. Kada se koristi EA=1, koristi se ovaj dio internog ROM-a, a ovaj dio vanjskog ROM-a se troši i ne koristi; kada se koristi EA=0, koristi se ovaj dio vanjskog ROM-a, a unutarnji ROM se troši i ne koristi. Za čitanje podataka iz segmenta CODE koristite sastavljenu uputu za MOVC. Mikroračunalo s jednim čipom automatski će odrediti iz koje memorije dohvatiti podatke u skladu s uputama MOVC-a, statusom EA i vrijednošću adrese koju treba pročitati
Za podatkovnu memoriju podijeljena je u dva dijela: internu podatkovnu memoriju (IDATA/RAM) i vanjsku podatkovnu memoriju (XDATA), ali te dvije memorije ne dijele adresni prostor poput kodne memorije. Opći 8051 čip, interni RAM je samo 128B, od 0x00-0x7F, a od 0x80-0xFF je područje SFR-a (cpu radni registri i razni periferni registri su ovdje). Za 8052, interni RAM ima 256B, tako da je 0x80-0xFF visokih 128B RAM-a u uporabi. Ali nije li ovaj dio posvećen SFR-u? Posvećen je SFR-u, ali imajte na umu da SFR pristup može koristiti samo "izravno adresiranje" (implementirano pomoću posebnih uputa za montažu), razlika je ovdje. Samo adresa kojoj se pristupa izravnim adresiranjem je SFR, inače je to obični RAM. Što se tiče produženog RAM-a (XDATA), adresa je također od 0x0000-0xFFFF, a 0x0000 ovdje se razlikuje od 0x00 unutarnjeg RAM-a, a potpuno su neovisni o dva prostora. Njihove metode pristupa su također različite. MCS-51 koristi MOVX upute za čitanje i pisanje XDATA područja. Štoviše, pristup području XDATA zahtijeva pomoć registra DPTR-a. Budući da samo DPTR može držati sljedeću 16-bitnu XDATA adresu.
Dakle, MCS-51 ima najbržu brzinu čitanja i pisanja IDATA područja i najviše metoda pristupa. Brzina pristupa području XDATA relativno je spora. Stog MCS-51 prvo treba razviti u području IDATA, a stog otvoren u području IDATA može se kontrolirati SP-om registra pokazivača stoga. Ako je stog stvarno prevelik i može se otvoriti samo u području XDATA, onda će SP registar CPU-a biti teško posuditi, a strukturu stoga i pokazivač stoga možemo konstruirati samo sami. Budući da su vanjski programski prostor i podatkovni prostor i 0-64K (0x0000-0xFFFF), onda zapravo mogu uštedjeti probleme / praktične programe za prepisivanje i druge razloge, vanjski KOD i PODACI mogu dijeliti memoriju koja se može ponovno pisati (kao što su različiti Što RAM se može izbrisati i pisati). Na primjer, sustav ima 64K vanjsku MEMORIJU. Donji 32K koristi se za spremanje KOD-a, a mikrokontroler može čitati i izvoditi program u ovom 32K, a viši 32K koristi se kao mjesto za pohranu korisničkih podataka. No, u ovom trenutku, izvorno potpuno neovisan CODE i DATA prostor, jer se memorija dijeli na hardverskom čipu, oni mogu utjecati jedni na druge, a program može sam prepisati program. Na primjer, 0x0020 je uputa i prepisujem 0x0020 putem MOVX-a, zatim koristim MOVC za čitanje 0x0020, a podaci se razlikuju od originala.
Srž konfuzije je da je prostor za pohranu mikroračunala s jednim čipom logičan koncept, a to su dva odvojena prostora koja su umjetno podijeljena. MEMORY čip na hardverskom krugu je koncept u stvarnosti. Prostor za pohranu mikroračunala s jednim čipom na kraju će se implementirati na čipu na razini kruga, tako da će se logički prostor za pohranu preklapati zbog fizičkog spoja kruga. Ali na logičnoj razini, ova dva prostora su još uvijek potpuno neovisna.
Privitak: Definicija različitih naziva prostora za pohranu:
Podaci: fiksno pogledajte 128 RAM-ova 0x00-0x7f sprijeda, koji se mogu izravno čitati i pisati registrom, najbržim i najmanjim generiranim kodom.
Idata: fiksno se odnosi na 256 RAM-ova 0x00-0xff sprijeda, od kojih je prvih 128 potpuno isto kao i 128 podataka, samo zbog različitih metoda pristupa. ipodacima se pristupa pomoću pokazivača sličnog C. Izjava u sklopu je: mov ACC,@Rx. (nije važan dodatak: idata u c ima dobar efekt pristupa pokazivaču) xdata: vanjski prošireni RAM, općenito se odnosi na vanjski prostor 0x0000-0xffff, kojem pristupa DPTR. pdata: donjih 256 bajta vanjskog proširenog RAM-a, čitanje i pisanje kada se adresa pojavi na A0-A7, koristite movx ACC, @Rx za čitanje i pisanje. To je vrlo posebno, a čini se da C51 ima ovaj bug, preporuča se koristiti manje. Ali postoje i njegove prednosti. Specifična upotreba je srednji problem, ne znam kako ga koristiti, pa ga ovdje neću spominjati.








