Systèmes embarqués - Banque de registres / pile

Le microcontrôleur 8051 a un total de 128 octets de RAM. Nous discuterons de l'allocation de ces 128 octets de RAM et examinerons leur utilisation comme pile et registre.

Allocation d'espace mémoire RAM dans 8051

Les 128 octets de RAM à l'intérieur du 8051 reçoivent l'adresse 00 à 7FH. Ils sont accessibles directement comme emplacements de mémoire et sont divisés en trois groupes différents comme suit -

  • 32 octets des emplacements 00H à 1FH sont réservés pour les banques de registres et la pile.

  • 16 octets des emplacements 20H à 2FH sont réservés pour la mémoire de lecture / écriture adressable par bit.

  • 80 octets de 30H à 7FH sont utilisés pour le stockage en lecture et en écriture; il est appelé commescratch pad. Ces 80 emplacements RAM sont largement utilisés dans le but de stocker des données et des paramètres par 8051 programmeurs.

Inscrire les banques en 8051

Un total de 32 octets de RAM est mis de côté pour les banques de registres et la pile. Ces 32 octets sont divisés en quatre banques de registres dans lesquelles chaque banque a 8 registres, R0 – R7. Les emplacements de RAM de 0 à 7 sont réservés pour la banque 0 de R0 – R7 où R0 est l'emplacement de RAM 0, R1 est l'emplacement de RAM 1, R2 est l'emplacement 2, et ainsi de suite, jusqu'à l'emplacement de mémoire 7, qui appartient à R7 de la banque 0.

La deuxième banque de registres R0 à R7 commence à l'emplacement de RAM 08 et va aux emplacements OFH. La troisième banque de R0 – R7 commence à l'emplacement de mémoire 10H et va à l'emplacement à 17H. Enfin, les emplacements RAM 18H à 1FH sont réservés pour la quatrième banque de R0 – R7.

Banque de registre par défaut

Si les emplacements de RAM 00–1F sont réservés pour les quatre banques de registres, à quelle banque de registres de R0 – R7 avons-nous accès lorsque le 8051 est mis sous tension? La réponse est la banque de registres 0; c'est-à-dire que les emplacements RAM de 0 à 7 sont accessibles avec les noms R0 à R7 lors de la programmation du 8051. Parce qu'il est beaucoup plus facile de faire référence à ces emplacements RAM par des noms tels que R0 à R7, plutôt que par leurs emplacements mémoire.

Comment changer de banque de registre

La banque de registres 0 est la valeur par défaut lorsque le 8051 est mis sous tension. Nous pouvons passer aux autres banques en utilisant le registre PSW. Les bits D4 et D3 du PSW sont utilisés pour sélectionner la banque de registres souhaitée, puisqu'ils sont accessibles par les instructions adressables par bits SETB et CLR. Par exemple, "SETB PSW.3" définira PSW.3 = 1 et sélectionnera le registre de banque 1.

RS1 RS2 Banque sélectionnée
0 0 Banque0
0 1 Banque1
1 0 Banque2
1 1 Banque3

Stack et ses opérations

Pile dans le 8051

La pile est une section d'une RAM utilisée par la CPU pour stocker des informations telles que des données ou une adresse mémoire sur une base temporaire. L'UC a besoin de cette zone de stockage compte tenu du nombre limité de registres.

Comment accéder aux piles

Comme la pile est une section d'une RAM, il y a des registres à l'intérieur du CPU pour y pointer. Le registre utilisé pour accéder à la pile est appelé registre de pointeur de pile. Le pointeur de pile du 8051 a une largeur de 8 bits et peut prendre une valeur de 00 à FFH. Lorsque le 8051 est initialisé, le registre SP contient la valeur 07H. Cela signifie que l'emplacement RAM 08 est le premier emplacement utilisé pour la pile. L'opération de stockage d'un registre CPU dans la pile est connue sous le nom dePUSH, et récupérer le contenu de la pile dans un registre CPU est appelé un POP.

Pousser dans la pile

Dans le 8051, le pointeur de pile (SP) pointe vers le dernier emplacement utilisé de la pile. Lorsque les données sont poussées sur la pile, le pointeur de pile (SP) est incrémenté de 1. Lorsque PUSH est exécuté, le contenu du registre est sauvegardé sur la pile et SP est incrémenté de 1. Pour pousser les registres sur la pile, nous doivent utiliser leurs adresses RAM. Par exemple, l'instruction "PUSH 1" pousse le registre R1 sur la pile.

Sortir de la pile

Faire sauter le contenu de la pile dans un registre donné est l'opposé du processus de poussée. À chaque opération pop, l'octet supérieur de la pile est copié dans le registre spécifié par l'instruction et le pointeur de pile est décrémenté une fois.