Registrera banker och stapla minnesallokering i 8051 Microcontroller

Prova Vårt Instrument För Att Eliminera Problem





Insamlingen av allmänna ändamålsregister (R0-R7) kallas som registerbanker, som accepterar en byte med data. Bankregistret är en del av RAM-minne i det inbäddade mikrokontroller, och den används för att lagra programinstruktionerna. Varje mikrokontroller består av olika minnesbanker och varje bankregister består av en unik adress för att känna igen lagringsplatsen.

Registrera banker 8051

Registrera banker 8051

Registrera banker 8051



8051 mikrokontroller består av fyra registerbanker, såsom Bank0, Bank1, Bank2, Bank3 som väljs av PSW (Program Status Word) -registret. Dessa registerbanker finns i det interna RAM-minnet i 8051-mikrokontrollen och används för att bearbeta data när mikrokontrollern är programmerad.


Byte av registerbanker



Som standard drivs 8051-mikrokontrollern med registerbank 0 och med hjälp av Program Status Word (PSW) kan vi byta till andra banker. De två bitarna av PSW används för att växla mellan registerbankerna. Dessa två bitar nås genom de bitadresserbara instruktionerna SETB och CLR.

Baserat på de möjliga kombinationerna av RS1 och RS0 av PSW ändras registerbanken i enlighet därmed, dvs om RS1 och RS0 är 0, så väljs Bank 0. På samma sätt väljs Bank1, 2 & 3 enligt värdena för RS1 och RS0.

Stack Memory Allocation i 8051 Microcontroller

Stapeln är ett område med RAM-minne (Random Access Memory) som tilldelats för att tillfälligt innehålla alla parametrar för variablerna. Stapeln är också ansvarig för att påminna om i vilken ordning en funktion anropas så att den kan returneras korrekt. Närhelst funktionen anropas läggs parametrarna och lokala variabler som är associerade med den till stacken (PUSH). När funktionen återgår tas parametrarna och variablerna bort (“POP”) från stacken. Det är därför som ett programs stackstorlek ändras kontinuerligt medan programmet körs.


Registret som används för att komma åt stacken kallas stackpekarregister. Stackpekaren är ett litet register som används för att peka på stacken. När vi skjuter något in i stackminnet ökar stackpekaren.

Stack Memory Allocation i 8051 Microcontroller

Stack Memory Allocation i 8051 Microcontroller

Exempel

När en 8051-mikrokontroller slås på, är stackpekarens värde 07 som standard, som visas i figuren ovan. Om vi ​​utför en “PUSH” -åtgärd kommer stackpekarens adress att ökas och flyttas till ett annat register. För att undvika detta problem måste vi tilldela stackpekaren en annan adressplats innan vi startar programmet.

PUSH-operation

'PUSH' används för att ta värdena från vilket register som helst och lagra i startadressen till stackpekaren, dvs 00h genom att använda 'PUSH' -operationen. Och för nästa 'PUSH' ökar den +1 och lagrar värdet i nästa adress till stackpekaren, dvs 01h.

PUSH-drift av Stack

PUSH-drift av Stack

PUSH-operation betyder (först in först ut)

Exempel: WAP på monteringsspråk för PUSH-drift

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

POP-drift

Den används för att placera värdena från stackpekarens maximala adress till alla andra registeradresser. Om vi ​​använder den här 'POP' igen minskar den med 1 och värdet som lagras i alla register ges som 'POP'.

POP-drift i stack

POP-drift i stack

POP-operation betyder 'Last in First out'.

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

Register över 8051 mikrokontroller

Om vi ​​utför någon operation, oavsett om det är addition eller subtraktion, kan dessa operationer inte utföras direkt i minnet och därför utförs de med hjälp av registren. Det finns olika typer av registreras i 8051 mikrokontroller .

Dessa register klassificeras i två typer baserat på deras verksamhet:

• Register för allmänt ändamål

• Specialfunktionsregister

Register för allmänt ändamål

Som vi diskuterade tidigare i den här artikeln att det finns fyra olika bankregister där varje bank har 8 adresserbara 8-bitarsregister och att endast ett bankregister kan nås åt gången. Men genom att ändra bankregistrets nummer i flaggregistret kan vi komma åt andra bankregister, som har diskuterats tidigare på denna artikel tillsammans med avbryta konceptet 8051 .

Specialfunktionsregister

Specialfunktionsregistren inklusive ackumulatorn, registret B, datapekaren, PCON, PSW, etc. är utformade för ett förutbestämt ändamål under tillverkningen med adressen 80H till FFH, och detta område kan inte användas för data- eller programlagringsändamål. Dessa register kan implementeras av bitadress- och byte-adressregister.

Typer av specialfunktionsregister

8051 består av fyra in / ut-relaterade specialfunktionsregister där det finns totalt 32 I / O-linjer. Specialfunktionsregistren styr värdena som läses från I / O-linjerna och specialfunktionsregistren som styr driften av 8051. Extra specialfunktionsregistren är inte direkt anslutna till 8051 - utan i själva verket utan dessa register - 8051 kan inte fungera ordentligt. Registeruppsättningen 8051 förklaras nedan.

Registeruppsättning 8051 Microcontroller

Att ställa in ett fast konstantvärde i registret kallas en registeruppsättning. Värdena ställs in i registren med instruktionsuppsättning. 8051 följer CISC-instruktioner med Harvard-arkitektur. De CISC står för komplex instruktionsuppsättning . Olika typer av instruktioner i 8051 mikrokontroller inkluderar:

  1. Aritmetiska instruktioner
  2. Villkorliga instruktioner
  3. Instruktioner för samtal och hopp
  4. Loop Instruktioner
  5. Logiska instruktioner
  6. Bullion-instruktioner

1. Aritmetiska instruktioner

De aritmetiska instruktionerna utför flera grundläggande operationer som:

  • Tillägg
  • Subtraktion
  • Multiplikation
  • Division
Aritmetiska instruktioner i 8051 Microcontroller

Aritmetiska instruktioner i 8051 Microcontroller

Exempel:

a. Tillägg:

Org 0000h
MOV R0, # 03H // flytta värdet 3 är register R0 //
MOV A, # 05H // flytta värdet 5 i ackumulator A //
Lägg till A, 00H // ackumulatorvärde '5' med 0 och lagras på ackumulator //
SLUTET

b. Subtraktion:

Org 0000h
MOV R0, # 03H // flytta värdet 3 är register R0 //
MOV A, # 05H // flytta värdet 5 i ackumulator A //
SUBB A, 03H // A = 5-3 slutvärdet är 2 lagrat i ackumulatorn A //
SLUTET

C. Multiplikation:

Org 0000h
MOV R0, # 03H // flytta värdet 3 är register R0 //
MOV A, # 05H // flytta värdet 5 i ackumulator A //
MUL A, 03H // A = 5 * 3 slutvärdet är 15, lagrat i ackumulatorn A //
SLUTET

D. Division:

Org 0000h
MOV R0, # 03H // flytta värdet 3 är register R0 //
MOV A, # 15H // flytta värdet 5 i ackumulator A //
DIV A, 03H // A = 15/3 slutvärdet är 5 lagrat i ackumulatorn A //
SLUTET

2. Villkorliga instruktioner

CPU: n kan utföra instruktionerna baserat på villkoret genom att kontrollera enbitsstatus eller byte-status kallas villkorliga instruktioner såsom:

För att kontrollera enbitsstatus i bitadresserbart register

JB- hoppa om nedan

JNB- hoppa om inte ovan

För att kontrollera bärbitstatus

JC- hoppa om bär flagga

JNC-hopp om ingen bär

För att kontrollera ackumulatorstatus antingen 0 eller 1

JZ- hoppa om noll flagga

JNZ- hoppa om inte noll

Det här handlar om registeruppsättningen i 8051-mikrokontroller och deras stackminnesallokering. Vi hoppas att den här artikeln kan ha gett dig några viktiga insikter om ämnet tillsammans med några mycket intressanta program som åtföljer varje ämne. Du kan också skriva till oss för all hjälp i kodning av mikrokontrollern och även om senaste projekten på mikrokontroller .