You are on page 1of 35

C

C ile
ile 8051
8051 Mikrodenetleyici
Mikrodenetleyici
Uygulamaları
Uygulamaları
BÖLÜM 3
8051’in Bellek Organizasyonu

www.8051turk.com
Amaçlar
 8051 mikrodenetleyicisinin bellek türlerini öğrenmek

 Dahili veri belleği (Internal RAM) hakkında bilgi


sahibi olmak

 Özel işlev kaydedicilerini tanımak

 Harici program hafıza bağlantılarını kavramak

 Harici veri hafıza bağlantılarını kavramak

 Bellek haritalama ve hafıza organizasyonu tasarımını


kavramak
8051 Hafıza Yapısı
Program (Kod) Hafızası
 Mikrodenetleyicinin çalıştıracağı programın makine
kodlarını bulunduran bellek birimidir.

 Standard 8051 mikrodenetleyicisinde 4KBayt kod


hafıza bulunmaktadır.

 Dahili Kod hafızanın bulunmadığı ya da yetersiz


kaldığı durumlarda harici kod hafıza kullanmak
mümkündür.

 Harici ya da dahili kod hafızadan hangisinin


kullanılacağını 8051’in EA (External Access)
belirlemektedir.
Program (Kod) Hafızası
 Harici kod hafıza bağlantısı
Veri Hafızası
 8051 mikrodenetleyicisi dahili (çip içi) veri hafıza birimi içermektedir.

 Standart 8051’de 128 bayt olan hafıza birimi bazı 8051 türevlerinde
256 bayt büyüklüğünde olabilmektedir.

 Dahili veri hafızanın yetmediği durumlarda harici veri hafıza


kullanmak mümkündür.

 8051 mikrodenetleyicisindeki veri bellek türleri


 Dahili Veri belleği
 Alt (Lower) RAM
 Üst (Upper) RAM
 Özel Fonksiyon Kaydedicileri
 Harici veri belleği
 XRAM (Genişletilmiş RAM Bellek)
Dahili RAM Belleği (IRAM)
 3 bölümden meydana gelir.
Alt RAM (Lower RAM)
Alt RAM (Lower RAM)

Bit Adreslenebilir alan


Üst RAM (Upper RAM)
 Bütün 8051 ailelerinde mevcut olmayabilir (80C31
gibi).

 Bu bölge daha çok genel amaçlı olarak kullanılır ve


80h adresinden başlar, FFh adresinde son bulur.

 Bu alana sadece dolaylı (indirect) yolla erişilebilir.


Üst RAM (Upper RAM)

Örnek
 80H adresi hem üst RAM’in hem de SFR’nin başlangıç
adresleridir. her iki hafıza bölgesinin başlangıç
adresine FFH değerini yükleyelim.
 SFR
 MOV $80h,#0FFh ;SFR’deki 80h adresine 0FFh
değerini at
 Üst RAM
 MOV R0,#80h ;R0 kaydedicisine 80h değerini at
 MOV @R0,#0FFh ;R0’ın gösterdiği adrese(Üst
RAM’deki 80h’a FFh değerini at)
Özel Fonksiyon Kaydedicileri (SFR)
 Çip içi hafızadaki SFR kayıtçıları 80H-FFH adresleri arasında yer
alırlar.

 Fonksiyonel birimlere ait kayıtçıları içerir


 İşlemci çekirdeğine
 Kesme birimi
 Giriş-çıkış portları
 Zamanlayıcı/sayıcı birimi
 Haberleşme birimleri ve diğer birimler

 SFR alanında her mikrodenetleyici aynı kayıtçı sayısına sahip


olmak zorunda değildir

 Bu yüzden mikrodenetleyicilerin SFR belleğini oluşturan 128


bayt kapasitenin tamamı dolu değildir. Hatta bazı adresler
ileride kullanılmak üzere boş bırakılmıştır.
Özel Fonksiyon Kaydedicileri (SFR)
Özel Fonksiyon Kaydedicileri (SFR)
P0, P1,P2, P3 kaydedicileri
 8051 mikrodenetleyicisinde bulunan dört adet port’a yüklenen
çıkış değerlerinin ve porttan okunan giriş değerlerinin saklandığı
kaydedicilerdir

 Portlar hem bit hem de bayt olarak işlem yapmaya imkân


sağlamaktadırlar.

 Eğer harici hafıza birimleri ve seri haberleşme işlemi


kullanılmıyorsa kullanıcı dört portu da giriş/çıkış olarak
kullanabilir.
Özel Fonksiyon Kaydedicileri (SFR)
ACC (Akümülatör)
 Çalışma esnasındaki sonuçların tutulduğu genel amaçlı kaydedicidir.

 Herhangi bir işlem gerçekleştirilmeden önce o işlemin ne olduğunu


gösteren operand’ın (komut) aküye yüklenmesi gerekir.

 ALU tarafından yürütülen işlemlerin sonuçları da akümülatörde


saklanır.

 Bir kaydediciden bir diğerine veri transferi yine akümülatör


üzerinden gerçekleştirilebilir.

 Çok amaçlı olan Akümülatör hemen hemen bütün


mikrodenetleyicilerin en önemli kaydedicilerindendir.
Özel Fonksiyon Kaydedicileri (SFR)

B kaydedicisi
 B kaydedicisi 8 bitlik bir kaydedicidir ve sadece çarpma ve
bölme işlemlerinde kullanılmaktadır.

 Bir sayı ile başka bir sayı çarpılacaksa veya iki sayı birbirine
bölünecekse MUL AB ve DIV AB komutları kullanılır.

 Bu komutlardaki B kaydedicisi, çarpılacak ikinci sayıyı veya


bölüm sayısını saklar.

 Bunun yanında B kaydedicisi geçici işlem kaydedicisi olarak da


kullanılabilir.
Özel Fonksiyon Kaydedicileri (SFR)
Program Durum Kaydedicisi (PSW)
 SFR alanında bulunan önemli kaydedicilerden birisidir

 Mikrodenetleyicinin çalıştırdığı programların kontrolünü yürütür.

 ALU’daki işlemlerin sonucunda PSW’nin ilgili bitleri otomatik


olarak değiştirilir.

 RS1 ve RS0 olarak adlandırılan iki bitin alacağı değere göre


kayıtçı depolarının hangisinin kullanılacağı belirlenir.
Özel Fonksiyon Kaydedicileri (SFR)
DPTR (Data Pointer-Veri İşaretçisi)
 Veri işaretçisi, sadece kullanıcı tarafından erişilebilen 16-bitlik (2
bayt) bir kaydedicidir.

 Adından da anlaşılacağı üzere veriyi işaret etmek (göstermek)


için kullanılır.

 8051 mikrodenetleyicisinin harici hafıza birimlerine erişimini


sağlayan bazı komutlarda kullanılmaktadır.

 Harici hafıza kullanımında 8051 mikrodenetleyicisi, DPTR


kaydedicisinin gösterdiği adrese erişmektedir.
Özel Fonksiyon Kaydedicileri (SFR)
SP (Stack Pointer-Yığın İşaretçisi)
 Yığın işaretçisi, yığından kaldırılacak veya yığına eklenecek bir
sonraki değerin bellekteki konumunu ya da adresini belirtmek
amacıyla kullanılır.

 Mikrodenetleyicinin RESET işlemine tabi tutulmasından sonra


yığın işaretçisine (SP, Stack Pointer) Bank 0’daki R7’nin adresi
(07H) atanır.
Özel Fonksiyon Kaydedicileri (SFR)
PCON (Power Control-Güç Kontrol)
 8051 mikrodenetleyicisinin güç modlarının belirlenmesinde
kullanılır.
Özel Fonksiyon Kaydedicileri (SFR)
IE ve IP Kaydedicileri
 IE (Interrupt Enable-Kesme Yetkilendirme) ve IP (Interrupt
Priorty-Kesme Öncelik) Kaydedicileri Kesme Rutinleriyle ilgili
kontrol bitlerini içermektedir.

Zamanlayıcı/Sayıcı Kaydedicileri
 TCON (Timer Control-Zamanlayıcı Kontrol) ve TMOD (Timer
Mod-Zamanlayıcı Mod) Kaydedicileri Zamanlayıcı/sayıcı birimleri
için kontrol bitlerini içerir.
 TL0, TH0, TL1, TH1 kaydedicileri ise zamanlayıcı 0 ve
zamanlayıcı 1’in sayma değerlerini tutmaktadırlar.

SCON, SBUF Kaydedicileri


 SCON (Serial Control-Seri Kontrol) ve SBUF (Serial Buffer-Seri
Tampon) kaydedicileri seri iletişimde kullanılan kontrol
kaydedicileridir.
Harici Veri Belleği (External RAM)
Hafıza Organizasyonu Tasarımı
 8051, A/D-D/A çeviricileri, LCD veya LED göstergeler v.b.
birimler vasıtasıyla dış dünya ile haberleşebilmektedir.

 Çevre birimler ve ek bellek birimleri ile iletişim kurulabilmesi


için 8051’e ait port pinleri belli bir program denetimi altında
kullanılmalıdır.

 Ancak pinlerin harici birimlere bağlanması, mikrodenetleyicinin


diğer yapması gereken kontrol hizmetlerini kısıtlar.

 Çözüm olarak, kullanılacak tüm elemanlar, özelliklerine göre ya


veri (data) yada program (code) hafızası üzerine
yerleştirilerek port pinleri her harici eleman için ortak kullanılır.

 Farklı çevre birimlerin kullanacakları adres uçlarını tablo


yardımıyla tespit etme işlemine bellek haritası tasarımı
denilmektedir.
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
 Harici bellek olarak kullanılacak elemanlar birden fazla ise bu
bellekler ilgili hafıza alanı içine yerleştirilir.

 64KB veri hafıza ve 64KB program hafıza olmak üzere toplam


128KB’lık bir adres haritamız mevcuttur.

 Örneğin elimizde iki adet 8KB’lık SRAM entegresi bulunuyor ise


bu iki entegrenin toplamı olan 16KB’lık bir bellek, 8051
mikrodenetleyicisine bağlanarak kullanılabilir.
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar

19 39
X TA L1 P 0.0 /A D0
38
P 0.1 /A D1
37
P 0.2 /A D2
18 36

SRAM1
X TA L2 P 0.3 /A D3
35
P 0.4 /A D4
34

SRAM2
P 0.5 /A D5
33
P 0.6 /A D6
9 32
RST P 0.7 /A D7
10 11 10 11
P 2.0 /A8 21 A0 D0 A0 D0
22 9 12 9 12
P 2.1 /A9 A1 D1 A1 D1
23 8 13 8 13
P 2.2 /A10 A2 D2 A2 D2
29 24 7 15 7 15
P SE N P 2.3 /A11 A3 D3 A3 D3
30 25 6 16 6 16
A LE P 2.4 /A12 A4 D4 A4 D4
31 26 5 17 5 17
EA P 2.5 /A13 A5 D5 A5 D5
27 4 18 4 18
P 2.6 /A14 A6 D6 A6 D6
28 3 19 3 19
P 2.7 /A15 A7 D7 A7 D7
25 25
A8 A8
1 10 24 24
P 1.0 P3 .0/RX D A9 A9
2 11 21 21
P 1.1 P 3. 1/T XD A 10 A 10
3 12 23 23
P 1.2 P3 .2/IN T0 A 11 A 11
4 13 2 2
P 1.3 P3 .3/IN T1 A 12 A 12
5 14
P 1.4 P 3.4 /T0
6 15 20 20
P 1.5 P 3.5 /T1 CE CE
7 16 26 26
P 1.6 P3 .6/W R CS CS
8 17 27 27
P 1.7 P3 .7/RD WE WE
22 22
80C51 OE OE

6 264 6 264
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
 8KB kapasiteyi sahip bellek elemanları adresleyebilmek için
gerekli olan minimum adres hattı 13’dür.

Bit Sayısı 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Bellek 64 32 16 8 4 2 1 512 256 128 64 32 16 8 4 2
Kapasitesi KB KB KB KB KB KB KB Bayt Bayt Bayt Bayt Bayt Bayt Bayt Bayt Bayt
8051
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Adres hattı
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
 8KB’lık bir belleğinin 13 adres hattı ile adreslenebilir.

 Birinci bellek 000016 adresinden 3FFF16 adresine kadar olan


alanı işgal edecektir

 Diğer 16KB’lık bellek de (ilk bellek birimini takiben) 400016


adresinden 7FFF16 adresine kadar devam edecektir.

Adres
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 HEX
Hattı
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000
SRAM1 1FFF
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2000
SRAM2 3FFF
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
 Mikrodenetleyici 0000-1FFF arasında bir adres ürettiğinde
SRAM1 bellek birimi

 2000-3FFF arasında bir adres üretildiğinde ise SRAM2 bellek


birimi seçilmiş olacaktır.
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
Adres çözmede kullanılacak uçların tespitinde önemli
Kıstaslar:
1. Tüm elemanlarda aynı değere sahip (0 veya 1) bir adres hattı kod
çözmede kullanılamaz.

2. Herhangi bir birim için kullanılacak adres hattı o birimin adres sınırları
içerisinde değişmemelidir.

3. Gruplandırma için birimler arası değişen ve birim içerisinde


değişmeyen adres hatları seçilir

4. Kaç adet destek birimi mevcutsa ona göre adres hattı sayısı tespit edilir.

5. Adres alanları 2 ve 2’nin katları şeklinde bellek büyüklüğüne göre


seçilirse kod çözme kolaylaşır
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
Adres çözmede kullanılacak uçların tespitinde önemli
Kıstaslar:
1. A15 ve A14 SRAM1 ve SRAM 2 adres alanlarında sürekli sıfır (0)
olduğundan kod çözme işleminde kullanılamaz.

2. A13 adres hattı ilgili birimin alt ve üst sınırları arasında


değişmediği için seçme hattı olarak kullanılabilir.

3. A13 adres hattı hem birim içerisinde değişmediğinden hem de


birimler arası değiştiğinden gruplandırma için seçilebilir.

4. Birim sayımız örneğimizde iki adet (SRAM1 ve SRAM2)


olduğundan tek bir adres hattı iki adet birimi yetkilendirmede
kullanılabiliriz.
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
Adres çözmede kullanılacak uçların tespitinde önemli
Kıstaslar:
 SRAM 1 için A13 her zaman ‘0’, SRAM2 içinse A14 her zaman ‘1’
dir.

 Tasarımda başka entegre devre veya birim olmadığı için A13


adres hattı bellek entegrelerinin seçiminde tek başına
kullanılabilir.

 A13 ucu ‘0’ olduğunda SRAM1 seçilir, ‘1’ olduğunda ise SRAM2
seçilir.

 A13 adres hattı SRAM’lardan birine olduğu gibi, diğerine de bir


DEĞİL kapısı (7404) üzerinden uygulanırsa seçme işlemi
donanımsal olarak gerçekleştirilmiş olur.
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
Adres çözmede kullanılacak uçların tespitinde önemli
Kıstaslar:
ADRES/VERİ YOLU

A DRES YOLU
U1
19 39 AD0 AD0 2 19 A0 A0 10 11 AD 0 A0 10 11 AD0
XT AL1 P0 .0 /AD0 D0 Q0 A0 D0 A0 D0
38 AD1 AD1 3 18 A1 A1 9 12 AD 1 A1 9 12 AD1
P0 .1 /AD1 D1 Q1 A1 D1 A1 D1
37 AD2 AD2 4 17 A2 A2 8 13 AD 2 A2 8 13 AD2
P0 .2 /AD2 D2 Q2 A2 D2 A2 D2
18 36 AD3 AD3 5 16 A3 A3 7 15 AD 3 A3 7 15 AD3
XT AL2 P0 .3 /AD3 D3 Q3 A3 D3 A3 D3
35 AD4 AD4 6 15 A4 A4 6 16 AD 4 A4 6 16 AD4
P0 .4 /AD4 D4 Q4 A4 D4 A4 D4
34 AD5 AD5 7 14 A5 A5 5 17 AD 5 A5 5 17 AD5
P0 .5 /AD5 D5 Q5 A5 D5 A5 D5
P0 .6 /AD6 33 AD6 AD6 8 D6 Q6 13 A6 A6 4 A6 D6 18 AD 6 A6 4
A6 D6 18 AD6
9 32 AD7 AD7 9 12 A7 A7 3 19 AD 7 A7 3 19 AD7
RST P0 .7 /AD7 D7 Q7 A7 D7 A7 D7
A8 25 A8 25
A8 A8
21 A8 11 A9 24 A9 24
P2.0 /A8 LE A9 A9
P2.1 /A9 22 A9 1 OE
A10 21 A1 0
A10 21
A10
23 A10 A11 23 A11 23
P2 .2/A10 A1 1 A11
29 24 A11 74 F57 3 A12 2 A12 2
PS EN P2 .3/A11 A1 2 A12
30 25 A12
AL E P2 .4/A12
31 EA P2 .5/A13 26 A13 A1 3 20 CE 20 CE
27 A14 26 26
P2 .6/A14 CS CS
28 A15 27 27
P2 .7/A15 WE WE
22 OE 22 OE
1 10
P1 .0 P3.0 /R XD
2 11 626 4 626 4
P1 .1 P3 .1 /T XD
3
P1 .2 P3.2 /INT0
12 SRAM2 SRAM1
4 13
P1 .3 P3.3 /INT1
5 14
P1 .4 P3.4/T0
6 15
P1 .5 P3.5/T1
7 16
P1 .6 P 3.6 /W R
8 17
P1 .7 P3 .7 /RD

80 C5 1
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
Adres çözümü için ek donanım
 Harici RAM veya ROM belleği oluşturan entegreler birden fazla
ise, her bellek entegresinin kendine ait kapladığı adres
bölgesinde çalışması istenecektir.

 Bu durumda 8051’in P0 ve P2 portlarından üretilen adres bilgisi


çözülerek hangi bellek entegresinin hangi sınırlar arasında aktif
veya pasif yapılacağı belirlenebilir.

 Bu amaç için 74138 kod çözücü entegresi piyasada yaygın


olarak kullanılmaktadır.
Bellek Birimlerinin Çoklu Kullanımları
Kullanımlar
Adres çözümü için ek donanım

Yetkilendirme Giriş Kodu Çıkışlar


E1 E2 E3 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
x x 1 x x x 1 1 1 1 1 1 1 1
1 15
A Y0
2 14
B Y1
3 13
C Y2
12
Y3
11
Y4
6 10
E1 Y5
4 9
E2 Y6
5 7
E3 Y7

74LS138

x 1 x x X x 1 1 1 1 1 1 1 1
0 x x x X x 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 0 1 1 0 1 1 1 1 1 1
1 0 0 0 1 0 1 1 0 1 1 1 1 1
1 0 0 0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1 0 1 1 1
1 0 0 1 0 1 1 1 1 1 1 0 1 1
1 0 0 1 1 0 1 1 1 1 1 1 0 1
1 0 0 1 1 1 1 1 1 1 1 1 1 0
Bellek Organizasyonun Metodolojik
Tasarımı
Bellek organizasyonunu metodik bir şekilde gerçekleştirmek
için izlenmesi gereken adımlar

1. Elemanların bellek alanını (Program-Veri) belirle.

2. Elemanların adres sınırlarını belirle.

3. Adres çözümleme için gerekli adres hatlarını belirle.

4. Kod çözücü çıkışlarının, hangi elemanların CS uçlarına


bağlanacağını belirle.

You might also like