Sähkökäyttöisten sähkölaitteiden ja taajuusmuunnostekniikan kehittämisen ja soveltamisen tutkimus

Jun 09, 2021

Jätä viesti

Ja ARM (tai jopa x 86) MCU / CPU von Neumann -rakenteella, sen osoitetila on yhtenäinen ja jatkuva, koodimuisti / RAM / CPU-rekisterit ja jopa PC-videomuisti osoitetaan kaikki yhtenäisesti. Se' vain, että muisti, jolla on eri toiminnot, vie eri osoitelohkot, ja he tekevät omat tehtävänsä.


Okei, anna GG: n palata takaisin MCS-51: een.


Ohjelmamuistia varten on kaksi osaa: on-chip ja off-chip. Piirin sisäisestä muistista tai sirun ulkopuolisesta ohjelmamuistista riippumatta heidän osoitteensa ovat jaetut. Jos sirulla on 4k ROM-levyä, osoite on 0x0000-0x0FFF ja 0x1000-0xFFFF on ulkoisen ROM-levyn osoiteavaruus. Käytetäänkö ulkoisen ROM-levyn 0x0000-0x0FFF-osaa, se riippuu mikro-ohjaimen EA-nastan tasoarvosta. Kun EA=1, sisäisen ROM-levyn tätä osaa käytetään, ja tätä ulkoisen ROM-levyn osaa tuhlataan eikä sitä käytetä; kun EA=0, ulkoisen ROM-levyn tätä osaa käytetään, ja sisäinen ROM tuhlataan eikä sitä käytetä. Voit lukea tietoja CODE-segmentistä käyttämällä koottua MOVC-käskyä. Yhden sirun mikrotietokone määrittää automaattisesti, mistä muistista tiedot haetaan MOVC-käskyn, EA-tilan ja luettavan osoitearvon mukaisesti


Datamuistia varten se on jaettu kahteen osaan: sisäinen datamuisti (IDATA / RAM) ja ulkoinen datamuisti (XDATA), mutta nämä kaksi muistia eivät jaa osoitetilaa kuten koodimuisti. Yleinen 8051-siru, sisäinen RAM on vain 128B, välillä 0x00-0x7F, ja 0x80-0xFF on SFR: n alue (tässä ovat suorittimen työrekisterit ja erilaiset oheisrekisterit). 8052: n sisäisessä RAM-muistissa on 256B, joten 0x80-0xFF on käytössä oleva korkea 128B RAM. Mutta eikö' ole tämä osa omistettu SFR: lle? Se' s omistettu SFR, mutta huomaa, että SFR pääsy voi käyttää vain" suora osoite" (toteutetaan käyttämällä erityisiä asennusohjeita), ero on tässä. Ainoa osoite, johon pääsee suoraan osoitteella, on SFR, muuten se on tavallinen RAM. Laajennetun RAM-muistin (XDATA) osalta osoite on myös 0x0000-0xFFFF, ja tässä oleva 0x0000 eroaa sisäisen RAM-muistin 0x00: sta, ja ne ovat täysin riippumattomia kahdesta välilyönnistä. Myös heidän pääsytavat ovat erilaiset. MCS-51 käyttää MOVX-käskyjä XDATA-alueen lukemiseen ja kirjoittamiseen. Lisäksi pääsy XDATA-alueelle vaatii DPTR-rekisterin apua. Koska vain DPTR voi pitää seuraavaa 16-bittistä XDATA-osoitetta.


Joten, MCS-51: llä on nopein IDATA-alueen luku- ja kirjoitusnopeus ja eniten käyttömenetelmiä. XDATA-alueelle pääsyn nopeus on suhteellisen hidas. MCS-51-pino tulisi kehittää ensin IDATA-alueelle, ja IDATA-alueella avattua pinoa voidaan ohjata pinon osoitinrekisterillä SP. Jos pino on todella liian suuri ja se voidaan avata vain XDATA-alueella, CPU: n SP-rekisteriä on vaikea lainata, ja voimme rakentaa pinon rakenteen ja pinon osoittimen vain itse. Koska ulkoinen ohjelmatila ja datatila ovat molemmat 0-64K (0x0000-0xFFFF), voin todella tallentaa ongelmia / käteviä uudelleenkirjoittamisohjelmia ja muita syitä, joten ulkoinen CODE ja DATA voivat jakaa uudelleenkirjoitettavan muistin (kuten erilaiset Mitä RAM voi olla poistettavissa ja kirjoitettavissa). Esimerkiksi järjestelmässä on 64K ulkoinen MUISTI. Alempaa 32K: ta käytetään CODE: n tallentamiseen, ja mikro-ohjain voi lukea ja suorittaa ohjelmaa tässä 32K: ssa, ja ylempää 32K: ta käytetään käyttäjätietojen tallennuspaikkana. Mutta tällä hetkellä alun perin täysin itsenäinen CODE- ja DATA-tila, koska MEMORY on jaettu laitteistosirulle, ne voivat vaikuttaa toisiinsa, ja ohjelma voi kirjoittaa ohjelman itse. Esimerkiksi 0x0020 on käsky, ja kirjoitan 0x0020 uudestaan ​​MOVX: n kautta, sitten MOVC: llä luen 0x0020: n, ja tiedot eroavat alkuperäisestä.


Hämmennyksen ydin on, että yhden sirun mikrotietokoneen tallennustila on looginen käsite, joka on kaksi erillistä tilaa, jotka on jaettu keinotekoisesti. Laitteistopiirin MEMORY-siru on todellisuudessa käsite. Yhden sirun mikrotietokoneen tallennustila toteutetaan lopulta sirulle piiritasolla, joten looginen tallennustila menee päällekkäin fyysisen piiriliitännän vuoksi. Mutta loogisella tasolla nämä kaksi välilyöntiä ovat edelleen täysin itsenäisiä.


Liite: Erilaisten tallennustilojen nimien määrittely:


Tiedot: viittaa kiinteästi eteenpäin oleviin 0x00-0x7f: n 128 RAM-muistiin, jotka rekisteri, nopein ja pienin luotu koodi voi lukea ja kirjoittaa suoraan.


Idata: viittaa kiinteästi edessä olevaan 0x00-0xff: n 256 RAM-muistiin, joista ensimmäinen 128 on täsmälleen sama kuin 128 data, vain erilaisten käyttömenetelmien takia. idataan pääsee C: tä muistuttavalla osoittimella. Kokoonpanon lause on: mov ACC, @ Rx. (ei tärkeä lisäys: c: n idatalla on hyvä osoittimen käyttövaikutus) xdata: ulkoinen laajennettu RAM viittaa yleensä ulkoiseen 0x0000-0xffff-tilaan, johon DPTR pääsee. pdata: ulkoisen laajennetun RAM-muistin 256 tavua, luku ja kirjoitus, kun osoite ilmestyy A0-A7: een, käytä movx ACC: tä, @Rx: ää lukemiseen ja kirjoittamiseen. Tämä on varsin erikoista, ja C51: llä näyttää olevan tämä vika, on suositeltavaa käyttää vähemmän. Mutta on myös hänen etuja. Erityinen käyttö on väliongelma, en tiedä miten sitä käyttää, joten en voittanut sitä tässä.