3.   8051 Hafıza Dökümü

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ğı