You are on page 1of 35

C ile 8051 Mikrodenetleyici

Uygulamaları
BÖLÜM 3
8051’in Bellek Organizasyonu
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
(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ı
 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ı

19 39
XT AL1 P0.0/AD0
38 SRAM1 SRAM2
P0.1/AD1
37 10 11 10 11
P0.2/AD2 A0 D0 A0 D0
18 36 9
A1 D1
12 9
A1 D1
12
XT AL2 P0.3/AD3
35 8 13 8 13
P0.4/AD4 A2 D2 A2 D2
34 7 15 7 15
P0.5/AD5 A3 D3 A3 D3
6 16 6 16
33 A4 D4 A4 D4
P0.6/AD6 5 17 5 17
9 32 A5 D5 A5 D5
RST P0.7/AD7 4 18 4 18
A6 D6 A6 D6
3 19 3 19
21 A7 D7 A7 D7
P2.0/A8 25 25
22 A8 A8
P2.1/A9 24 24
23 A9 A9
P2.2/A10 21 21
A10 A10
29 24 23 23
PSEN P2.3/A11 A11 A11
30 25 2 2
ALE P2.4/A12 A12 A12
31 26
EA P2.5/A13
27 20 20
P2.6/A14 CE CE
28 26 26
P2.7/A15 CS CS
27 27
WE WE
1 10 22 22
OE OE
P1.0 P3.0/RXD
2 11
P1.1 P3.1/T XD 6264 6264
3 12
P1.2 P3.2/INT0
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 P3.6/W R
8 17
P1.7 P3.7/RD

80C51
Bellek Birimlerinin Çoklu 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ı
 8KB’lık bir bellek 13 adres hattı ile adreslenebilir.

 Birinci bellek 000016 adresinden 1FFF16 adresine kadar olan alanı işgal
edecektir

 Diğer 8KB’lık bellek de (ilk bellek birimini takiben) 200016 adresinden


3FFF16 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ı
 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ı
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ı
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ı
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ı
Adres çözmede kullanılacak uçların tespitinde önemli Kıstaslar:

ADRES/VERĐ YOLU

ADRES YOLU
U1
19 39 AD0 AD0 2 19 A0 A0 10 11 AD0 A0 10 11 AD0
XT AL1 P0.0/AD0 D0 Q0 A0 D0 A0 D0
38 AD1 AD1 3 18 A1 A1 9 12 AD1 A1 9 12 AD1
P0.1/AD1 D1 Q1 A1 D1 A1 D1
37 AD2 AD2 4 17 A2 A2 8 13 AD2 A2 8 13 AD2
P0.2/AD2 D2 Q2 A2 D2 A2 D2
18 36 AD3 AD3 5 16 A3 A3 7 15 AD3 A3 7 15 AD3
XT AL2 P0.3/AD3 D3 Q3 A3 D3 A3 D3
35 AD4 AD4 6 15 A4 A4 6 16 AD4 A4 6 16 AD4
P0.4/AD4 D4 Q4 A4 D4 A4 D4
34 AD5 AD5 7 14 A5 A5 5 17 AD5 A5 5 17 AD5
P0.5/AD5 D5 Q5 A5 D5 A5 D5
33 AD6 AD6 8 13 A6 A6 4 18 AD6 A6 4 18 AD6
P0.6/AD6 D6 Q6 A6 D6 A6 D6
9 32 AD7 AD7 9 12 A7 A7 3 19 AD7 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
22 A9 1 A10 21 A10 21
P2.1/A9 OE A10 A10
23 A10 A11 23 A11 23
P2.2/A10 A11 A11
29 24 A11 74F573 A12 2 A12 2
PSEN P2.3/A11 A12 A12
30 25 A12
ALE P2.4/A12
31 26 A13 A13 20 20
EA P2.5/A13 CE CE
27 A14 26 26
P2.6/A14 CS CS
28 A15 27 27
P2.7/A15 WE WE
22 22
OE OE
1 10
P1.0 P3.0/RXD
2 11 6264 6264
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 P3.6/W R
8 17
P1.7 P3.7/RD

80C51
Bellek Birimlerinin Çoklu 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ı
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 x 1 x x X x 1 1 1 1 1 1 1 1
A Y0
2 14
B Y1
3 13 0 x x x X x 1 1 1 1 1 1 1 1
C Y2
12
Y3 1 0 0 0 0 0 0 1 1 1 1 1 1 1
11
Y4
6 10 1 0 0 0 0 1 1 0 1 1 1 1 1 1
E1 Y5
4 9
E2 Y6 1 0 0 0 1 0 1 1 0 1 1 1 1 1
5 7
E3 Y7
1 0 0 0 1 1 1 1 1 0 1 1 1 1
74LS138
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