Enregistrer les banques et l'allocation de mémoire de pile dans le microcontrôleur 8051

Essayez Notre Instrument Pour Éliminer Les Problèmes





La collection de registres à usage général (R0-R7) est appelée banques de registres, qui acceptent un octet de données. Le registre bancaire fait partie de la Mémoire RAM dans le microcontrôleurs, et il est utilisé pour stocker les instructions du programme. Chaque microcontrôleur se compose de différentes banques de mémoire, et chaque registre de banque se compose d'une adresse unique pour reconnaître l'emplacement de stockage.

Inscrire les banques en 8051

Inscrire les banques en 8051

Inscrire les banques en 8051



Le microcontrôleur 8051 se compose de quatre banques de registres, telles que Bank0, Bank1, Bank2, Bank3 qui sont sélectionnées par le registre PSW (Program Status Word). Ces banques de registres sont présentes dans la mémoire RAM interne du microcontrôleur 8051, et sont utilisées pour traiter les données lorsque le microcontrôleur est programmé.


Changement de banque de registre



Par défaut, le microcontrôleur 8051 est mis sous tension avec la banque de registres 0 et, en utilisant le mot d'état du programme (PSW), nous pouvons passer à d'autres banques. Les deux bits de PSW sont utilisés pour la commutation entre les banques de registres. Ces deux bits sont accédés par les instructions adressables par bit SETB et CLR.

Sur la base des combinaisons possibles de RS1 et RSO de PSW, la banque de registres est modifiée en conséquence, c'est-à-dire que si RS1 et RSO sont 0, alors la banque 0 est sélectionnée. De même, les banques 1, 2 et 3 sont sélectionnées selon les valeurs de RS1 et RS0.

Allocation de mémoire de pile dans le microcontrôleur 8051

La pile est une zone de mémoire vive (RAM) allouée pour contenir temporairement tous les paramètres des variables. La pile est également chargée de rappeler l'ordre dans lequel une fonction est appelée afin qu'elle puisse être renvoyée correctement. Chaque fois que la fonction est appelée, les paramètres et les variables locales qui lui sont associées sont ajoutés à la pile (PUSH). Lorsque la fonction revient, les paramètres et les variables sont supprimés («POP») de la pile. C’est pourquoi la taille de la pile d’un programme change en permanence pendant l’exécution du programme.


Le registre utilisé pour accéder à la pile est appelé registre de pointeur de pile. Le pointeur de pile est un petit registre utilisé pour pointer vers la pile. Lorsque nous introduisons quelque chose dans la mémoire de la pile, le pointeur de pile augmente.

Allocation de mémoire de pile dans le microcontrôleur 8051

Allocation de mémoire de pile dans le microcontrôleur 8051

Exemple

Lors de la mise sous tension d'un microcontrôleur 8051, la valeur du pointeur de pile contenue est 07, par défaut, comme illustré dans la figure ci-dessus. Si nous effectuons l’opération «PUSH», alors l’adresse du pointeur de pile sera augmentée et décalée vers un autre registre. Pour éviter ce problème, avant de démarrer le programme, nous devons attribuer un emplacement d'adresse différent au pointeur de pile.

Opération PUSH

Le «PUSH» est utilisé pour prendre les valeurs de n’importe quel registre et les stocker dans l’adresse de départ du pointeur de pile, c’est-à-dire 00h en utilisant l’opération «PUSH». Et, pour le prochain 'PUSH', il incrémente +1 et stocke la valeur dans la prochaine adresse du pointeur de pile, c'est-à-dire 01h.

Opération PUSH de la pile

Opération PUSH de la pile

Opération PUSH signifie (premier entré, premier sorti)

Exemple: WAP en langage d'assemblage pour l'opération PUSH

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

Opération POP

Il est utilisé pour placer les valeurs de l’adresse maximale du pointeur de pile vers l’adresse de tout autre registre. Si nous utilisons à nouveau ce «POP», alors il décrémente de 1, et la valeur stockée dans n’importe quel registre est donnée comme «POP».

Opération POP en pile

Opération POP en pile

L’opération POP signifie «dernier entré, premier sorti».

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

Registres du microcontrôleur 8051

Si nous effectuons une opération que ce soit l'addition ou la soustraction, alors ces opérations ne peuvent pas être effectuées directement dans la mémoire, et par conséquent, sont effectuées en utilisant les registres. Il existe différents types de s'inscrit dans le microcontrôleur 8051 .

Ces registres sont classés en deux types en fonction de leurs opérations:

• Registres à usage général

• Registres de fonctions spéciales

Registres à usage général

Comme nous l'avons vu précédemment dans cet article, il existe quatre registres bancaires différents, chaque banque ayant 8 registres 8 bits adressables, et un seul registre bancaire est accessible à la fois. Mais, en changeant le numéro du registre bancaire dans le registre du drapeau, nous pouvons accéder à d’autres registres bancaires, qui ont été discutés plus tôt dans ce document avec concept d'interruption en 8051 .

Registres de fonctions spéciales

Les registres de fonctions spéciales, y compris l'accumulateur, le registre B, le pointeur de données, PCON, PSW, etc., sont conçus dans un but prédéterminé lors de la fabrication avec l'adresse 80H à FFH, et cette zone ne peut pas être utilisée à des fins de stockage de données ou de programme. Ces registres peuvent être mis en œuvre par des registres d'adresses de bits et d'adresses d'octets.

Types de registres de fonctions spéciales

Le 8051 se compose de quatre registres de fonctions spéciales liés aux entrées / sorties dans lesquels il y a au total 32 lignes d'E / S. Les registres de fonctions spéciales contrôlent les valeurs lues sur les lignes d'E / S et les registres de fonctions spéciales qui contrôlent le fonctionnement du 8051. Les registres de fonctions spéciales auxiliaires ne sont pas directement connectés au 8051 - mais, en fait, sans ces registres - le 8051 ne peut pas fonctionner correctement. L'ensemble de registres de 8051 est expliqué ci-dessous.

Ensemble de registres de microcontrôleur 8051

La définition d'une valeur constante fixe dans le registre est appelée un ensemble de registres. Les valeurs sont définies dans les registres à l'aide d'un jeu d'instructions. Le 8051 suit les instructions du CISC avec l’architecture «Harvard». Le CISC est synonyme de calcul de jeux d'instructions complexes . Les différents types d'instructions du microcontrôleur 8051 comprennent:

  1. Instructions arithmétiques
  2. Instructions conditionnelles
  3. Instructions d'appel et de saut
  4. Instructions de boucle
  5. Instructions logiques
  6. Instructions relatives aux lingots

1. Instructions arithmétiques

Les instructions arithmétiques effectuent plusieurs opérations de base telles que:

  • Une addition
  • Soustraction
  • Multiplication
  • Division
Instructions arithmétiques dans le microcontrôleur 8051

Instructions arithmétiques dans le microcontrôleur 8051

Exemples:

une. Une addition:

Org 0000h
MOV R0, # 03H // déplacer la valeur 3 est le registre R0 //
MOV A, # 05H // déplacer la valeur 5 dans l'accumulateur A //
Ajouter A, 00H // valeur d’accumulateur «5» avec 0 et stockée sur l’accumulateur //
FINIR

b. Soustraction:

Org 0000h
MOV R0, # 03H // déplacer la valeur 3 est le registre R0 //
MOV A, # 05H // déplacer la valeur 5 dans l'accumulateur A //
SUBB A, 03H // A = 5-3 la valeur finale est 2 stockée dans l'accumulateur A //
FINIR

C. Multiplication:

Org 0000h
MOV R0, # 03H // déplacer la valeur 3 est le registre R0 //
MOV A, # 05H // déplacer la valeur 5 dans l'accumulateur A //
MUL A, 03H // A = 5 * 3 la valeur finale est 15, stockée dans l'accumulateur A //
FINIR

D. Division:

Org 0000h
MOV R0, # 03H // déplacer la valeur 3 est le registre R0 //
MOV A, # 15H // déplacer la valeur 5 dans l'accumulateur A //
DIV A, 03H // A = 15/3 la valeur finale est 5 stockée dans l'accumulateur A //
FINIR

2. Instructions conditionnelles

La CPU peut exécuter les instructions en fonction de la condition en vérifiant que l'état d'un seul bit ou l'état d'octet est appelé instructions conditionnelles telles que:

Pour vérifier l'état d'un bit dans un registre adressable par bit

JB- sauter si ci-dessous

JNB- sauter sinon au-dessus

Pour vérifier l'état du bit de retenue

JC- sauter si porter le drapeau

JNC-jump si pas de report

Pour vérifier l'état de l'accumulateur 0 ou 1

JZ- saut si zéro drapeau

JNZ- saute sinon zéro

Il s'agit du registre défini dans le microcontrôleur 8051 et de leur allocation de mémoire de pile. Nous espérons que cet article vous aura donné des informations essentielles sur le sujet ainsi que des programmes très intéressants accompagnant chaque sujet. Vous pouvez également nous écrire pour toute aide concernant codage du microcontrôleur et aussi sur le derniers projets sur microcontrôleur .