Registreer banken en stapel geheugentoewijzing in 8051 Microcontroller

Probeer Ons Instrument Voor Het Oplossen Van Problemen





De verzameling algemene registers (R0-R7) wordt registerbanken genoemd, die één byte aan gegevens accepteren. Het bankregister maakt deel uit van het RAM-geheugen in het embedded microcontrollers, en het wordt gebruikt om de programma-instructies op te slaan. Elke microcontroller bestaat uit verschillende geheugenbanken en elk bankregister bestaat uit een uniek adres voor het herkennen van de opslaglocatie.

Registreer banken in 8051

Registreer banken in 8051

Registreer banken in 8051



De 8051-microcontroller bestaat uit vier registerbanken, zoals Bank0, Bank1, Bank2, Bank3 die worden geselecteerd door het PSW-register (Program Status Word). Deze registerbanken zijn aanwezig in het interne RAM-geheugen van de 8051-microcontroller en worden gebruikt om de gegevens te verwerken wanneer de microcontroller is geprogrammeerd.


Omschakelen van registerbanken



Standaard wordt de 8051-microcontroller opgestart met registerbank 0 en met behulp van het Program Status Word (PSW) kunnen we overschakelen naar andere banken. De twee bits van PSW worden gebruikt voor het schakelen tussen de registerbanken. Deze twee bits zijn toegankelijk via de bitadresseerbare instructies SETB en CLR.

Gebaseerd op de mogelijke combinaties van RS1 en RS0 van PSW, wordt de registerbank dienovereenkomstig gewijzigd, d.w.z. als RS1 en RS0 0 zijn, dan wordt Bank 0 geselecteerd. Evenzo worden Bank1, 2 & 3 geselecteerd volgens de waarden van RS1 en RS0.

Stapel geheugentoewijzing in 8051 Microcontroller

De stapel is een gebied met willekeurig toegankelijk geheugen (RAM) dat is toegewezen om tijdelijk alle parameters van de variabelen vast te houden. De stapel is ook verantwoordelijk voor het herinneren van de volgorde waarin een functie wordt aangeroepen, zodat deze correct kan worden geretourneerd. Telkens wanneer de functie wordt aangeroepen, worden de bijbehorende parameters en lokale variabelen aan de stapel toegevoegd (PUSH). Als de functie terugkeert, worden de parameters en de variabelen verwijderd ('POP') uit de stapel. Dit is de reden waarom de stapelgrootte van een programma continu verandert terwijl het programma wordt uitgevoerd.


Het register dat wordt gebruikt om toegang te krijgen tot de stapel, wordt het stapelaanwijzerregister genoemd. De stapelaanwijzer is een klein register dat wordt gebruikt om naar de stapel te wijzen. Als we iets in het stapelgeheugen duwen, wordt de stapelaanwijzer groter.

Stapel geheugentoewijzing in 8051 Microcontroller

Stapel geheugentoewijzing in 8051 Microcontroller

Voorbeeld

Wanneer een 8051-microcontroller wordt ingeschakeld, is de waarde van de stack-pointer standaard 07, zoals weergegeven in de bovenstaande afbeelding. Als we de ‘PUSH’ -bewerking uitvoeren, wordt het adres van de stapelaanwijzer verhoogd en naar een ander register verplaatst. Om dit probleem te vermijden, moeten we, voordat we het programma starten, een andere adreslocatie toewijzen aan de stapelaanwijzer.

PUSH-bediening

De ‘PUSH’ wordt gebruikt om de waarden uit elk register te halen en op te slaan in het startadres van de stapelaanwijzer, d.w.z. 00h met behulp van de ‘PUSH’ -bewerking. En voor de volgende ‘PUSH’ verhoogt het +1, en slaat de waarde op in het volgende adres van de stapelwijzer, d.w.z. 01h.

PUSH operatie van Stack

PUSH operatie van Stack

PUSH-bediening betekent (First in First out)

Voorbeeld: WAP in assembleertaal voor PUSH-bewerking

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

POP-werking

Het wordt gebruikt om de waarden van het maximumadres van de stapelwijzer naar het adres van een ander register te plaatsen. Als we deze ‘POP’ opnieuw gebruiken, wordt deze met 1 verlaagd en wordt de waarde die in een register is opgeslagen, weergegeven als ‘POP’.

POP-bewerking in stapel

POP-bewerking in stapel

POP-bediening betekent ‘Last in First out’.

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

Registers van 8051 Microcontroller

Als we een bewerking uitvoeren, of het nu gaat om optellen of aftrekken, dan kunnen deze bewerkingen niet rechtstreeks in het geheugen worden uitgevoerd en worden ze daarom uitgevoerd met behulp van de registers. Er zijn verschillende soorten registreert zich in 8051 microcontroller

Deze registers worden op basis van hun bewerkingen in twee typen ingedeeld:

• Registers voor algemeen gebruik

• Speciale functieregisters

Registers voor algemeen gebruik

Zoals we eerder in dit artikel hebben besproken, zijn er vier verschillende bankregisters waarbij elke bank 8 adresseerbare 8-bits registers heeft, en er kan slechts één bankregister tegelijk worden geopend. Maar door het nummer van het bankregister in het vlaggenregister te wijzigen, hebben we toegang tot andere bankregisters, die eerder in dit document zijn besproken, samen met onderbreken concept in 8051

Registers voor speciale functies

De speciale functieregisters, waaronder de Accumulator, Register B, Data pointer, PCON, PSW, etc., zijn ontworpen voor een vooraf bepaald doel tijdens de fabricage met het adres 80H tot FFH, en dit gebied kan niet worden gebruikt voor het opslaan van data of programma's. Deze registers kunnen worden geïmplementeerd door bitadres- en byte-adresregisters.

Typen speciale functieregisters

De 8051 bestaat uit vier invoer / uitvoer-gerelateerde speciale functieregisters met in totaal 32 I / O-lijnen. De speciale functieregisters besturen de waarden die worden gelezen van de I / O-lijnen en de speciale functieregisters die de werking van 8051 regelen. De extra speciale functieregisters zijn niet rechtstreeks verbonden met de 8051 - maar in feite zonder deze registers - de 8051 kan niet goed werken. De registerset van 8051 wordt hieronder uitgelegd.

Registreer set van 8051 Microcontroller

Het instellen van een vaste constante waarde in het register wordt een registerset genoemd. De waarden worden in de registers ingesteld met behulp van instructieset. De 8051 volgt CISC-instructies met ‘Harvard’ -architectuur. De CISC staat voor complexe computergebruik van instructiesets ​Verschillende soorten instructies in de 8051-microcontroller zijn onder meer:

  1. Rekenkundige instructies
  2. Voorwaardelijke instructies
  3. Oproep- en springinstructies
  4. Loop instructies
  5. Logische instructies
  6. Bullion instructies

1. Rekenkundige instructies

De rekenkundige instructies voeren verschillende basisbewerkingen uit, zoals:

  • Toevoeging
  • Aftrekken
  • Vermenigvuldiging
  • Divisie
Rekenkundige instructies in 8051 Microcontroller

Rekenkundige instructies in 8051 Microcontroller

Voorbeelden:

een. Toevoeging:

Org 0000h
MOV R0, # 03H // verplaats de waarde 3 is register R0 //
MOV A, # 05H // verplaats de waarde 5 in accumulator A //
Voeg A, 00H // accumulatorwaarde ‘5’ toe met 0 en opgeslagen op accumulator //
EINDE

b. Aftrekken:

Org 0000h
MOV R0, # 03H // verplaats de waarde 3 is register R0 //
MOV A, # 05H // verplaats de waarde 5 in accumulator A //
SUBB A, 03H // A = 5-3 eindwaarde is 2 opgeslagen in de Accumulator A //
EINDE

C. vermenigvuldiging:

Org 0000h
MOV R0, # 03H // verplaats de waarde 3 is register R0 //
MOV A, # 05H // verplaats de waarde 5 in accumulator A //
MUL A, 03H // A = 5 * 3 eindwaarde is 15, opgeslagen in de Accumulator A //
EINDE

D. divisie:

Org 0000h
MOV R0, # 03H // verplaats de waarde 3 is register R0 //
MOV A, # 15H // verplaats de waarde 5 in accumulator A //
DIV A, 03H // A = 15/3 eindwaarde is 5 opgeslagen in de Accumulator A //
EINDE

2. Voorwaardelijke instructies

De CPU kan de instructies uitvoeren op basis van de conditie door de single-bit-status te controleren of bytestatus wordt voorwaardelijke instructies genoemd, zoals:

Om de enkelbitsstatus in een bitadresseerbaar register te controleren

JB- spring indien hieronder

JNB- spring zo niet hierboven

Om de draagbitstatus te controleren

JC- spring als je vlag draagt

JNC-jump als geen carry

Om de accumulatorstatus te controleren, ofwel 0 of 1

JZ- sprong als nul vlag

JNZ- sprong zo niet nul

Dit gaat allemaal over het register dat is ingesteld in de 8051-microcontroller en de toewijzing van het stapelgeheugen. We hopen dat dit artikel je misschien wat essentiële inzichten over het onderwerp heeft gegeven, samen met enkele zeer interessante programma's die bij elk onderwerp horen. U kunt ons ook schrijven voor hulp bij codering van de microcontroller en ook over de nieuwste projecten op microcontroller ​