Modos de Endereçamento e Funcionamento da Pilha do Microcontrolador 8051

ComputaçãoAtualizado em 4,69 KB

Resumo

O texto descreve os registradores de funções especiais do microcontrolador 8051 e os seus seis modos de endereçamento, com exemplos de instruções. Apresenta também o funcionamento da pilha, incluindo as regras de PUSH, POP, chamadas e retornos de sub-rotinas, e uma visão geral das cinco fontes de interrupção do 8051.

Pontos-chave

  • Endereçamento imediato usa o símbolo # antes do valor, como em MOV B,#255.
  • Endereçamento direto acessa apenas os primeiros 128 bytes da RAM interna e os registradores de funções especiais.
  • Endereçamento indireto usa R0, R1 ou SP para endereços de 8 bits e DPTR para endereços de 16 bits.
  • Endereçamento indexado, com MOVC, serve apenas para a memória de programa, somando o acumulador a DPTR ou PC.
  • A pilha do 8051 é de 8 bits, cresce no sentido dos endereços crescentes e SP aponta sempre para o topo.
  • O 8051 possui cinco fontes de interrupção: INT0, INT1, Timer 0, Timer 1 e a porta serial.

Teste-se

Registradores de Funções Especiais

Os registradores de funções especiais incluem posições de acesso às portas de E/S, registradores de interrupção, registradores da porta serial, temporizadores e registradores aritméticos. Aqueles situados em endereços múltiplos de 8 também podem ser endereçados bit a bit.

Modos de Endereçamento

  • Endereçamento Imediato: O valor do operando faz parte do corpo da instrução e segue o opcode na memória de programa. O operando deve ser precedido do símbolo #, a fim de evitar a confusão com o modo direto. Exemplo: MOV B,#255 - faz o registrador B igual a FFH.
  • Endereçamento Direto: Neste modo, a instrução especifica o endereço do operando, que deve ser um número de 8 bits. Somente dados dos primeiros 128 bytes da memória RAM interna e dos registradores de funções especiais são endereçados deste modo. Exemplo: MOV A,25H - traz para o acumulador o conteúdo do byte 25H da RAM interna.
  • Endereçamento de Bits Individuais: As instruções que manipulam bits individuais especificam este bit de forma direta, quer sob a forma de um número, quer sob a forma de uma abreviatura, como no caso das portas de E/S ou de outros bits dos registradores de funções especiais. Exemplos: SETB 0FH - seta o bit mais significativo do byte 21H da memória interna; CLR P1.0 - zera o bit menos significativo da porta 1.
  • Endereçamento Indireto: A instrução especifica um registrador, cujo conteúdo é o endereço do operando. Este modo pode ser utilizado para endereçar tanto a memória interna quanto a memória externa. Se o endereço do operando for de 8 bits, os registradores que podem ser especificados no corpo da instrução são R0, R1 ou SP. Caso o endereço seja de 16 bits, o registrador a ser utilizado tem que ser DPTR. Exemplos: MOV @R1,#15H - coloca o valor 15H no byte endereçado por R1; MOV @DPTR,A - copia o valor do acumulador para o byte endereçado por DPTR.
  • Endereçamento Indexado: Este modo serve apenas para endereçar a memória de programa (instrução MOVC). Nesse tipo de acesso, o endereço do operando é dado pela soma do conteúdo de um registrador de base, que pode ser DPTR ou PC, com o conteúdo do acumulador. Dessa forma, DPTR ou PC apontam para a base de uma tabela enquanto o acumulador seleciona um elemento dentro da tabela. Exemplos: MOVC A,@A+DPTR - o acumulador indica o offset de um byte dentro da tabela que inicia em DPTR; MOVC B,@A+PC - o registrador B recebe uma cópia do valor do byte que está A posições à frente do PC.
  • Endereçamento de Registradores R0 a R7: Os opcodes das instruções de acesso aos registradores R0 a R7 utilizam três dos seus oito bits para especificar o registrador endereçado. Desta forma, este modo consegue instruções mais curtas do que o modo direto, por dispensar o byte com o endereço. O banco de registradores referenciado é aquele que está selecionado pelos bits RS1 e RS0 no instante em que a instrução é executada. Exemplo: MOV A,R3 - copia R3 para A.

Funcionamento da Pilha

É importante notar que SP é um registrador de 8 bits, e que por isso o tamanho da pilha do 8051 é bem menor do que o das pilhas normalmente usadas com outros microprocessadores. Além disso, SP endereça somente a RAM interna. O funcionamento da pilha também é diferente, pois aqui o armazenamento se faz no sentido dos endereços crescentes e os bytes são empilhados um a um, de acordo com as seguintes regras:

  • Instrução PUSH: SP é incrementado e o byte é escrito na posição apontada por SP;
  • Instrução POP: o byte da posição apontada por SP é copiado para o destino e em seguida SP é decrementado;
  • Chamadas de sub-rotinas e interrupções: os dois bytes que formam o endereço de retorno são empilhados, com o byte menos significativo no endereço mais baixo;
  • Retorno de sub-rotinas e interrupções: os dois bytes que formam o endereço de retorno são copiados para o PC.

Desta forma, o registrador SP aponta sempre para o topo da pilha.

Interrupções

O 8051 tem cinco fontes de interrupção: duas entradas externas (INT0 e INT1), dois temporizadores/contadores (Timer 0 e Timer 1) e o canal de comunicação serial. Conforme descrito na seção 0.6, as entradas das interrupções externas e o canal serial ocupam pinos da porta P3.

Baixar

PDF Word HTML

Perguntas frequentes

Qual a diferença entre endereçamento direto e indireto no 8051?

No endereçamento direto, a instrução contém o endereço do operando, que deve ser de 8 bits e restrito aos primeiros 128 bytes da RAM interna e aos registradores de funções especiais. No indireto, a instrução especifica um registrador cujo conteúdo é o endereço do operando, podendo acessar também a memória externa.

Como funciona a instrução PUSH na pilha do 8051?

Na instrução PUSH, o SP é primeiro incrementado e depois o byte é escrito na posição apontada por SP. Assim, a pilha cresce no sentido dos endereços crescentes.

Teste-se

Cartões de revisão

Clique em um cartão para ver a resposta.

Teste

1. Qual é o efeito da instrução MOV B,#255 no 8051?
2. Qual registrador é usado como base no endereçamento indireto de 16 bits?
3. Por que o tamanho da pilha do 8051 é menor do que o de outros microprocessadores?
4. O que acontece com os dois bytes do endereço de retorno em uma chamada de sub-rotina?
5. Qual modo de endereçamento serve apenas para acessar a memória de programa?
6. Quantas fontes de interrupção o microcontrolador 8051 possui?

Perguntas geradas com IA a partir do documento: verifique as respostas com o texto.