8051 entegresinin adres alanları, dört farklı alana bölünmüştür. Bunlar iç veri hafızası, dış veri hafızası, iç kod hafızası ve dış kod hafızasıdır.
8051 64K ya kadar dış geçici hafıza alanını ve 64K ya kadar dış kod hafızasını desteklemektedir. Dış hafıza kullanmanın en önemli dezavantajları, devrenin büyümesi ve giriş/çıkış 0 ve giriş/çıkış 2 nin adres ve data hattı olarak dış hafıza elemanına bağlanması gereğidir. Bu sebeple başka işlemler için kullanılabilecek entegre bacağı sayısı azalır. Bu nedenle mümkün olduğunda, geniş bir iç EPROM ve geniş bir iç RAM kullanarak problemleri halletmek oldukça iyi bir çözüm olacaktır.
8051 bir reset sinyali aldığında veya 8051 entegresine ilk güç verildiğinde, program sayıcısı 0000H adresinden başlayarak, hafızadaki bilgileri okumaya ve bu bilgileri işlemeye başlar. Eğer EA hattı DÜŞÜK tutulmuşsa ilk hafıza hücresi olarak dış hafızanın birinci elemanı alınır. Mikrokontrolcü PSEN sinyalini DÜŞÜK yapar ve dış hafıza birimi aktiflenir.
Eğer EA YÜKSEK tutulursa birinci hafıza elemanı iç kod hafızasının ilk elemanıdır. İlk 4K lık program kodu iç hafızadan, daha yukarıdaki hafızalardaki program kodu ise otomatik olarak dış hafızadan okunur.
Eğer uygulama büyük miktarda data hafızasına gereksinim duyuyorsa, bu durumda dış data hafızası (RAM) kullanılabilir. Dış RAM elemanı ile data alışverişi, MOVX komutlarıyla yapılır. Program içerisinde bir MOVX komutu görüldüğünde, 8051 otomatik olarak dış data hafızası ile ilgili bir veri iletişimi olduğunu anlar ve uygun WR, RD sinyallerini aktifler.
Eğer 128 bayt (8052 de 256 bayt) RAM yeterliyse, iç RAM hafızayı kullanmak daha avantajlıdır. Çünkü iç hafızaya erişmek, çok daha hızlıdır ve iç hafıza ile bilgi alışverişi için pek çok komut tipi sunulmuştur. 8051 RAM hafıza temel olarak iki bloktan oluşmuştur. Birinci grup 00H'dan 7FH'a kadar adreslenmiş toplam 128 bayttan oluşur. İkinci grup ise özel fonksiyon data gözleri olarak adlandırılır ve 7FH'dan FFH'a kadar adreslidir. Her bir adres bir baytlık bir hafıza dilimine karşılık gelmektedir. Bu sayede kod alanına giriş kolaylaşır ve data alışverişi hızlanır.
İç RAM hafızanın dökümü şöyledir: İlk 256 bit, 4 grup 8 bayt data gözünden (register) oluşmuştur. Her bir gruptaki data gözleri R0..R7 olarak adlandırılmışlardır. Bu gözlere direkt olarak data gözünün ismi verilerek ulaşılabilir. Bu dört gruptan hangisinin seçileceği Program Statüsü Registerindeki (Program Status Word PSW) gerekli grup seçme bitlerinin seçilmesiyle yapılır.
Bundan sonra gelen 128 bitlik bölüm bit adreslenebilir bölümdür. Burası 20H ile 2FH arasında adreslidir. Buradaki her bir bite tek tek ulaşılabilir. Dolayısıyla buradaki bitler kullanıcının ON/OFF bayrakları içeren değişkenler için kullanması gereken bölümdür.
30H'dan 7FH'a kadar kısım, genel amaçlı data saklama ve yığın için kullanılır.
İkinci 128 baytlık grup özel fonksiyon data gözlerinden oluşmaktadır. Bu özel fonksiyon data gözleri hem program kodunun işlemesi için gerekli birimleri, hem de 8051 içindeki donanımla ilgili birimleri içerir. Aşağıdaki tablo özel fonksiyon data gözlerinin isimlerini, adreslerini ve fonksiyonlarını vermektedir. Bir özel fonksiyon data gözünün adresi yalnızca 1 bayttır. Fakat özel fonksiyon data gözüne ulaşmak için, bu gözün adresini verebileceğiniz gibi, data gözünün ismini de belirtebilirsiniz. Bu data gözlerinden bazıları bit adreslenebilir data gözleridir. Örneğin akümülatörün üçüncü bitine ulaşmak için, E0H.3 adresini belirtebilirsiniz veya ACC.3 diyerek belirtebilirsiniz. Program status data gözü de bit adreslenebilirdir. Bu data gözündeki parite biti 0 numaralı bittir. Bu bite ulaşmak için, bu bitin adresini; D0H.0 veya ismini PSW.0 diyerek belirtebilirsiniz. Aşağıdaki diğer tablo program statüsü registerindeki, bitlerin sembollerini, adreslerini ve fonksiyonlarını göstermektedir.
Özel fonksiyon data gözleri (SFR), İç Hafıza alanı (80H'dan FFH'a)
Data Gözü | Adres |
Fonksiyon |
P0 |
80Ha |
Port 0 |
SP |
81H |
Stak işaretleyici |
DPL |
82H |
Data işaretleyici (düşük) |
DPH |
82H |
Data işaretleyici (yüksek) |
PCON |
87H |
Güç Kontrolü |
TCON |
88H |
Zamanlayıcı/sayıcı data gözü |
TMOD |
89Ha |
Zamanlayıcı/sayıcı modu |
TL0 |
8AH |
Zamanlayıcı/sayıcı 0 (düşük) |
TL1 |
8BH |
Zamanlayıcı/sayıcı 0 (yüksek) |
TH0 |
8CH |
Zamanlayıcı/sayıcı 1 (düşük) |
TH1 |
8DH |
Zamanlayıcı/sayıcı 1 (yüksek) |
P1 |
90Ha |
Port 1 |
SCON |
98Ha |
Seri alışveriş kontrol |
SBUF |
99H |
Seri alışveriş data buffer |
P2 |
A0Ha |
Port 2 |
IE |
A8Ha |
Kesme aktifleme |
P3 |
B0Ha |
Port 3 |
IP |
B8Ha |
Kesme önceliği |
PSW |
D0Ha |
Program statüsü |
ACC |
E0Ha |
Akümülatör |
B |
F0Ha |
B data gözü |
Bit adreslenebilir data gözleri
PSW Bit Adresleri
Sembol |
Adres |
Fonksiyon |
CY |
D0H.7 |
Elde bayrağı |
AC |
D0H.6 |
Yedek elde bayrağı |
F0 |
D0H.5 |
Genel amaçlı bayrak |
RS1 |
D0H.4 |
Data gözü seçme (MSB) |
RS0 |
D0H.3 |
Data gözü seçme (LSB) |
OV |
D0H.2 |
Taşma bayrağı |
-- |
D0H.1 |
Kullanıcı tanımlanabilir bayrak |
P |
D0H.0 |
Parite bayrağı |