Magrehistro ng Mga Bangko at Alokasyon ng Memory ng Stack sa 8051 Microcontroller

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Ang koleksyon ng mga rehistro ng pangkalahatang layunin (R0-R7) ay tinawag bilang mga rehistro na bangko, na tumatanggap ng isang byte ng data. Ang rehistro ng bangko ay bahagi ng Memorya ng RAM sa naka-embed microcontrollers, at ginagamit ito upang maiimbak ang mga tagubilin sa programa. Ang bawat microcontroller ay binubuo ng iba't ibang mga memory bank, at ang bawat rehistro sa bangko ay binubuo ng isang natatanging address para sa pagkilala sa lokasyon ng imbakan.

Magrehistro ng mga Bangko noong 8051

Magrehistro ng mga Bangko noong 8051

Magrehistro ng mga Bangko noong 8051



Ang 8051 microcontroller binubuo ng apat na rehistro na mga bangko, tulad ng Bank0, Bank1, Bank2, Bank3 na napili ng rehistro ng PSW (Program Status Word) na magparehistro. Ang mga rehistro na bangko ay naroroon sa panloob na memorya ng RAM ng 8051 microcontroller, at ginagamit upang maproseso ang data kapag na-program ang microcontroller.


Paglipat ng Mga Bangko sa Pagrehistro



Bilang default, ang 8051 microcontroller ay pinapagana ng register bank 0 at, sa pamamagitan ng paggamit ng Programang Status Word (PSW), maaari tayong lumipat sa ibang mga bangko. Ang dalawang piraso ng PSW ay ginagamit para sa paglipat sa pagitan ng mga rehistro na bangko. Ang dalawang piraso na ito ay na-access ng bit-addressable na mga tagubilin SETB at CLR.

Batay sa mga posibleng pagsasama ng RS1 at RS0 ng PSW, ang rehistro na bangko ay nabago nang naaayon, ibig sabihin, kung ang RS1 at RS0 ay 0, kung gayon ang Bank 0 ay napili. Katulad nito, ang Bank1, 2 & 3 ay pinili ayon sa mga halaga ng RS1 at RS0.

I-stack ang Allocation ng Memory sa 8051 Microcontroller

Ang stack ay isang lugar ng random access memory (RAM) na inilalaan upang pansamantalang hawakan ang lahat ng mga parameter ng mga variable. Mananagot din ang stack para sa pagpapaalala sa pagkakasunud-sunod kung saan ang isang function ay tinawag upang maibalik ito nang tama. Kailan man tawagan ang pagpapaandar, ang mga parameter at lokal na variable na nauugnay dito ay idinagdag sa stack (PUSH). Kapag bumalik ang pagpapaandar, ang mga parameter at ang mga variable ay tinanggal ('POP') mula sa stack. Ito ang dahilan kung bakit patuloy na nagbabago ang sukat ng stack ng isang programa habang tumatakbo ang programa.


Ang rehistro na ginamit upang ma-access ang stack ay tinatawag na stack pointer register. Ang stack pointer ay isang maliit na rehistro na ginamit upang ituro ang stack. Kapag pinilit namin ang isang bagay sa memorya ng stack, tataas ang stack pointer.

I-stack ang Allocation ng Memory sa 8051 Microcontroller

I-stack ang Allocation ng Memory sa 8051 Microcontroller

Halimbawa

Kapag ang isang 8051 microcontroller ay nagpapatakbo ng lakas, ang stack pointer naglalaman ng halaga na 07, bilang default, tulad ng ipinakita sa itaas na pigura. Kung nagsasagawa kami ng operasyon na 'PUSH', pagkatapos ang pagtaas ng pointer address ay tataas at ilipat sa ibang rehistro. Upang maiwasan ang problemang ito, bago simulan ang programa, kailangan naming magtalaga ng ibang lokasyon ng address sa stack pointer.

Operasyon ng PUSH

Ginagamit ang 'PUSH' para sa pagkuha ng mga halaga mula sa anumang rehistro at pag-iimbak sa panimulang address ng stack pointer, ibig sabihin, 00h sa pamamagitan ng paggamit ng operasyon na 'PUSH'. At, para sa susunod na 'PUSH', nagdaragdag ito ng +1, at iniimbak ang halaga sa susunod na address ng stack pointer, ibig sabihin, 01h.

PUSH pagpapatakbo ng Stack

PUSH pagpapatakbo ng Stack

Ang ibig sabihin ng operasyon ng PUSH (Una sa Una sa labas)

Halimbawa: WAP sa wika ng pagpupulong para sa pagpapatakbo ng PUSH

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

Pagpapatakbo ng POP

Ginagamit ito para sa paglalagay ng mga halaga mula sa maximum na address ng stack pointer sa anumang address ng iba pang rehistro. Kung gagamitin namin muli ang 'POP' na ito, pagkatapos ay nababawasan ito ng 1, at ang halagang nakaimbak sa anumang rehistro ay ibinibigay bilang 'POP'.

Pagpapatakbo ng POP sa Stack

Pagpapatakbo ng POP sa Stack

Ang operasyon ng POP ay nangangahulugang 'Last in First out'.

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

Mga rehistro ng 8051 Microcontroller

Kung nagsasagawa kami ng anumang operasyon maging pagdaragdag o pagbabawas, kung gayon ang mga pagpapatakbo na ito ay hindi magagawang direktang maisagawa sa memorya, at samakatuwid, ay ginaganap sa pamamagitan ng paggamit ng mga rehistro. Mayroong iba't ibang mga uri ng nagrerehistro sa 8051 microcontroller .

Ang mga rehistro na ito ay inuri sa dalawang uri batay sa kanilang operasyon:

• Pangkalahatang Mga Rehistro ng Layunin

• Mga Registrong Espesyal na Pag-andar

Pangkalahatang Mga Rehistro sa Layunin

Tulad ng tinalakay namin nang maaga sa artikulong ito na mayroong apat na magkakaibang mga rehistro sa bangko sa bawat bangko na mayroong 8 address na 8-bit register, at isang rehistro lamang sa bangko ang maaaring ma-access nang paisa-isa. Ngunit, sa pamamagitan ng pagbabago ng numero ng rehistro ng bangko sa flag register, maaari nating ma-access ang iba pang mga rehistro sa bangko, na napag-usapan nang maaga sa papel na ito kasama ang makagambala konsepto noong 8051 .

Mga Espesyal na Rehistro sa Pag-andar

Ang mga espesyal na pagrehistro ng pagpapaandar kasama ang Accumulator, Rehistro B, Data pointer, PCON, PSW, atbp., Ay idinisenyo para sa isang paunang natukoy na layunin sa panahon ng pagmamanupaktura na may address na 80H hanggang FFH, at ang lugar na ito ay hindi maaaring gamitin para sa layunin ng pag-iimbak ng data o programa. Ang mga rehistro na ito ay maaaring ipatupad sa pamamagitan ng bit address at byte address register.

Mga uri ng Mga Registrong Espesyal na Pag-andar

Ang 8051 ay binubuo ng apat na input / output na may kaugnayan sa mga espesyal na pagrehistro ng pag-andar kung saan mayroong ganap na 32 mga linya ng I / O. Kinokontrol ng mga rehistro ng espesyal na pag-andar ang mga halagang nabasa mula sa mga linya ng I / O at ang mga espesyal na pagrehistro ng pagpapaandar na kumokontrol sa pagpapatakbo ng 8051. Ang mga pandiwang pantulong na pantulong na pagpapaandar ay hindi direktang konektado sa 8051 - ngunit, sa katunayan, nang walang mga rehistro na ito - ang 8051 hindi maaaring gumana nang maayos. Ang hanay ng rehistro na 8051 ay ipinaliwanag sa ibaba.

Itakda ang hanay ng 8051 Microcontroller

Ang pagtatakda ng isang nakapirming pare-pareho na halaga sa rehistro ay tinatawag na isang hanay ng rehistro. Ang mga halaga ay nakatakda sa mga rehistro gamit ang hanay ng pagtuturo. Ang 8051 ay sumusunod sa mga tagubilin sa CISC na may arkitekturang 'Harvard'. Ang Ang CISC ay kumakatawan sa kumplikadong pagtuturo na itinakda ang computing . Ang iba't ibang mga uri ng tagubilin sa 8051 microcontroller ay kinabibilangan ng:

  1. Mga Tagubilin sa Arithmetic
  2. Mga Tagubilin sa Kundisyon
  3. Mga Tagubilin sa Tumawag at Tumalon
  4. Mga Tagubilin sa Loop
  5. Lohikal na tagubilin
  6. Mga Tagubilin sa Bullion

1. Mga tagubilin sa Aritmetika

Ang mga tagubiling aritmetika ay nagsasagawa ng maraming pangunahing operasyon tulad ng:

  • Dagdagan
  • Pagbabawas
  • Pagpaparami
  • Dibisyon
Mga tagubilin sa Arithmetic sa 8051 Microcontroller

Mga tagubilin sa Arithmetic sa 8051 Microcontroller

Mga halimbawa:

a. Karagdagan:

Org 0000h
MOV R0, # 03H // ilipat ang halaga 3 ay magparehistro R0 //
MOV A, # 05H // ilipat ang halaga 5 sa nagtitipid A //
Magdagdag ng A, 00H // halaga ng nagtitipon na '5' na may 0 at nakaimbak sa nagtitipid //
WAKAS

b. Pagbawas:

Org 0000h
MOV R0, # 03H // ilipat ang halaga 3 ay magparehistro R0 //
MOV A, # 05H // ilipat ang halaga 5 sa nagtitipid A //
SUBB A, 03H // A = 5-3 huling halaga ay 2 na nakaimbak sa Accumulator A //
WAKAS

C. Pagpaparami:

Org 0000h
MOV R0, # 03H // ilipat ang halaga 3 ay magparehistro R0 //
MOV A, # 05H // ilipat ang halaga 5 sa nagtitipid A //
MUL A, 03H // A = 5 * 3 panghuling halaga ay 15, na nakaimbak sa Accumulator A //
WAKAS

D. Dibisyon:

Org 0000h
MOV R0, # 03H // ilipat ang halaga 3 ay magparehistro R0 //
MOV A, # 15H // ilipat ang halagang 5 sa nagtitipid A //
Ang DIV A, 03H // A = 15/3 panghuling halaga ay 5 na nakaimbak sa Accumulator A //
WAKAS

2. Mga Panuntunang Tagubilin

Ang CPU ay maaaring magpatupad ng mga tagubilin batay sa kundisyon sa pamamagitan ng pag-check sa solong-katayuan o status ng byte ay tinatawag na mga kondisyong tagubilin tulad ng:

Upang suriin ang katayuan ng solong-bit sa bit-addressable register

JB- tumalon kung sa ibaba

JNB- tumalon kung hindi sa itaas

Upang suriin ang katayuan ng bitbit na bit

JC- tumalon kung magdala ng watawat

JNC-jump kung walang dala

Upang suriin ang katayuan ng nagtitipon alinman sa 0 o 1

JZ- tumalon kung zero flag

JNZ- tumalon kung hindi zero

Ito ay tungkol sa register na itinakda sa 8051 microcontroller at ang kanilang paglalaan ng memory memory. Inaasahan namin na ang artikulong ito ay maaaring bigyan ka ng ilang mahahalagang pananaw tungkol sa paksa kasama ang ilang mga kagiliw-giliw na programa na kasama ng bawat paksa. Maaari ka ring sumulat sa amin para sa anumang tulong sa coding ang microcontroller at tungkol din sa pinakabagong mga proyekto sa microcontroller .