Registrer banker og stak hukommelsesallokering i 8051 Microcontroller

Registrer banker og stak hukommelsesallokering i 8051 Microcontroller

Samlingen af ​​generelle formålsregistre (R0-R7) kaldes som registerbanker, der accepterer en byte af data. Bankregistret er en del af RAM-hukommelse i den integrerede mikrokontrollere, og det bruges til at gemme programinstruktionerne. Hver mikrokontroller består af forskellige hukommelsesbanker, og hvert bankregister består af en unik adresse til genkendelse af lagerplaceringen.



Registrer banker i 8051

Registrer banker i 8051

Registrer banker i 8051

8051-mikrocontrolleren består af fire registerbanker, såsom Bank0, Bank1, Bank2, Bank3, som er valgt af PSW (Program Status Word) -registeret. Disse registerbanker er til stede i 8051-mikrocontrollerens interne RAM-hukommelse og bruges til at behandle dataene, når mikrocontrolleren er programmeret.






Skift af registerbank

Som standard er 8051-mikrocontrolleren tændt med registerbank 0, og ved at bruge Program Status Word (PSW) kan vi skifte til andre banker. De to bits PSW bruges til at skifte mellem registerbankerne. Disse to bits fås ved hjælp af de bitadresserbare instruktioner SETB og CLR.



Baseret på de mulige kombinationer af RS1 og RS0 af PSW ændres registerbanken i overensstemmelse hermed, dvs. hvis RS1 og RS0 er 0, så vælges Bank 0. Tilsvarende er Bank1, 2 & 3 valgt i henhold til værdierne for RS1 og RS0.

Stack Memory Allocation i 8051 Microcontroller

Stakken er et område med random access memory (RAM), der er allokeret til midlertidigt at indeholde alle parametrene for variablerne. Stakken er også ansvarlig for at minde den rækkefølge, som en funktion kaldes i, så den kan returneres korrekt. Når funktionen kaldes, føjes parametrene og lokale variabler, der er knyttet til den, til stakken (PUSH). Når funktionen vender tilbage, fjernes parametrene og variablerne (“POP”) fra stakken. Dette er grunden til, at et programs stakstørrelse ændres kontinuerligt, mens programmet kører.


Det register, der bruges til at få adgang til stakken, kaldes stakpointerregister. Stakemarkøren er et lille register, der bruges til at pege på stakken. Når vi skubber noget ind i stakhukommelsen, stiger stakemarkøren.

Stack Memory Allocation i 8051 Microcontroller

Stack Memory Allocation i 8051 Microcontroller

Eksempel

Når en 8051-mikrocontroller tændes, er stackmarkørens værdi som standard 07 som vist i ovenstående figur. Hvis vi udfører 'PUSH' -operation, øges stakmarkørens adresse og flyttes til et andet register. For at undgå dette problem skal vi, før vi starter programmet, tildele en anden adresseplacering til stakmarkøren.

PUSH-drift

'PUSH' bruges til at tage værdierne fra ethvert register og lagre i startadressen til stakmarkøren, dvs. 00h ved hjælp af 'PUSH' -funktionen. Og for den næste 'PUSH' forøger den +1 og gemmer værdien i den næste adresse til stakmarkøren, dvs. 01h.

PUSH-drift af Stack

PUSH-drift af Stack

PUSH-betjening betyder (først ind først ud)

Eksempel: WAP på samlingssprog til PUSH-drift

0000 timer
MOV 08h, # 21h
MOV 09h, # 56h
TRYK 00h
SKYV 01h
ENDE

POP-drift

Det bruges til at placere værdierne fra stakemarkørens maksimale adresse til ethvert andet registers adresse. Hvis vi bruger denne 'POP' igen, reduceres den med 1, og værdien, der er gemt i ethvert register, gives som 'POP'.

POP-drift i stak

POP-drift i stak

POP-operation betyder 'Last in First out'.

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

Register over 8051 mikrokontroller

Hvis vi udfører nogen operation, hvad enten addition eller subtraktion er, kan disse operationer ikke udføres direkte i hukommelsen og udføres derfor ved hjælp af registre. Der er forskellige typer registreres i 8051 mikrokontroller .

Disse registre er klassificeret i to typer baseret på deres operationer:

• Register over almindelige formål

• Register over specielle funktioner

Generelle formålsregistre

Som vi diskuterede tidligere i denne artikel, er der fire forskellige bankregistre, hvor hver bank har 8 adresserbare 8-bit-registre, og kun et bankregister kan fås ad gangen. Men ved at ændre bankregistrets nummer i flagregisteret kan vi få adgang til andre bankregistre, som er blevet diskuteret tidligere på dette papir sammen med afbryde koncept i 8051 .

Specialfunktionsregistre

De specielle funktionsregistre inklusive akkumulator, register B, datapeger, PCON, PSW osv. Er designet til et forudbestemt formål under fremstillingen med adressen 80H til FFH, og dette område kan ikke bruges til data- eller programlagringsformålet. Disse registre kan implementeres af bitadresse- og byte-adresseregistre.

Typer af specialfunktionsregistre

8051 består af fire input / output relaterede specialfunktionsregistre, hvor der er totalt 32 I / O-linjer. Specialfunktionsregistrene styrer de aflæste værdier fra I / O-linjerne og specialfunktionsregistrene, der styrer driften af ​​8051. Hjælpefunktionsspecifikke registre er ikke direkte forbundet til 8051 - men faktisk uden disse registre - 8051 ikke fungerer korrekt. Registersættet 8051 forklares nedenfor.

Registrer sæt 8051 Microcontroller

Indstilling af en fast konstant værdi i registret kaldes et registersæt. Værdierne indstilles i registre ved hjælp af instruktions sæt. 8051 følger CISC instruktioner med 'Harvard' arkitektur. Det CISC står for kompleks instruktionssæt computing . Forskellige instruktioner i 8051-mikrocontrolleren inkluderer:

  1. Aritmetiske instruktioner
  2. Betingede instruktioner
  3. Opkald og spring instruktioner
  4. Loop-instruktioner
  5. Logiske instruktioner
  6. Bullion-instruktioner

1. Aritmetiske instruktioner

De aritmetiske instruktioner udfører flere grundlæggende operationer såsom:

  • Tilføjelse
  • Subtraktion
  • Multiplikation
  • Division
Aritmetiske instruktioner i 8051 Microcontroller

Aritmetiske instruktioner i 8051 Microcontroller

Eksempler:

en. Tilføjelse:

Org 0000h
MOV R0, # 03H // flyt værdien 3 er register R0 //
MOV A, # 05H // flyt værdien 5 i akkumulator A //
Tilføj A, 00H // akkumulatorværdi '5' med 0 og gemt på akkumulator //
ENDE

b. Subtraktion:

Org 0000h
MOV R0, # 03H // flyt værdien 3 er register R0 //
MOV A, # 05H // flyt værdien 5 i akkumulator A //
SUBB A, 03H // A = 5-3 slutværdien er 2 gemt i akkumulator A //
ENDE

C. Multiplikation:

Org 0000h
MOV R0, # 03H // flyt værdien 3 er register R0 //
MOV A, # 05H // flyt værdien 5 i akkumulator A //
MUL A, 03H // A = 5 * 3 slutværdien er 15, gemt i akkumulatoren A //
ENDE

D. Division:

Org 0000h
MOV R0, # 03H // flyt værdien 3 er register R0 //
MOV A, # 15H // flyt værdien 5 i akkumulator A //
DIV A, 03H // A = 15/3 slutværdien er 5 gemt i akkumulatoren A //
ENDE

2. Betingede instruktioner

CPU'en kan udføre instruktionerne baseret på betingelsen ved at kontrollere single-bit status eller byte status kaldes betingede instruktioner såsom:

For at kontrollere single-bit status i bit-adresserbart register

JB- spring hvis nedenunder

JNB- spring, hvis ikke over

For at kontrollere bærestatusstatus

JC- spring, hvis bære flag

JNC-spring, hvis der ikke er noget at bære

For at kontrollere akkumulatorstatus enten 0 eller 1

JZ- spring hvis nul flag

JNZ- spring, hvis ikke nul

Dette handler om det register, der er indstillet i 8051-mikrocontroller og deres allokering af stakhukommelse. Vi håber, at denne artikel muligvis har givet dig nogle vigtige viden om emnet sammen med nogle meget interessante programmer, der ledsager hvert emne. Du kan også skrive til os for hjælp i kodning af mikrocontrolleren og også om nyeste projekter på mikrocontroller .