Registrare i banchi e l'allocazione della memoria dello stack nel microcontrollore 8051

Prova Il Nostro Strumento Per Eliminare I Problemi





La raccolta di registri di uso generale (R0-R7) è chiamata come banchi di registri, che accettano un byte di dati. Il registro della banca fa parte del Memoria RAM incorporata microcontrollori e viene utilizzato per memorizzare le istruzioni del programma. Ogni microcontrollore è costituito da vari banchi di memoria e ogni registro di banco è costituito da un indirizzo univoco per il riconoscimento della posizione di archiviazione.

Registrare le banche in 8051

Registrare le banche in 8051

Registrare le banche in 8051



Il microcontrollore 8051 consiste di quattro banchi di registri, come Bank0, Bank1, Bank2, Bank3 che sono selezionati dal registro PSW (Program Status Word). Questi banchi di registri sono presenti nella memoria RAM interna del microcontrollore 8051 e vengono utilizzati per elaborare i dati quando il microcontrollore viene programmato.


Cambio delle banche dei registri



Per impostazione predefinita, il microcontrollore 8051 è alimentato con il banco di registri 0 e, utilizzando la Program Status Word (PSW), possiamo passare ad altri banchi. I due bit di PSW vengono utilizzati per la commutazione tra i banchi di registri. A questi due bit si accede tramite le istruzioni indirizzabili a bit SETB e CLR.

In base alle possibili combinazioni di RS1 e RS0 di PSW, il banco di registri viene modificato di conseguenza, ovvero, se RS1 e RS0 sono 0, viene selezionato il banco 0. Allo stesso modo, Bank1, 2 e 3 sono selezionati secondo i valori di RS1 e RS0.

Allocazione della memoria dello stack nel microcontrollore 8051

Lo stack è un'area di memoria ad accesso casuale (RAM) allocata per contenere temporaneamente tutti i parametri delle variabili. Lo stack è anche responsabile di ricordare l'ordine in cui viene chiamata una funzione in modo che possa essere restituita correttamente. Ogni volta che la funzione viene chiamata, i parametri e le variabili locali ad essa associati vengono aggiunti allo stack (PUSH). Quando la funzione ritorna, i parametri e le variabili vengono rimossi ('POP') dallo stack. Questo è il motivo per cui la dimensione dello stack di un programma cambia continuamente mentre il programma è in esecuzione.


Il registro utilizzato per accedere allo stack è chiamato registro del puntatore dello stack. Lo stack pointer è un piccolo registro utilizzato per puntare allo stack. Quando inseriamo qualcosa nella memoria dello stack, il puntatore dello stack aumenta.

Allocazione della memoria dello stack nel microcontrollore 8051

Allocazione della memoria dello stack nel microcontrollore 8051

Esempio

All'accensione di un microcontrollore 8051, il valore contenuto del puntatore dello stack è 07, per impostazione predefinita, come mostrato nella figura sopra. Se eseguiamo l'operazione 'PUSH', l'indirizzo del puntatore dello stack verrà aumentato e spostato su un altro registro. Per evitare questo problema, prima di avviare il programma, dobbiamo assegnare una diversa locazione di indirizzo allo stack pointer.

Operazione PUSH

Il 'PUSH' viene utilizzato per prendere i valori da qualsiasi registro e memorizzare nell'indirizzo iniziale del puntatore dello stack, cioè 00h utilizzando l'operazione 'PUSH'. E, per il successivo 'PUSH', incrementa +1 e memorizza il valore nell'indirizzo successivo del puntatore dello stack, ovvero 01h.

Operazione PUSH di Stack

Operazione PUSH di Stack

L'operazione PUSH significa (First in First out)

Esempio: WAP in linguaggio assembly per l'operazione PUSH

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

Operazione POP

Viene utilizzato per posizionare i valori dall'indirizzo massimo del puntatore dello stack a qualsiasi altro indirizzo del registro. Se usiamo di nuovo questo 'POP', decrementa di 1 e il valore memorizzato in qualsiasi registro viene fornito come 'POP'.

Operazione POP in pila

Operazione POP in pila

L'operazione POP significa 'Last in First out'.

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

Registri del microcontrollore 8051

Se eseguiamo qualsiasi operazione sia di addizione che di sottrazione, allora queste operazioni non possono essere eseguite direttamente in memoria e, quindi, vengono eseguite utilizzando i registri. Esistono diversi tipi di file si registra nel microcontrollore 8051 .

Questi registri sono classificati in due tipi in base alle loro operazioni:

• Registri per scopi generali

• Registri di funzioni speciali

Registri per scopi generali

Come abbiamo discusso in precedenza in questo articolo, esistono quattro diversi registri di banco con ciascun banco con 8 registri indirizzabili a 8 bit e si può accedere a un solo registro di banco alla volta. Tuttavia, modificando il numero del registro della banca nel registro delle bandiere, possiamo accedere ad altri registri bancari, che sono stati discussi in precedenza in questo documento insieme a concetto di interruzione nell'8051 .

Registri di funzioni speciali

I registri delle funzioni speciali che includono l'accumulatore, il registro B, il puntatore di dati, PCON, PSW, ecc. Sono progettati per uno scopo predeterminato durante la produzione con l'indirizzo da 80H a FFH e quest'area non può essere utilizzata per lo scopo di memorizzazione dei dati o del programma. Questi registri possono essere implementati da registri di indirizzi di bit e di indirizzi di byte.

Tipi di registri di funzioni speciali

L'8051 è costituito da quattro registri di funzioni speciali relativi a input / output in cui sono presenti in totale 32 linee di I / O. I registri delle funzioni speciali controllano i valori letti dalle linee di I / O e i registri delle funzioni speciali che controllano il funzionamento dell'8051. I registri delle funzioni speciali ausiliarie non sono direttamente collegati all'8051 - ma, in effetti, senza questi registri - l'8051 non può funzionare correttamente. Il set di registri di 8051 è spiegato di seguito.

Set di registri del microcontrollore 8051

L'impostazione di un valore costante fisso nel registro è chiamata insieme di registri. I valori vengono impostati nei registri utilizzando il set di istruzioni. L'8051 segue le istruzioni CISC con architettura 'Harvard'. Il CISC sta per elaborazione di set di istruzioni complesse . Diversi tipi di istruzioni nel microcontrollore 8051 includono:

  1. Istruzioni aritmetiche
  2. Istruzioni condizionali
  3. Istruzioni di chiamata e salto
  4. Istruzioni di loop
  5. Istruzioni logiche
  6. Istruzioni per lingotti

1. Istruzioni aritmetiche

Le istruzioni aritmetiche eseguono diverse operazioni di base come:

  • Aggiunta
  • Sottrazione
  • Moltiplicazione
  • Divisione
Istruzioni aritmetiche nel microcontrollore 8051

Istruzioni aritmetiche nel microcontrollore 8051

Esempi:

un. Aggiunta:

Org 0000h
MOV R0, # 03H // sposta il valore 3 nel registro R0 //
MOV A, # 05H // sposta il valore 5 nell'accumulatore A //
Aggiungi A, 00H // valore dell'accumulatore '5' con 0 e memorizzato sull'accumulatore //
FINE

b. Sottrazione:

Org 0000h
MOV R0, # 03H // sposta il valore 3 nel registro R0 //
MOV A, # 05H // sposta il valore 5 nell'accumulatore A //
SUBB A, 03H // A = 5-3 il valore finale è 2 memorizzato nell'accumulatore A //
FINE

C. Moltiplicazione:

Org 0000h
MOV R0, # 03H // sposta il valore 3 nel registro R0 //
MOV A, # 05H // sposta il valore 5 nell'accumulatore A //
MUL A, 03H // A = 5 * 3 il valore finale è 15, memorizzato nell'accumulatore A //
FINE

D. Divisione:

Org 0000h
MOV R0, # 03H // sposta il valore 3 nel registro R0 //
MOV A, # 15H // sposta il valore 5 nell'accumulatore A //
DIV A, 03H // A = 15/3 il valore finale è 5 memorizzato nell'accumulatore A //
FINE

2. Istruzioni condizionali

La CPU può eseguire le istruzioni in base alla condizione controllando lo stato a bit singolo o lo stato del byte è chiamato istruzioni condizionali come:

Per controllare lo stato a bit singolo nel registro indirizzabile a bit

JB- salta se sotto

JNB: salta se non sopra

Per controllare lo stato del bit di riporto

JC- salta se porti la bandiera

Salto JNC se non si trasporta

Per controllare lo stato dell'accumulatore 0 o 1

JZ- salta se flag zero

JNZ: salta se non è zero

Questo riguarda il registro impostato nel microcontrollore 8051 e la loro allocazione di memoria dello stack. Speriamo che questo articolo possa averti fornito alcuni spunti essenziali sull'argomento insieme ad alcuni programmi molto interessanti che accompagnano ogni argomento. Puoi anche scriverci per qualsiasi aiuto in codifica del microcontrollore e anche sul ultimi progetti su microcontrollore .