Reģistrējiet bankas un kaudzes atmiņas sadalījumu 8051 mikrokontrollerī

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Vispārējas nozīmes reģistru kolekciju (R0-R7) sauc par reģistru bankām, kuras pieņem vienu baitu datus. Banku reģistrs ir daļa no RAM atmiņa iegultā mikrokontrolleri, un to izmanto, lai saglabātu programmas instrukcijas. Katrs mikrokontrolleris sastāv no dažādām atmiņas bankām, un katrs bankas reģistrs sastāv no unikālas adreses, lai atpazītu glabāšanas vietu.

Reģistrējiet bankas 8051. gadā

Reģistrējiet bankas 8051. gadā

Reģistrējiet bankas 8051. gadā



8051 mikrokontrolleris sastāv no četrām reģistru bankām, piemēram, Bank0, Bank1, Bank2, Bank3, kuras izvēlas reģistrs PSW (Program Status Word). Šīs reģistru bankas atrodas mikrokontrollera 8051 iekšējā RAM atmiņā un tiek izmantotas datu apstrādei, kad mikrokontrolleris ir ieprogrammēts.


Reģistru banku maiņa



Pēc noklusējuma mikrokontrolleru 8051 darbina ar reģistra banku 0, un, izmantojot programmas statusa vārdu (PSW), mēs varam pāriet uz citām bankām. Divi PSW biti tiek izmantoti, lai pārslēgtos no reģistra bankām. Šiem diviem bitiem piekļūst ar bitu adresējamām instrukcijām SETB un CLR.

Pamatojoties uz iespējamām PSW RS1 un RS0 kombinācijām, reģistru banka tiek attiecīgi mainīta, t.i., ja RS1 un RS0 ir 0, tad tiek izvēlēta banka 0. Līdzīgi tiek izvēlēta 1., 2. un 3. banka atbilstoši RS1 un RS0 vērtībām.

Steka atmiņas piešķiršana 8051 mikrokontrollerī

Steks ir brīvpiekļuves atmiņas (RAM) apgabals, kas piešķirts, lai īslaicīgi turētu visus mainīgo parametrus. Steks ir atbildīgs arī par funkcijas izsaukšanas secības atgādināšanu, lai to varētu pareizi atgriezt. Ikreiz, kad tiek izsaukta funkcija, ar to saistītie parametri un lokālie mainīgie tiek pievienoti kaudzei (PUSH). Kad funkcija atgriežas, parametri un mainīgie tiek noņemti (“POP”) no kaudzes. Tāpēc programmas kaudzes lielums nepārtraukti mainās, kamēr programma darbojas.


Reģistru, ko izmanto, lai piekļūtu kaudzei, sauc par kaudzes rādītāju reģistru. Steka rādītājs ir mazs reģistrs, ko izmanto, lai norādītu uz kaudzi. Kad mēs kaut ko ievietojam kaudzes atmiņā, kaudzes rādītājs palielinās.

Steka atmiņas piešķiršana 8051 mikrokontrollerī

Steka atmiņas piešķiršana 8051 mikrokontrollerī

Piemērs

Kad tiek ieslēgts 8051 mikrokontrolleris, pēc noklusējuma kaudzes rādītāja vērtība ir 07, kā parādīts iepriekš redzamajā attēlā. Ja mēs veiksim ‘PUSH’ darbību, kaudzes rādītāja adrese tiks palielināta un pārvietota uz citu reģistru. Lai izvairītos no šīs problēmas, pirms programmas palaišanas mums kaudzes rādītājam jāpiešķir cita adreses vieta.

PUSH darbība

“PUSH” izmanto, lai ņemtu vērtības no jebkura reģistra un saglabātu kaudzes rādītāja sākuma adresē, t.i., 00h, izmantojot “PUSH” darbību. Nākamajam “PUSH” tas palielina +1 un saglabā vērtību nākamajā kaudzes rādītāja adresē, t.i., 01h.

Skursteņa darbība PUSH

Skursteņa darbība PUSH

PUSH darbības līdzekļi (First in First out)

Piemērs: WAP montāžas valodā PUSH darbībai

0000h
MOV 08h, # 21h
MOV 09h, # 56h
PUSH 00h
PUSH 01h
BEIGT

POP darbība

To izmanto vērtību novietošanai no kaudzes rādītāja maksimālās adreses uz jebkuru citu reģistra adresi. Ja mēs atkal izmantojam šo ‘POP’, tad tas samazinās par 1, un jebkurā reģistrā saglabātā vērtība tiek dota kā ‘POP’.

POP darbība kaudzē

POP darbība kaudzē

POP darbība nozīmē ‘Last in First out’.

000H
MOV 00H, # 12H
MOV 01H, # 32H
POP 1FH
POP 0EH
BEIGT

8051 mikrokontrollera reģistri

Ja mēs veicam jebkuru darbību, neatkarīgi no tā, vai tā ir saskaitīšana vai atņemšana, tad šīs darbības nav iespējams veikt tieši atmiņā, un tāpēc tās veic, izmantojot reģistrus. Ir dažādi veidi reģistrējas 8051 mikrokontrollerī .

Pamatojoties uz to darbību, šie reģistri tiek iedalīti divos veidos:

• Vispārējas nozīmes reģistri

• Īpašo funkciju reģistri

Vispārējas nozīmes reģistri

Kā mēs jau iepriekš runājām šajā rakstā, ka ir četri dažādi banku reģistri, un katrai bankai ir 8 adresējami 8 bitu reģistri, un vienlaikus var piekļūt tikai vienam bankas reģistram. Mainot bankas reģistra numuru karogu reģistrā, mēs varam piekļūt citiem banku reģistriem, kas tika apspriesti iepriekš šajā dokumentā kopā ar pārtraukt koncepciju 8051. gadā .

Īpašo funkciju reģistri

Īpašo funkciju reģistri, ieskaitot akumulatoru, reģistru B, datu rādītāju, PCON, PSW utt., Ir paredzēti iepriekš noteiktiem mērķiem ražošanas laikā ar adresi 80H līdz FFH, un šo apgabalu nevar izmantot datu vai programmu glabāšanas vajadzībām. Šos reģistrus var ieviest pēc bitu un baitu adrešu reģistriem.

Īpašo funkciju reģistru veidi

8051 sastāv no četriem ar ieeju / izeju saistītiem īpašo funkciju reģistriem, kuros ir pavisam 32 I / O līnijas. Īpašo funkciju reģistri kontrolē vērtības, kas nolasītas no I / O līnijām, un īpašo funkciju reģistrus, kas kontrolē 8051. darbību. Papildu īpašo funkciju reģistri nav tieši savienoti ar 8051, bet faktiski bez šiem reģistriem - 8051. nevar darboties pareizi. 8051 reģistru kopa ir paskaidrota zemāk.

8051 mikrokontrollera reģistru komplekts

Fiksētas nemainīgas vērtības iestatīšanu reģistrā sauc par reģistra kopu. Vērtības tiek iestatītas reģistros, izmantojot instrukciju kopu. 8051 izpilda CISC instrukcijas ar ‘Harvard’ arhitektūru. The CISC apzīmē sarežģītu instrukciju kopu skaitļošanu . Dažādu veidu mikrokontrollera instrukcijas 8051 ietver:

  1. Aritmētiskās instrukcijas
  2. Nosacījuma instrukcijas
  3. Zvana un lēciena instrukcijas
  4. Cilpas instrukcijas
  5. Loģiskās instrukcijas
  6. Dārgmetālu instrukcijas

1. Aritmētiskās instrukcijas

Aritmētiskās instrukcijas veic vairākas pamata darbības, piemēram:

  • Papildinājums
  • Atņemšana
  • Reizināšana
  • Nodaļa
Aritmētiskās instrukcijas 8051 mikrokontrollerī

Aritmētiskās instrukcijas 8051 mikrokontrollerī

Piemēri:

a. Papildinājums:

Org 0000h
MOV R0, # 03H // pārvietot vērtību 3 ir reģistrs R0 //
MOV A, # 05H // pārvietojiet 5. vērtību akumulatorā A //
Pievienojiet A, 00H // akumulatora vērtību ‘5’ ar 0 un saglabājiet akumulatorā //
BEIGT

b. Atņemšana:

Org 0000h
MOV R0, # 03H // pārvietot vērtību 3 ir reģistrs R0 //
MOV A, # 05H // pārvietojiet 5. vērtību akumulatorā A //
A SUBB, 03H // A = 5-3 galīgā vērtība ir 2 saglabāta akumulatorā A //
BEIGT

C. Reizināšana:

Org 0000h
MOV R0, # 03H // pārvietot vērtību 3 ir reģistrs R0 //
MOV A, # 05H // pārvietojiet 5. vērtību akumulatorā A //
MUL A, 03H // A = 5 * 3 galīgā vērtība ir 15, glabājas akumulatorā A //
BEIGT

D. nodaļa:

Org 0000h
MOV R0, # 03H // pārvietot vērtību 3 ir reģistrs R0 //
MOV A, # 15H // pārvietojiet 5. vērtību akumulatorā A //
DIV A, 03H // A = 15/3 galīgā vērtība ir 5 saglabāta akumulatorā A //
BEIGT

2. Nosacījuma instrukcijas

CPU var izpildīt instrukcijas, pamatojoties uz nosacījumu, pārbaudot viena bita statusu, vai baitu statusu sauc par nosacītām instrukcijām, piemēram:

Lai pārbaudītu viena bita statusu bitu adresējamā reģistrā

JB - lec, ja zemāk

JNB- lec, ja ne augstāk

Lai pārbaudītu pārnēsāšanas bitu statusu

JC - lec, ja nes karogu

JNC-lec, ja nav nēsāšanas

Lai pārbaudītu akumulatora statusu vai nu 0, vai 1

JZ- lec, ja nulle karoga

JNZ- lec, ja ne nulle

Tas viss ir par reģistru, kas iestatīts 8051 mikrokontrollerī, un to kaudzes atmiņas piešķiršanu. Mēs ceram, ka šis raksts, iespējams, sniedza jums būtisku ieskatu par šo tēmu, kā arī ļoti interesantas programmas, kas pievienotas katrai tēmai. Varat arī rakstīt mums, lai saņemtu palīdzību kodējot mikrokontrolleru un arī par jaunākie projekti par mikrokontrolleru .