Sistemas incorporados - Banco de registros / pilha
O microcontrolador 8051 tem um total de 128 bytes de RAM. Discutiremos sobre a alocação desses 128 bytes de RAM e examinaremos seu uso como pilha e registro.
Alocação de espaço de memória RAM em 8051
Os 128 bytes de RAM dentro do 8051 são atribuídos aos endereços 00 a 7FH. Eles podem ser acessados diretamente como locais de memória e são divididos em três grupos diferentes, como segue -
32 bytes das localizações 00H a 1FH são reservadas para bancos de registro e a pilha.
16 bytes das localizações 20H a 2FH são reservados para memória de leitura / gravação endereçável por bit.
80 bytes das localizações 30H a 7FH são usados para armazenamento de leitura e gravação; é chamado descratch pad. Esses 80 locais de RAM são amplamente usados com o propósito de armazenar dados e parâmetros por 8051 programadores.
Registre Bancos em 8051
Um total de 32 bytes de RAM são reservados para os bancos de registros e a pilha. Esses 32 bytes são divididos em quatro bancos de registro, em que cada banco tem 8 registros, R0 – R7. As localizações de RAM de 0 a 7 são reservadas para o banco 0 de R0-R7, onde R0 é a localização de RAM 0, R1 é a localização de RAM 1, R2 é a localização 2 e assim por diante, até a localização de memória 7, que pertence a R7 do banco 0
O segundo banco de registradores R0 – R7 começa na localização RAM 08 e vai para as localizações OFH. O terceiro banco de R0 – R7 começa no local de memória 10H e vai para o local 17H. Finalmente, as localizações de RAM 18H a 1FH são reservadas para o quarto banco de R0 – R7.
Banco de registro padrão
Se as localizações de RAM 00–1F forem reservadas para os quatro bancos de registros, a qual banco de registros de R0 – R7 temos acesso quando o 8051 é ligado? A resposta é registrar o banco 0; isto é, as localizações de RAM de 0 a 7 são acessadas com os nomes R0 a R7 ao programar o 8051. Porque é muito mais fácil referir essas localizações de RAM por nomes como R0 a R7, em vez de por suas localizações de memória.
Como mudar de banco de registro
O banco de registro 0 é o padrão quando o 8051 é ligado. Podemos mudar para os outros bancos usando o registro PSW. Os bits D4 e D3 do PSW são utilizados para selecionar o banco de registradores desejado, uma vez que podem ser acessados pelas instruções de bit endereçável SETB e CLR. Por exemplo, "SETB PSW.3" definirá PSW.3 = 1 e selecionará o registro do banco 1.
RS1 | RS2 | Banco Selecionado |
---|---|---|
0 | 0 | Banco0 |
0 | 1 | Banco1 |
1 | 0 | Banco 2 |
1 | 1 | Bank3 |
Pilha e suas operações
Empilhar no 8051
A pilha é uma seção de uma RAM usada pela CPU para armazenar informações como dados ou endereço de memória temporariamente. A CPU precisa desta área de armazenamento considerando o número limitado de registros.
Como as pilhas são acessadas
Como a pilha é uma seção de uma RAM, existem registros dentro da CPU que apontam para ela. O registro usado para acessar a pilha é conhecido como registro de ponteiro de pilha. O ponteiro da pilha no 8051 tem 8 bits de largura e pode levar um valor de 00 a FFH. Quando o 8051 é inicializado, o registro SP contém o valor 07H. Isso significa que o local 08 da RAM é o primeiro local usado para a pilha. A operação de armazenamento de um registro de CPU na pilha é conhecida comoPUSH, e obter o conteúdo da pilha de volta para um registro de CPU é chamado de POP.
Empurrando para a pilha
No 8051, o ponteiro da pilha (SP) aponta para o último local usado da pilha. Quando os dados são colocados na pilha, o ponteiro da pilha (SP) é incrementado em 1. Quando PUSH é executado, o conteúdo do registro é salvo na pilha e o SP é incrementado em 1. Para colocar os registros na pilha, nós devem usar seus endereços de RAM. Por exemplo, a instrução "PUSH 1" coloca o registrador R1 na pilha.
Saindo da pilha
Colocar o conteúdo da pilha de volta em um determinado registro é o oposto do processo de empurrar. Com cada operação pop, o byte superior da pilha é copiado para o registro especificado pela instrução e o ponteiro da pilha é decrementado uma vez.