Embedded Systems
  • Microcontroladores e Sistemas Embarcados
  • Introdução aos sistemas embarcados
  • Sistemas Microcontrolados
    • Visão geral da organização de um sistema computacional
    • Modelos de Arquitetura
    • Estrutura básica de um microcontrolador genérico
  • Periféricos Mapeados em Memória
    • Configuração de Registradores
  • Programação
    • Programação em Linguagem de Montagem
    • Compilação
  • Intel MSC-51
    • Arquitetura e Organização do 8051
    • Características Gerais de Operação
    • Mapa de Memória
    • Conjunto de Instruções e Modos de Endereçamento
    • Interrupções
    • Portas de Entradas/Saídas Digitais
    • Módulo Contador/Temporizador
    • Comunicação Serial Assíncrona
  • Processadores Cortex-M0+
    • Arquitetura
    • Sistema de interconexão
    • Arquitetura do Conjunto de Instruções (ISA)
    • Modos de operação
    • Programação
      • Keil uVision
  • Freedom Board: KL25Z
    • Família de microcontroladores KL25Z
    • Terminais do microcontrolador
    • Interface de configuração
    • Programação
      • Keil uVision
      • Chamada de funções em Assembly
      • Configuração de Registradores em C
      • Utilizando o CMSIS nas aplicações
  • Dicionário
  • Apêndice A: Sistemas de Numeração
  • [Em desenvolvimento] Apêndice B: Números Sinalizados
Powered by GitBook
On this page
  • Memória de Programa
  • Memória de Dados
  • Seções da Memória de Dados
  • Interface com Memória Externa
  1. Intel MSC-51

Mapa de Memória

PreviousCaracterísticas Gerais de OperaçãoNextConjunto de Instruções e Modos de Endereçamento

Last updated 6 years ago

Como característica da arquitetura Harvard, instruções e dados são armazenados em espaços distintos. No 8051, a memória de programa pode ser acessada somente em modo de leitura. Além disso, o barramento de endereços permite acesso a memórias externas para dados e programa.

Memória de Programa

A memória de programa pode apenas ser lida. Internamente esses dispositivos possuem 4K bytes (padrão) de memória, contudo essa capacidade pode ser expandida para 64K bytes utilizando uma memória externa.

Memória de Programa do Intel 8051 [1].

O pino EA determina se a memória de programa externa será utilizada. De modo geral:

  • Quando EA é zero, todas as operações são realizadas na memória externa;

  • Quando EA é um, os primeiros 4K de endereços são acessados internamente.

Além disso, para realizar o acesso à memória externa o sinal PSEN (Program Strobe Enable) é gerado pela CPU.

Memória de Dados

A memória de dados também pode ser expandida. Neste caso, os sinais RD e WR são gerados pela CPU conforme a operação executada. Para memória de dados, a instrução utilizada determinará se o acesso será interno ou externo. Conforme a ilustrado na Figura abaixo, internamente a memória de dados é dividida em regiões específicas e de propósito geral. Essas definições serão apresentadas na sequência.

Seções da Memória de Dados

A memória de dados é dividida em duas seções: Low-RAM e High-RAM.

A seção Low-RAM, ilustrada na Figura abaixo, corresponde ao espaço de endereçamento de 0x00 à 0x7F, isto é, os primeiros 128 bytes. Essa região é composta por quatro bancos de registradores, espaço de propósito geral e de bytes endereçáveis bit a bit.

Os bancos de registradores são nomeados como RB0, RB1, RB2 e RB3. Cada banco de registrador possui 8 registradores, portanto ocupam 32 bytes, e o espaço de endereçamento vai de 0 até 1FH (31). A região de bytes endereçáveis bit a bit, ilustrada na Figura 4, ocupa os endereços 20H à 2FH. Portanto, existem 16 bytes endereçáveis bit a bit, ou 128 bits endereçáveis.

O endereço dos bits é mostrado na Figura abaixo.

O Espaço de propósito geral corresponde ao espaço de endereçamento que vai de 0x30 a 0x7F. Os outros 128 bytes da memória de dados (High-RAM) são divididos em duas categorias. No entanto, isso não deve ser entendido como uma divisão do espaço de endereçamento, pois existem duas formas de acesso a essa região da memória. Quando o acesso realizado é direto (discutiremos isso em outro artigo) a região acessada será a de registradores de funções específicas. Já se o acesso é indireto, a região é considerada de propósito geral. Cabe ressaltar que essa região não está presente em alguns dispositivos.

  • Propósito geral:

    • Espaço de endereçamento: 0x80 a 0xFF;

    • Não está presente em alguns microcontroladores;

    • Modo de endereçamento: indireto.

  • Registradores de funções especiais:

    • Espaço de endereçamento: 0x80 a 0xFF;

    • Modo de endereçamento: direto.

Os registradores de funções especiais são listados abaixo conforme os módulos correspondentes:

  • Temporizadores/Contadores: TH1, TL1, TH0, TL1, TCON e TMOD;

  • Portas I/O: P0, P1, P2 e P3;

  • Stack Pointer: SP;

  • Power Save: PCON;

  • UART: SCON e SBUF;

  • Interrupções: IE e IP;

  • Uso geral: ACC e B;

  • Ponteiro DPTR: DPH e DPL;

  • Status: PSW.

De modo geral, os registradores especiais localizados nos endereços finalizados em 0H ou 8H são endereçáveis bit-a-bit (0x80 à 0xF7).

    • Além disso, é importante destacar o conteúdo dos registradores após a condição de Reset.

Interface com Memória Externa

Durante o processo de execução, a CPU emite sinais para realizar as operações de leitura e escrita das memórias. Quando a memória externa (RAM e/ou ROM) é utilizada, um circuito latch deve ser adicionado para compartilhar o PORT 0 do microcontrolador. Isso se faz necessário pois a mesma porta que é utilizada para determinar o endereço acessado também serve para as operações do barramento de dados. Além disso, o pino EA é utilizado para indicar se a memória de programa será interna ou externa. Já os sinais PSEN, RD e WR são utilizados para as operações nas memórias externas e, nos dois casos, o sinal ALE (Address Latch Enable) é utilizado para habilitar o latch.

  • Conexões da memória de programa externa.

  • Conexões da memória de dados externa.

Os diagramas ilustrados abaixo exibem o estado dos sinais de controle para os casos onde a memória externa é utilizada. Considerando a memória de programa externa, a CPU determina o endereço de 16 bits que será acessado. Esse endereço tem seu byte menos significativo colocado no PORT 0, e o mais significativo no PORT 2. Nesse momento a CPU ativa o sinal ALE, fazendo com que o circuito latch armazene esses 8 bits. Assim, a CPU desativa o ALE e memória continuará com o endereço selecionado. Por fim, o sinal PSEN é habilitado e, nesse momento, o conteúdo (instrução) do endereço selecionado é colocado no barramento de dados, isto é, no mesmo PORT 0.

O mesmo vale para memória de dados. A única diferença é que no processo de leitura o conteúdo do barramento de dados não é uma instrução. Cabe ressaltar que para a memória de dados o sinal RD especifica a operação de leitura.

Na operação de escrita, após a especificação do endereço a CPU determina o dado que será gravado na memória. Essa operação é realizada quando o sinal WR é ativado.

Memória de Dados no Intel 8051 [1].
Low-RAM. Adaptado de [1].
Seções da memória de Low-RAM. Adaptado de [1].
Mapa de endereços da região de bits endereçáveis.
High-RAM do Intel 8051. Adaptado de [1].
Endereço dos registradores de funções especiais [1].
Conteúdo dos registradores após o Reset do Intel 8051 [1].
Conexão do 8051 com a memória de programa externa [1].
Conexão do 8051 com a memória de dados externa [1].
Sinais de controle durante o acesso da memória de programa.
Sinais de controle durante o acesso de leitura da memória de dados externa.
Sinais de controle durante o acesso de escrita da memória de dados externa.