A memória de dados e a memória de programa tem espaços de endereçamento diferentes cada um com 64 Kbytes.
Memória de programa
A memória de programa é uma memória do tipo ROM, por isso sobre ela só se efectuam operações de leitura.
Este memória pode ser interna e/ou externa e ocupa no máximo 64 Kbytes. O acesso à memória de programa externa faz-se recorrendo ao sinal nPSEN (Program Strobe Enable) que deverá ser ligado ao pino de output enable da memória.
O sinal aplicado ao pino nEA do microcontrolador determina qual o tipo de acesso a ser feito para os 4 Kbytes inferiores da memória de programa.
Se nEA = 0, para endereços a partir de 0000H o acesso é feito à memória de programa externa, se nEA = 1, o acesso é feito è memória de programa interna para endereços de 0000H até 0FFFH, sendo feito o acesso à memória de programa externa para endereços mais elevados.
Memória de dados
A memória de dados é do tipo RAM podendo ser lida ou escrita pelo microcontrolador. Esta memória pode ser interna e/ou externa. O espaço de endereçamento associado à memória de dados é de 64 Kbytes.
Memória de programa externa
O acesso à memória de programa externa faz-se recorrendo aos sinais nRD (Read) e nWR (Write) fornecidos pelo microcontrolador para controlo da operação da memória.
O endereçamento pode fazer-se recorrendo a um mínimo de um e a um máximo de dois bytes.
Para acesso à memória de programa externa utiliza-se o porto P0 como barramento multiplexado de endereços/ dados (byte menos significativo). O porto P2, caso seja necessária a sua utilização, funciona como barramento de endereços (byte mais significativo).
Memória de programa interna
A memória de dados interna encontra-se dividida em 3 blocos distintos. O acesso à memória de dados interna faz-se utilizando endereços de 8 bits.
A área de memória superior contém os registos com funções especiais, SFRs (Special Function Registers).
O acesso a esta área de memória faz-se utilizando endereçamento directo.
A função de cada um destes registos será analisada em detalhe mais adiante nesta unidade.
A área de memória superior representada na figura 4 a tracejado não está implementada no microcontrolador 80C51 existindo apenas nos dispositivos com 256 bytes de RAM interna.
O acesso a esta área de memória é feito utilizando endereçamento indirecto sendo uma zona de uso genérico.
A parte inferior da memória de dados interna encontra-se dividida em três zonas distintas.
O acesso pode ser feito utilizando endereçamento directo ou indirecto.
Os 32 bytes inferiores destinam-se aos quatro bancos de oito registos designados R0 a R7.
A selecção do banco de registos é feita recorrendo aos bits RS1 (Register Select) e RS0 do registo PSW (Program Status Word). Segue-se uma área de 16 bytes (128 bits) endereçáveis bit a bit sendo a restante área de uso genérico.