Înregistrați băncile și stocați alocarea memoriei în microcontrolerul 8051

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





Colectarea registrelor de uz general (R0-R7) se numește bănci de registre, care acceptă un octet de date. Registrul bancar face parte din Memorie RAM încorporată microcontrolere și este folosit pentru a stoca instrucțiunile programului. Fiecare microcontroler este format din diverse bănci de memorie și fiecare registru bancar constă dintr-o adresă unică pentru recunoașterea locației de stocare.

Înregistrați băncile în 8051

Înregistrați băncile în 8051

Înregistrați băncile în 8051



Microcontrolerul 8051 este format din patru bănci de registru, cum ar fi Bank0, Bank1, Bank2, Bank3 care sunt selectate de registrul PSW (Program Status Word). Aceste bănci de registre sunt prezente în memoria RAM internă a microcontrolerului 8051 și sunt utilizate pentru a procesa datele atunci când microcontrolerul este programat.


Schimbarea băncilor de registru



În mod implicit, microcontrolerul 8051 este alimentat cu banca de registre 0 și, folosind Word Status Program (PSW), putem trece la alte bănci. Cei doi biți de PSW sunt folosiți pentru comutarea între băncile de registre. Acești doi biți sunt accesați de instrucțiunile SETB și CLR adresabile biților.

Pe baza combinațiilor posibile de RS1 și RS0 de PSW, banca registrului este modificată în consecință, adică, dacă RS1 și RS0 sunt 0, atunci Banca 0 este selectată. În mod similar, Bank1, 2 & 3 sunt selectate conform valorilor RS1 și RS0.

Alocarea memoriei stivei în microcontrolerul 8051

Stiva este o zonă de memorie cu acces aleator (RAM) alocată pentru a păstra temporar toți parametrii variabilelor. Stiva este, de asemenea, responsabilă pentru reamintirea ordinii în care este apelată o funcție, astfel încât să poată fi returnată corect. Ori de câte ori funcția este apelată, parametrii și variabilele locale asociate acesteia sunt adăugate la stivă (PUSH). Când funcția revine, parametrii și variabilele sunt eliminate („POP”) din stivă. Acesta este motivul pentru care dimensiunea stivei unui program se modifică continuu în timp ce programul rulează.


Registrul utilizat pentru a accesa stiva se numește registru indicator stivă. Pointerul stivei este un mic registru folosit pentru a indica stiva. Când împingem ceva în memoria stivei, indicatorul stivei crește.

Alocarea memoriei stivei în microcontrolerul 8051

Alocarea memoriei stivei în microcontrolerul 8051

Exemplu

Când se pornește un microcontroler 8051, indicatorul stivei conține valoarea 07, în mod implicit, așa cum se arată în figura de mai sus. Dacă efectuăm operația „PUSH”, atunci adresa indicatorului stivei va fi mărită și mutată într-un alt registru. Pentru a evita această problemă, înainte de a începe programul, trebuie să atribuim o locație de adresă diferită indicatorului stivei.

Operațiunea PUSH

„PUSH” este utilizat pentru preluarea valorilor din orice registru și stocarea în adresa de pornire a indicatorului stivei, adică 00h utilizând operația „PUSH”. Și, pentru următorul „PUSH”, crește +1 și stochează valoarea la următoarea adresă a indicatorului stivei, adică 01h.

Operațiunea PUSH a Stivei

Operațiunea PUSH a Stivei

Operare PUSH înseamnă (First in First out)

Exemplu: WAP în limbajul de asamblare pentru operația PUSH

0000h
MOV 08h, # 21h
MOV 09h, # 56h
PUSH 00h
ÎMPINGE 01h
SFÂRȘIT

Operațiune POP

Acesta este utilizat pentru plasarea valorilor de la adresa maximă a indicatorului stivei la adresa oricărui alt registru. Dacă folosim din nou acest „POP”, atunci acesta scade cu 1, iar valoarea stocată în orice registru este dată ca „POP”.

Operațiune POP în stivă

Operațiune POP în stivă

Operațiunea POP înseamnă „Last in First Out”.

000H
MOV 00H, # 12H
MOV 01H, # 32H
POP 1FH
POP 0EH
SFÂRȘIT

Registrele microcontrolerului 8051

Dacă efectuăm orice operație indiferent dacă este vorba de adunare sau scădere, atunci aceste operații nu pot fi efectuate direct în memorie și, prin urmare, sunt efectuate utilizând registrele. Există diferite tipuri de se înregistrează în microcontroler 8051 .

Aceste registre sunt clasificate în două tipuri pe baza operațiunilor lor:

• Registrele cu scop general

• Registre de funcții speciale

Registrele cu scop general

După cum am discutat mai devreme în acest articol, există patru registre de bănci diferite, fiecare bancă având 8 registre de 8 biți adresabile și un singur registru bancar poate fi accesat la un moment dat. Dar, schimbând numărul registrului bancar din registrul de pavilion, putem accesa alte registre bancare, care au fost discutate mai devreme în acest document, împreună cu concept de întrerupere în 8051 .

Registrele de funcții speciale

Registrele de funcții speciale, incluzând acumulatorul, registrul B, indicatorul de date, PCON, PSW etc., sunt proiectate pentru un scop prestabilit în timpul fabricației cu adresa 80H la FFH, iar această zonă nu poate fi utilizată pentru stocarea datelor sau a programului. Aceste registre pot fi implementate prin registre de adrese de biți și adrese de octeți.

Tipuri de registre de funcții speciale

8051 este format din patru registre de funcții speciale legate de intrare / ieșire în care există în total 32 de linii I / O. Registrele de funcții speciale controlează valorile citite de pe liniile I / O și registrele de funcții speciale care controlează funcționarea 8051. Registrele de funcții speciale auxiliare nu sunt conectate direct la 8051 - ci, de fapt, fără aceste registre - 8051 nu poate funcționa corect. Setul de registre 8051 este explicat mai jos.

Înregistrați setul de microcontroler 8051

Setarea unei valori constante fixe în registru se numește set de registre. Valorile sunt setate în registre utilizând setul de instrucțiuni. 8051 urmează instrucțiunile CISC cu arhitectura „Harvard”. CISC înseamnă calculul complex de instrucțiuni . Diferitele tipuri de instrucțiuni din microcontrolerul 8051 includ:

  1. Instrucțiuni aritmetice
  2. Instrucțiuni condiționate
  3. Instrucțiuni de apelare și saltare
  4. Instrucțiuni pentru buclă
  5. Instrucțiuni logice
  6. Instrucțiuni pentru lingouri

1. Instrucțiuni aritmetice

Instrucțiunile aritmetice efectuează mai multe operațiuni de bază, cum ar fi:

  • Plus
  • Scădere
  • Multiplicare
  • Divizia
Instrucțiuni aritmetice în microcontroler 8051

Instrucțiuni aritmetice în microcontroler 8051

Exemple:

A. Plus:

Org 0000h
MOV R0, # 03H // mutați valoarea 3 este registrul R0 //
MOV A, # 05H // mutați valoarea 5 în acumulatorul A //
Adăugați A, 00H // valoarea acumulatorului ‘5’ cu 0 și stocată pe acumulator //
SFÂRȘIT

b. Scădere:

Org 0000h
MOV R0, # 03H // mutați valoarea 3 este registrul R0 //
MOV A, # 05H // mutați valoarea 5 în acumulatorul A //
SUBB A, 03H // A = 5-3 valoarea finală este 2 stocată în acumulatorul A //
SFÂRȘIT

C. Multiplicare:

Org 0000h
MOV R0, # 03H // mutați valoarea 3 este registrul R0 //
MOV A, # 05H // mutați valoarea 5 în acumulatorul A //
MUL A, 03H // A = 5 * 3 valoarea finală este 15, stocată în acumulatorul A //
SFÂRȘIT

D. Divizia:

Org 0000h
MOV R0, # 03H // mutați valoarea 3 este registrul R0 //
MOV A, # 15H // mutați valoarea 5 în acumulatorul A //
DIV A, 03H // A = 15/3 valoarea finală este 5 stocată în acumulatorul A //
SFÂRȘIT

2. Instrucțiuni condiționate

CPU poate executa instrucțiunile pe baza condiției verificând starea unui singur bit sau starea de octet se numește instrucțiuni condiționate, cum ar fi:

Pentru a verifica starea unui singur bit în registrul bit-adresabil

JB- sari dacă este mai jos

JNB- sari dacă nu deasupra

Pentru a verifica starea bitului de transport

JC- sari dacă poartă steagul

JNC-jump dacă nu există

Pentru a verifica starea acumulatorului fie 0, fie 1

JZ- sari dacă zero pavilion

JNZ- sari dacă nu zero

Este vorba despre registrul setat în microcontrolerul 8051 și alocarea memoriei stivei lor. Sperăm că acest articol ar fi putut să vă ofere câteva informații esențiale despre subiect, împreună cu câteva programe foarte interesante care însoțesc fiecare subiect. De asemenea, ne puteți scrie pentru orice ajutor în codarea microcontrolerului și, de asemenea, despre ultimele proiecte pe microcontroler .