Samlingen av generelle formålsregistre (R0-R7) kalles som registerbanker, som godtar en byte med data. Bankregisteret er en del av RAM-minne i den innebygde mikrokontrollere, og den brukes til å lagre programinstruksjonene. Hver mikrokontroller består av forskjellige minnebanker, og hvert bankregister består av en unik adresse for å gjenkjenne lagringsstedet.
Registrer banker i 8051
Registrer banker i 8051
8051-mikrokontrolleren består av fire registerbanker, for eksempel Bank0, Bank1, Bank2, Bank3 som er valgt av PSW (Program Status Word) -registeret. Disse registerbankene er tilstede i det interne RAM-minnet til 8051-mikrokontrolleren, og brukes til å behandle dataene når mikrokontrolleren er programmert.
Bytte av registerbanker
Som standard er 8051 mikrokontrolleren slått på med registerbank 0, og ved å bruke Program Status Word (PSW) kan vi bytte til andre banker. De to bitene av PSW brukes til å bytte mellom registerbankene. Disse to bitene er tilgjengelige med de bitadresserbare instruksjonene SETB og CLR.
Basert på de mulige kombinasjonene av RS1 og RS0 av PSW, endres registerbanken tilsvarende, dvs. hvis RS1 og RS0 er 0, så velges Bank 0. På samme måte er Bank1, 2 og 3 valgt i henhold til verdiene til RS1 og RS0.
Stack Memory Allocation i 8051 Microcontroller
Stakken er et område med random access memory (RAM) som er tildelt til å inneholde midlertidig alle parametrene til variablene. Stakken er også ansvarlig for å minne på rekkefølgen som en funksjon kalles i, slik at den kan returneres riktig. Når funksjonen kalles, legges parametrene og lokale variabler tilknyttet den til stabelen (PUSH). Når funksjonen kommer tilbake, fjernes parametrene og variablene (“POP”) fra bunken. Dette er grunnen til at et programs stabelstørrelse endres kontinuerlig mens programmet kjører.
Registeret som brukes for å få tilgang til stakken kalles stack pointer register. Stakepekeren er et lite register som brukes til å peke mot stakken. Når vi skyver noe inn i stackminnet, øker stackpekeren.
Stack Memory Allocation i 8051 Microcontroller
Eksempel
Når en 8051-mikrokontroller slås på, er stackpekeren som standard verdi 07, som vist i figuren ovenfor. Hvis vi utfører 'PUSH' -operasjon, vil stakkpekeradressen økes og flyttes til et annet register. For å unngå dette problemet, må vi tilordne en annen adresseplassering til stakkpekeren før du starter programmet.
PUSH-drift
'PUSH' brukes til å ta verdiene fra ethvert register og lagre i startadressen til stakkpekeren, dvs. 00h ved å bruke 'PUSH' -operasjonen. Og for neste ‘PUSH’ øker den +1, og lagrer verdien i neste adresse til stakkpekeren, dvs. 01h.
PUSH-drift av Stack
PUSH-operasjon betyr (først inn først ut)
Eksempel: WAP på monteringsspråk for PUSH-drift
0000h
MOV 08h, # 21h
MOV 09h, # 56h
TRYKK 00h
TRYKK 01h
SLUTT
POP-drift
Den brukes til å plassere verdiene fra stakkpekerens maksimale adresse til et annet registers adresse. Hvis vi bruker denne ‘POP’ igjen, så reduseres den med 1, og verdien som er lagret i et hvilket som helst register blir gitt som ‘POP’.
POP-drift i stabelen
POP-operasjon betyr 'Last in First out'.
000H
MOV 00H, # 12H
MOV 01H, # 32H
POP 1FH
POP 0EH
SLUTT
Register over 8051 mikrokontroller
Hvis vi utfører noen operasjoner enten addisjon eller subtraksjon, kan ikke disse operasjonene utføres direkte i minnet, og derfor utføres ved hjelp av registerene. Det finnes forskjellige typer registrerer seg i 8051 mikrokontroller .
Disse registerene er klassifisert i to typer basert på deres virksomhet:
• Register for generelle formål
• Spesialfunksjonsregistre
Generelle formålsregistre
Som vi diskuterte tidligere i denne artikkelen, er det fire forskjellige bankregister hvor hver bank har 8 adresserbare 8-bitersregister, og bare ett bankregister kan nås om gangen. Men ved å endre bankregisterets nummer i flaggregisteret, kan vi få tilgang til andre bankregistre, som har blitt diskutert tidligere på denne artikkelen sammen med avbryte konseptet i 8051 .
Spesialfunksjonsregistre
Spesialfunksjonsregistrene, inkludert akkumulator, register B, datapeker, PCON, PSW, etc., er designet for et forutbestemt formål under produksjon med adressen 80H til FFH, og dette området kan ikke brukes til data- eller programlagringsformål. Disse registerene kan implementeres av bitadresse- og byte-adresseregister.
Typer av spesielle funksjonsregistre
8051 består av fire inngangs- / utgangsrelaterte spesialfunksjonsregistre der det er totalt 32 I / O-linjer. Spesialfunksjonsregistrene styrer verdiene som er lest fra I / O-linjene og spesialfunksjonsregistrene som styrer driften av 8051. Hjelpespesialfunksjonsregistrene er ikke direkte koblet til 8051 - men faktisk uten disse registerene - 8051 kan ikke fungere ordentlig. Registreringssettet 8051 er forklart nedenfor.
Registersett med 8051 mikrokontroller
Å sette en fast konstantverdi i registeret kalles et registersett. Verdiene settes i registerene ved hjelp av instruksjonssett. 8051 følger CISC-instruksjoner med ‘Harvard’-arkitektur. De CISC står for komplekse instruksjonsberegninger . Ulike typer instruksjoner i 8051-mikrokontrolleren inkluderer:
- Aritmetiske instruksjoner
- Betingede instruksjoner
- Instruksjoner for ring og hopp
- Loop Instruksjoner
- Logiske instruksjoner
- Bullion-instruksjoner
1. Regningsinstruksjoner
De aritmetiske instruksjonene utfører flere grunnleggende operasjoner som:
- Addisjon
- Subtraksjon
- Multiplikasjon
- Inndeling
Aritmetiske instruksjoner i 8051 Microcontroller
Eksempler:
en. Addisjon:
Org 0000h
MOV R0, # 03H // flytt verdien 3 er register R0 //
MOV A, # 05H // flytt verdien 5 i akkumulator A //
Legg til A, 00H // akkumulatorverdi ‘5’ med 0 og lagret på akkumulator //
SLUTT
b. Subtraksjon:
Org 0000h
MOV R0, # 03H // flytt verdien 3 er register R0 //
MOV A, # 05H // flytt verdien 5 i akkumulator A //
SUBB A, 03H // A = 5-3 sluttverdien er 2 lagret i akkumulatoren A //
SLUTT
C. Multiplikasjon:
Org 0000h
MOV R0, # 03H // flytt verdien 3 er register R0 //
MOV A, # 05H // flytt verdien 5 i akkumulator A //
MUL A, 03H // A = 5 * 3 sluttverdien er 15, lagret i akkumulatoren A //
SLUTT
D. Divisjon:
Org 0000h
MOV R0, # 03H // flytt verdien 3 er register R0 //
MOV A, # 15H // flytt verdien 5 i akkumulator A //
DIV A, 03H // A = 15/3 sluttverdien er 5 lagret i akkumulatoren A //
SLUTT
2. Betingede instruksjoner
CPUen kan utføre instruksjonene basert på tilstanden ved å sjekke single-bit status eller byte status kalles betingede instruksjoner som:
For å sjekke enkeltbitsstatus i bitadresserbart register
JB- hopp hvis under
JNB- hopp hvis ikke over
For å sjekke bærebitstatus
JC- hopp hvis bær flagg
JNC-hopp hvis ingen bærer
For å sjekke akkumulatorstatusen enten 0 eller 1
JZ- hopp hvis null flagg
JNZ- hopp hvis ikke null
Dette handler om registeret som er satt i 8051 mikrokontroller og deres stackminnetildeling. Vi håper denne artikkelen kan ha gitt deg noen viktige innsikter om emnet sammen med noen veldig interessante programmer som følger med hvert emne. Du kan også skrive til oss for hjelp i koding av mikrokontrolleren og også om nyeste prosjekter på mikrokontroller .