You are on page 1of 97

Mikroişlemciler/Mikrodenetleyiciler

EEM 448 Mikroişlemciler II

Ders Sorumlusu: Y.Doç.Dr. Rıfat HACIOĞLU


Elektrik-Elektronik Müh. Bölümü

EEM 448 Mikroişlemciler II No.1-1


Mikroişlemciler/Mikrodenetleyiciler

Bugün
1. Mikroişlemci Temelli Sistemlere Giriş
– Mikroişlemci temelli Sistemler
– Mikrodenetleyiciler
2. Mikroişlemci Mimarisi
– Mikroişlemci Temelli Sistem Yapısı
– Mikroişlemci Temelli Sistem Mimarisi
– Temel Mikroişlemci Özellikleri
– Temelde Mikroişlemci Çalışması
3. Mikroişlemci Komut Seti ve Programlama Teknikleri
– Mikroişlemci Programlama Teknikleri
– Mikroişlemci Komut Seti
– Mikroişlemcilerde Adresleme Modları
– Makine Dili

EEM 448 Mikroişlemciler II No.1-2


Mikroişlemciler/Mikrodenetleyiciler

I. Mikroişlemci Temelli Sistemler


1.1. Mikroişlemci Temelli Sistemlere Giriş
• Temelde belirli bir amaca yönelik işlemleri sırasıyla gerçekleştiren
elektronik sistemlerdir.
• Elle yapıldığında günlerce sürecek bir işlemi çok kısa sürede hatasız
yaparlar.
• Mikroişlemci temelli sistemlerde bulunan birimler birbirleri arasında
sayısal olarak haberleşirler. 0, 1 ikili sayı sistemi kullanılır…
• Gerekli görüldüğünde verilen giriş argümanlarına göre çıkış üretirler…
• Mikroişlemci temelli sistemlerde bulunan birimler:
– Merkezi İşlem Birimi (Central Processing Unit, CPU)
– Bellek (Memory)
– Giriş/Çıkış Birimi (Input/Output I/O Unit)
– Yollar (Busses)

EEM 448 Mikroişlemciler II No.1-3


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Uygulamaları

Bellek
Program Veri
Deposu Deposu

Çıkış Birimi
Giriş Birimi

Anahtar LED
Merkezi
Gösterge
İşlem
Birimi
(CPU)
Ses
Tuş
Takımı Aritmetik/Lojik
Birimi

Röle
Sıcaklık Kontrol
Algılayıcı Birimi

EEM 448 Mikroişlemciler II No.1-4


Mikroişlemciler/Mikrodenetleyiciler

İşlemci
Kayıtçılar – işlemcide depolama yerlerini gösterir
Aritmatik Lojik Birim

Kontrol Birimi

Program Sayıcı (program counter) işlenecek bir sonraki komutun adresini


tutar
Durum Kayıtçısı (status register) komutların işlenmesi sonucunda bayrakların
değişimini tutar.
Mikroişlemci
Çok büyük ölçekte elemanların bir araya gelmesi (very large scale integration, VLSI)
İle oluşan işlemci entegresi (chip)
Bir ürün ortaya koyabilmek için çevre entegrelere ihtiyaç duyulur

Mikrodenetleyici
İşlemci ve Çevre fonksiyonların tek bir VLSI entegrede bulunması

EEM 448 Mikroişlemciler II No.1-5


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem (Bilgisayar) nedir?


Yazılım (Software), Programlama. Algoritma nedir?
Donanım (Hardware)

Bilgisayar Donanım Organizasyonu:

Kontrol
Birimi Ortak İletişim Hattı

Arithmatik
Lojik
Birimi

Bellek
Çıkış Giriş
Kayıtçılar Program Veri
Birimi Birimi
Deposu Deposu

EEM 448 Mikroişlemciler II No.1-6


Mikroişlemciler/Mikrodenetleyiciler

Yazılım

Bilgisayar Yazılımı (Computer Software)


- Bilgisayar programları yazılım (software) olarak bilinir.
- Bir program komutların (instruction) diziliminden oluşur.

Makine komutları (Machine instruction)


- İşlemci tarfından uygulanabilen binary (0 ve 1) dijitlerin dizisidir.
- Analaşılması zordur.

Assembly Dili
- Assembly komutları ile tanımlıdır.
- Bir assembly komutu, makine komutunun belleği destekleyici
(mnemonic) gösterimidir.
- Assembly programları uygulanmadan önce makine
diline çevrilmelidir -- bir derleyici (assembler) tarafından çevrilir.

EEM 448 Mikroişlemciler II No.1-7


Mikroişlemciler/Mikrodenetleyiciler

Yazılım(2)
Yüksek seviye bilgisayar dilleri

- Yüksek seviye bilgisayar dilinin sözdilimi (syntax) İngilizce’ye benzer.


- Yüksek seviye dilde yazılan programı çeviren bir çeviriciye (translator)
ihtiyaç duyulur -- derleyici (compiler) tarafından yapılır

Kaynak Kodu (Source code)

- Assembly veya yüksek seviye bilgisayar dilinde yazılan program.

Obje Kodu (Object code)

- Assembler veya derleyici (compiler) çıktısı.

EEM 448 Mikroişlemciler II No.1-8


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci/Mikrodenetleyici Uygulamalarına
Örnekler

• Görüntü ve yazı panoları (Displays)


• Yazıcılar (Printers)
• Tuş takımları (Keyboards)
• Modems
• Araç telefon şarjları
• Buzdolabı, Çamaşır/Bulaşık makinaları
• Mikrodalga fırınlar
• Otomobile motor yakıt injeksiyonu
• Faks makinaları
• Motor hız kontrolü
• v.b.

EEM 448 Mikroişlemciler II No.1-9


Mikroişlemciler/Mikrodenetleyiciler

1.2 Mikrodenetleyiciler
• Mikroişlemci temelli sistemlerde bulunması gerekli üniteler, Merkezi
İşlem Birimi, Bellek ve Giriş/Çıkış Birimleri birbirlerine dış yollar ile
bağlıdırlar.
• Daha basit işlemleri gerçekleştirmek amacı ile mikroişlemcilere göre
daha yavaş ve basit programlanabilen MİKRODENETLEYİCİLER
geliştirilmiştir.
• Mikrodenetleyicilerde bellek, merkezi işlem birimi ile birlikte tek yonga
içine gömülmüştür ve miktodenetleyici dışarı ile bilgi alış-verişini
doğrudan I/O bağlantıları ile yapabilir.
• Bazı mikrodenetleyici örnekleri
– Intel 8051 yada MCS-51
– Motorola 68HC11
– Microchip PIC 16F877
– Ve diğer firmalar; NEC, Hitachi, Philips, Mitsubishi…

EEM 448 Mikroişlemciler II No.1-10


Mikroişlemciler/Mikrodenetleyiciler

Bugün
1. Mikroişlemci Temelli Sistemlere Giriş
– Mikroişlemci temelli Sistemler
– Mikrodenetleyiciler
2. Mikroişlemci Mimarisi
– Mikroişlemci Temelli Sistem Yapısı
– Mikroişlemci Temelli Sistem Mimarisi
– Temel Mikroişlemci Özellikleri
– Temelde Mikroişlemci Çalışması
3. Mikroişlemci Komut Seti ve Programlama Teknikleri
– Mikroişlemci Programlama Teknikleri
– Mikroişlemci Komut Seti
– Mikroişlemcilerde Adresleme Modları
– Makine Dili

EEM 448 Mikroişlemciler II No.1-11


Mikroişlemciler/Mikrodenetleyiciler

II. Mikroişlemci Mimarisi


2.1. Mikroişlemci Temelli Sistem Yapısı
• Mikroişlemci temelli sistemlerde bulunan birimler:
– Merkezi İşlem Birimi (Central Processing Unit, CPU)
– Bellek (Memory)
– Giriş/Çıkış Birimi (Input/Output I/O Unit)
– Yollar (Busses)

EEM 448 Mikroişlemciler II No.1-12


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Yapısı

Bellek
(Hafıza)

Aritmetik/Lojik
Birimi
Dış Dış
Dünya’dan Dünya’ya
Giriş Çıkış
Birimi Kontrol Birimi
Birimi

Merkezi İşlem
Birimi (CPU)

EEM 448 Mikroişlemciler II No.1-13


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Yapısı


• Merkezi İşlem Birimi (Central Processing Unit, CPU)
– Mikroişlemci temelli sistemlerde tüm işlemleri gerçekleştiren birimdir.
– Program boyunca sırasıyla komutları yürütmek ve bellek-giriş/çıkış denetimi
yapmaktır. Örnek: Bir dairenin alanını hesaplayalım, A = pi*r^2
• Algoritma ile mikroişlemci sistemi kullanılır…
• Giriş verisi r değerine göre çıkış A yı üretir.
• Programda bazı değişkenler kullanılır.
• Bellek ile işlemci arasında sürekli bir iletişim vardır.
• Bellek de yazılan programı işlemci komut komut okur.
• Buna göre bellek de değişkenler oluşturur (burada A ve r) ve işlemci tarafında
okunur/yazılır…
• Giriş değeri dış dünyadan alınır ve işlemci tarafında okunur.
• Çıkış değeri işlem sonunda bellekte ayrılan yere yazılır ve dış Dünya ya aktarılır.
– CPU iki birimden oluşmaktadır;
• Aritmetik/Lojik Birimi (ALU, Arithmatic/Logic Unit)
• Kontrol Birimi (CU, Control Unit)

EEM 448 Mikroişlemciler II No.1-14


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Yapısı (devam)


• Merkezi İşlem Birimi (Central Processing Unit, CPU)
– Aritmetik/Lojik Birimi (ALU, Arithmatic/Logic Unit)
• Kontrol biriminin denetiminde giriş ve/veya bellek biriminden gelen veriler üzerinde
aritmetik (toplama, çıkarma, çarpma, bölme) ve/veya lojik (VE, VEYA, DEĞİL,
kaydırma v.b.) işlemleri yapar.
• Sonuçları bellek ve/veya çıkış birimine yollar.
– Kontrol Birimi (CU, Control Unit)
• Mikroişlemci temelli sistemde birimlerin birbiri ile uyumlu çalışması için gerekli
zamanlama ve kontrol sinyallerini üretir.
• Programda buluna bir komutun çalışması için gereken işareti üreten lojik ve
zamanlama devrelerinden oluşur.
• Bellek birimine uygun adres bilgisini yollayarak komutların ALU de işlenmesini
sağlar.
• Mantıksal işlemler ile bellekteki komut sırasıyla; Yakala, Çöz ve Çalıştır
işlemlerinden geçirilir.
Not: - İkili Veri: 1 Bit, 1Byte (8 Bit), 1 Kelime (16 Bit), 2 Kelime (32 Bit),
4 Kelime (64 Bit), Kodlanmış veri, Komut Kodları…
- Adres; Kelimenin yada komutların bellek içindeki yerini tanımlayan sayı…
8 bit bir mikroişlemci için işlem kodu ve işlenen adresler 8 bit kelimedir…

EEM 448 Mikroişlemciler II No.1-15


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Yapısı (devam)


• Bellek Birimi
– Mikroişlemcinin çalıştırdığı programın komutlarını ve programda kullanılan
verilerin/sabitlerin saklandığı birimdir
– ALU tarafından getirilen giriş/çıkış bilgilerinin de saklandığı yerdir.
– Kontrol biriminin denetiminde bilgiler doğrudan girişden alınabilir veya çıkışa
aktarılabilir.
– Bellek Birimi; Program, Sabitler, Değişkeler ve Giriş/Çıkış olarak ayrılabilir.
• Programlar; işleme koyulacak yada yürütülecek işlem sırasını ifade eden komutlar
zinciridir.
• Sabitler; program tarafından kullanılan ve yürütülme sırasında değişmeyen
sayılarlardır.
• Değişkenler; program tarafından yaratılan yada değiştirilen sayılar/karakterlerdir.
• Giriş/Çıkış; programın dış dünyadan aldığı veya verdiği verilerdir.

EEM 448 Mikroişlemciler II No.1-16


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Yapısı (devam)


• Giriş/Çıkış (I/O, Input/Output) Birimi
– Giriş birimi dışardan mikroişlemci sisteminin dışındaki fiziksel Dünya dan
gelen bilgilerin kontrol birimi denetiminde ALU ve/veya bellek birimine
girilmesini sağlar.
– Çıkış birimi de benzer şekilde dışarıdaki fiziksel Dünya ya kontrol birimi
denetiminde ALU ve/veya bellek birimindeki verilerin gönderilmesini sağlar..
– Bu birimler çevre birimleri olarak da adlandırılır.

EEM 448 Mikroişlemciler II No.1-17


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Yapısı (devam)


• İletişim Hatları, Yollar (Busses); Mikroişlemci, bellek ve giriş/çıkış çevre
birimleri arasında iletişimi sağlayan bağlantılardır.
• (i) Adres Yolu(Address Bus);
• mikroişlemcinin yazacağı ve/veya okuyacağı her bellek hücresine çevre
birimlerindeki kaydedicilere (ki bunlar veri hücreleridir) erişebilmek için ikilik bir
adresleme mantığı kullanılır.
• Adrese yolu tek yönlüdür ve kontrol birimi tarafından denetlenir. İşlemci okunacak
yada yazılacak yerin adresini adrese yoluna bırakır ve istenilen bellek hücresine
veya kaydedicisine erişim sağlanır.
• Adreslenecek maksimum hafıza aralığı = 2^(adres hattı sayısı)
• Z80, 6802,8085,8051 için 16 adres hattı, 8086 için 20 ve 68000 için 23 adres
hattı vardır
• (ii) Veri Yolu(Data Bus);
• Bellek ve diğer çevresel birimler arasında bilgi transferi yapılan çift yönlü akışı
sağlar. 8, 16, 34, veya 64 paralel hattan oluşur.
• Çift yollu olduğu için R/W (Oku/Yaz) işaretleri ile denetimi sağlanır.
• (iii) Kontol Yolu(Control Bus);
• Tüm birimlerin eş zamanlı (senkron) ve kontrollü olarak çalışması için gerekli
sinyalleri iletir.
• Bu işaretler; Saat, Okuma/Yazma, Kesme, Reset (Yeniden Başla) sinyalleri ile
iletişim hatlarının kullanımı düzenlenir.
Not; farklı mikroişlemci mimari yapılarında bu yollar ortak da kullanılabilir.

EEM 448 Mikroişlemciler II No.1-18


Mikroişlemciler/Mikrodenetleyiciler

2.2. Mikroişlemci Temelli Sistem Mimarisi


• Mikroişlemci temelli sistemlerde mimari yapı; komut kümesi, donanım
elemanları ve sistem organizasyonu ile yani kontrol sinyalleri, çevre
elemanları ve kullanılan bellek gibi donanım elemanları ile ilgilenen bir
tasarım konusudur… İki farklı yaklaşım vardır;
– Komut Kümesi Mimarisi (ISA, Instruction Set Architecture)
Hesaplama özelliklerini karakteristiklerini belirleyen komut kümesi tasarımı
– Donanım Kümesi Mimarisi (HSA, Hardware Set Architecture)
CPU, depolama ve I/O sistemlerinin dahil olduğu alt sistem ve bunların
bağlantı şekillerinin tasarımıdır.
• Mikroişlemci temelli sistemlerde gördüğümüz CPU, Bellek, I/O, Yollar
tasarımı HSA nın konusudur.
• İki farklı yaklaşım vardır;
– Von Neuman (Princeton) Mimarisi
– Harvard Mimarisi

EEM 448 Mikroişlemciler II No.1-19


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Mimarisi(devam)


• Von Neuman (Princeton) Mimarisinde komut işleme;
– Program Sayıcı (PC, Program Counter) adı verilen bir kayıtçının gösterdiği
adresten (Program belleği) komut alınır.
– Getirilen komut kodu kontrol birimi kullanılarak çözülür. Kontrol birimi
sistemdeki diğer birimlere sinyal göndererek gerekli operasyonları
gerçekleştirir.
– Program Sayıcının değeri bir artırılır yada komutların işleyişine göre
gerekirse bir sonra gelecek komutun adresi PC ye aktarılır…
– İlk adıma geri dönülür.
• Her iki Mimarinin aralarındaki en önemli fark bellek
organizasyonundadır. Von Neuman mimarisinde bellek tektir ve
program/veri aynı yerde organize edilir. Bu durum hızı düşürebilir.
Harvard da ise iki ayrı bellek ile verinin tek bellekten alınıp tekrar geri
yazılması sorunu ayrı veri ve program belleği ile çözülmüştür…
• HSA da donanımsal tasarım yapılmakla birlikte ISA ile programcının
donanım elemanlarına nasıl yön vereceği tasarlanmaktadır.
YAZILIM (Komut Kümesi Mimarisi) DONANIM

EEM 448 Mikroişlemciler II No.1-20


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Mimarisi(devam)


• Farklı üreticiler kendi ISA larını oluşturmakla birlikte 1968 de IBM bir
standartizasyon önermiştir. ISA ve Mikrokod Motoru
• Aynı ISA sistemi olan donanımlar için yazılan programlar çalışacaktır.
• Yazılım ile donanım arasındaki bağlantıyı devreye sokan öz bilgilere
yani komut kümesinin yer aldığı bölgeye mikrokod motoru adı verilir
• Mikrokod Motoru; özel komutları bir dizi kontrol sinyaline çevirerek
sistem elemanlarının denetlenmesini ve gerekli görevleri yerine
getirmelerin sağlar bir görevi vardır.

CPU
Mikrokod

Bellek Kontrol Birimi

Kaydediciler

EEM 448 Mikroişlemciler II No.1-21


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Mimarisi(devam)


• Programcı yazdığı program ile sistem tarafından algılandığında doğru zamanda
doğru donanım elemanların devreye sokar.
Î Komut Kümesinin hazırlanması
• Komut kümesi donanımsal tüm özellikleri içerir ve yazılan program derleme
işleminin ardından donanımın anlayacağı hale getirilerek donanıma aktarılır.
• Komut işlenirken; mikrokod ROM komutu okur, komuta karşılık gelen uygun
mikrokodları yükler ve çalıştırır ki komut kümesinin tüm komutlarının mikrokod
karşılıkları vardır.
• Mikrokod yapının avantajları;
– İçerisinde mikrokod bulunan ROM bellek, CPU içerisinde yer almakta olup ana
bellekten çok daha hızlıdır.
– Aynı komut kümesinin adamış mantık üzerinde yürütmek yerine, yeni yongalarda
yürütmek daha kolay olur.
– Program tasarımı yeni komut kümelerini işlemek için tamamen değiştirilebilir.
– Yeni komutlar mikrokod halinde eskilerinin üzerine eklenebilir. Geriye dönük uyumluluk
sağlanabilir.
• Farklı amaçlarla yazılan programlarda aynı komut kümesi paylaşılabileceğinden,
programlar temel donanımı değiştirmeden makineler arasında taşınabilir.

EEM 448 Mikroişlemciler II No.1-22


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Mimarisi(devam)


• ISA bellek Kullanımına göre çeşitlilik gösterir.
Î CISC (Complex Instruction Set for Computer)
Î RISC (Reduced Instruction Set for Computer)
Î EPIC (……………………………… Computer)
• Genel olarak yapı

Yüksek Seviyeli Programlama Dili


YAZILIM
Derleme

Makine Dili

Çözme

Mikrokod DONANIM

İşleme

ALU, CU, Keydediciler vs

EEM 448 Mikroişlemciler II No.1-23


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Mimarisi(devam)


• CISC Mimarisi; Programlanması kolay ve etkin bellek kullanımını
sağlayan bir yapıya sahiptir. Yazılımı basitleştirir ancak performansı
düşüktür. Değişken uzunlukta komut yapısına sahiptir. Çok kademeli
işleme modeline dayanır.
• CISC Mimarisi avantajları;
– Programlama, Assembly dilinin yürütülmesi kadar kolaydır.
– Yeni komutlar ve mikrokod ROM a ekleme özelliği tasarımcıya eski
sistemler üzerinde düzenleme yapılmasını sağlar.
– Gelişme sürecinde her bir komut daha yetenekli olacağından verilen görevi
yerine getirmek daha as komut ile sağlanır. Bu göreceli olarak yavaşlamaya
neden olur ancak bellek etkin kullanılacaktır
– Komut kümeleri yüksek seviyeli dillerin yapılarına benzer olduğundan
derleyiciler karmaşık değildir.
• CISC Mimarisi dezavantajları;
– İşlemci ailesindeki tüm kuşaklar yeni işlemcide de kabul gördüğünden yapı
gün geçtikçe daha karmaşık olacaktır.
– Farklı komutlar farklı uzunlukta olduğunda işlem süreleri değişir.
– Çoğu özel komutlar yeteri kadar sık kullanılmamaktadır
– Durum Kayıtçısı yardımı ile çalışan komutlar nedeni ile bekleme süreleri
artabilir.

EEM 448 Mikroişlemciler II No.1-24


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Mimarisi(devam)


• RISC Mimarisi; CISC’e alternatif olarak komut sayısını azaltmak ve
komut işleme sürelerini sabit tutmak amacı ile ortaya atılmıştır.
• RISC Mimarisi Özellikleri/Felsefesi;
– Bütün komutlar tek bir komut çevriminde çalışmaktadır.
– Belleğe sadece load (yükle) ve store (sakla) komutlarıyla erişilebilir.
– Bütün icra birimleri mikrokod kullanmadan donanımdan çalışmaktadır.
• RISC Mimarisi üstünlükleri;
– Hız
– Basit Donanım
– Kısa Tasarım Zamanı.
• EPIC Mimarisi; Komutların paralel çalışması amacıyla geliştirilmiştir. Derleyici
paralel çalışarak komutları tanımlar, hangi komutların bağımsız olacağını belirler
ve bu bilgi ışığında aynı komu çevriminde aynı anda işlenecek komutları
oluşturarak performansı artırır. Üstünlükleri;
– Komutların paralel işlenmesi, tahmin/spekülasyon kullanımı
– Derleme sırasında paralel çalışacak komutları belirleyen derleyiciler
– 128 kayan nokta, 128 tamsayı, 64 tahminli kaydedici kümesi
– Dallanma tahmini, bellek gecikmesi çözümü
– Eskiye karşı uyumluluk, gelişmeye açıklık

EEM 448 Mikroişlemciler II No.1-25


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Mimarisi(devam)


• CISC ve RISC Mimarisi Farklılığı;

CISC RISC

Ana Bellek Ana Bellek

Komut Veri
Ön Bellek Önbelleği Önbelleği

Komut&Veri Yolu Veri Yolu

Kontrol Birimi Dananım Kontrol Birimi

Mikrokod

EEM 448 Mikroişlemciler II No.1-26


Mikroişlemciler/Mikrodenetleyiciler

2.3. Temel Mikroişlemci Özellikleri


1.) Mikroişlemcinin bir defada işleyebileceği kelime uzunluğu;
– Mikroişlemcide kelime uzunluğu paralel olarak işlenen veri bitleri sayısı olup
kelime işlemcideki genel amaçlı kaydedicilerin ve bellek alanı kapasitesidir.
– Büyük kelime ==> birçok işlemi birlikte yap.
– İşlemci her bir komut çevriminde (komutların işlenme zamanı) senkronize
olarak komut özelliğine göre bellekten veriler işler.
– Mikroişlemci özelliğine göre veri bitleri;
8-Bit = 1-Byte (Hesap makinesi 4-Bit)
16-Bit = 1-Kelime
32-Bit = 1-Çift Kelime
64-Bit = 1-Uzun Kelime
– Kelime uzunluğu aritmetik işlemlerde doğruluk oranı ile doğrudan ilintilidir.

EEM 448 Mikroişlemciler II No.1-27


Mikroişlemciler/Mikrodenetleyiciler

Temel Mikroişlemci Özellikleri (devam)


2.) Mikroişlemcinin tek bir komut işleme hızı;
– Mikroişlemcinin hızı saat frekansı ile ilgilidir ancak performansı tam olarak
saat hızı belirlemez!
– Çalışma çevriminin uzunluğu;
• Al Getir
• Kodunu Çöz
• İşlet
• Yerine Yaz
ile belirlense de mikroişlemcinin hızı saniyede işleyeceği milyon komut
sayısı ile ölçülmelidir.
– Mikroişlemciler arasındaki hız farkları;
• CPU ların devre teknolojisi ve planları
• İşlemcilerin kullandığı kelime uzunluğu
• İşlemci Komut kümesi
• Kontrol sinyal organizasyonu ile denetim düzeni
• Belleğe ve I/O birimlerine erişim süreleri
• Kesme altyordamları çeşitleri
ile belirlenir…
EEM 448 Mikroişlemciler II No.1-28
Mikroişlemciler/Mikrodenetleyiciler

Temel Mikroişlemci Özellikleri (devam)


3.) Mikroişlemcinin doğrudan adresleyebileceği bellek büyüklüğü;
– Mikroişlemci temelli sistemlerde bellek adres yolu ile adreslenir ve adres
yolundaki paralel hat sayısı adresleme kapasitesini belirler.
– Adres yolu mikroişlemcinin yapısı ile ilgili olup fiziksel olarak değişmez!
– İşlem sırasında adres işaret kayıtçılarının özellikleri kullanılarak (örneğin
16 bit uzunluğundaki adres bilgisi 4-bit sola kaydırılarak 20-bit adres alanı
belirlenebilir) adres yolu programsal olarak artırılabilir…
• 2^10 Æ Kilobyte
• 2^20 Æ Megabyte
• 2^30 Æ Gigabyte
• 2^40 Æ Terabyte

EEM 448 Mikroişlemciler II No.1-29


Mikroişlemciler/Mikrodenetleyiciler

Temel Mikroişlemci Özellikleri (devam)


4.) Programcının kullanabileceği komut kütüphanesi;
– Mikroişlemcinin hızını etkileyen komutlar;
• Veri manevra komutları
• Giriş/Çıkış komutları
• Aritmetik İşlem komutları
• Mantık komutları
• Test komutları
– Hızı artıran komut işleme süresidir!

EEM 448 Mikroişlemciler II No.1-30


Mikroişlemciler/Mikrodenetleyiciler

Temel Mikroişlemci Özellikleri (devam)


5.) Programcının bellek adreslemede kullandığı adresleme modları;
– Adresleme modları üzerinde çalışılan verini belleğe nasıl ve ne şekilde
yerleştirileceği veya üzerinde çalışılacak verinin bellekten nasıl ve hangi
yaklaşım ile çağrılacağını belirler.
– Bu işlem bir paketin adresine doğrudan mı yoksa bir başkasının eliyle mi
gideceğine benzer!
– Adresleme modları;
• Doğrudan adresleme
• Dolaylı adresleme
• İndisli adresleme
olacak şekilde gruplandırılabilir ve kullanıcının işini kolaylaştırır.

EEM 448 Mikroişlemciler II No.1-31


Mikroişlemciler/Mikrodenetleyiciler

Temel Mikroişlemci Özellikleri (devam)


6.) Programcının üzerinde çalışabileceği kayıtçı çeşitleri;
– Programcının verileri hareket ettirmek, kısa süreliğine tutmak amacı ile
kaydediciler kullanır.
– Kaydediciler sayısını fazla olması manevra kolaylığı ve programcıya
esneklik sağlar. Farklı mikroişlemciler farklı sayıda ve amaçlara kaydedici
tanımlamışlardır.
– Genel olarak kaydediciler;
• Genel amaçlı kaydediciler
• Özel amaçlı kaydediciler
• Gizli kaydediciler
olacak gruplandırılır.
Not: Kaydedicilere sonra geri dönülecektir!

EEM 448 Mikroişlemciler II No.1-32


Mikroişlemciler/Mikrodenetleyiciler

Temel Mikroişlemci Özellikleri (devam)


• Mikroişlemcilerin gelişimi ile artan diğer özellikler;
– Ön Bellek (Cache Memory) sistemi
– Süper-ölçekli işlem
– Dallanma tahmini
– Çoklu program işleme
olarak gruplandırılır.

EEM 448 Mikroişlemciler II No.1-33


Mikroişlemciler/Mikrodenetleyiciler

2.4. Temelde Mikroişlemci Çalışması


• Basit (örneğin 8-bit) bir Mikroişlemcide bulunan birimler:
– Verilerin manevrasında kullanılan ve bellek ile aynı yapıya sahip, kendine
özgün adres yerine adı ile çağrılan kaydediciler (registers)
– Aritmetik ve Mantık işlemlerinin gerçekleştiği icra birimi
– CPU içerisindeki tüm işlemlerden ve zamanlamalardan sorumlu Kontrol
birimi
• Bu birimleri inceleyelim…

EEM 448 Mikroişlemciler II No.1-34


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Temelli Sistem Yapısı

MAR
Dahili Adres Yolu

DAR PC Bellek

Dahili Veri Yolu


MBR

IR
DR ALU
A

Komut Kod
Çözücü

Kontrol
Yolu
Zamanlama/
Diğer CPU Elemanlarına Kontrol Birimi

EEM 448 Mikroişlemciler II No.1-35


Mikroişlemciler/Mikrodenetleyiciler

Temelde Mikroişlemci Çalışması (devam)


• Kaydediciler;
– Her biri belli bir amaca göre yapılandırılmıştır. Yaptıkları işe göre
adlandırılırlar ve bellek alanı ile aynı özelliklere sahiptirler. İşlemci içerisinde
olduklarından hızlıdırlar.
– Esasları kaydıran kaydedicilere (flip-flop) dayanırlar ve
– Genel Amaçlı Kaydediciler;
• Programın üzerinde işlem yapacağı verilerin manevrasında kullanılırlar
• A,B,X gibi isimlendirilirler. A kaydedicisi Akümülatör olarak bilinir. Bazen W
Working kaydedicisi de denir.
• DR, (Data Register) Veri Kaydedicisidir ve işlenen verileri tutar.
– Özel Amaçlı Kaydediciler;
• Program adreslerini ALU da yapılan işlem sonucuna göre yada yığın olarak
kullanılan bellek bölgesinin adresini indis sayıcı bilgilerini tutarlar.
• Program Sayıcı (PC, Program Counter), Yığın Göstericisi (SP, Stack Pointer),
Durum Kaydedicisi (SR, Status Register) yada Koşul kod kaydedici
• Bunların dışında sadece alt düzey programcıların ulaşabildiği programcıya
görünmeyen kaydediciler; Indeks Kaydedici (IX, Index Register), Komut Kaydedici
(IR, Instruction Register). Veri Adres Kaydedici (DAR, Data Adress Register),
Bellek Adres Kaydedici (MAR, Memory Adress Register) Bellek Tanpon Kaydedici
(MBR, Memory Buffer Register)

EEM 448 Mikroişlemciler II No.1-36


Mikroişlemciler/Mikrodenetleyiciler

Temelde Mikroişlemci Çalışması (devam)


• Aritmetik/Lojik Birimi;
– ALU mikroişlemcide aritmetik ve lojik(mantık) işlemlerin yapıldığı birimdir.
– Burada işlemler akümülatör ile bellekten alınan veri arasında veya
akümülatör ile kaydediciler arasında iki elemana dayalı veya tek elemana
dayalı olarak akümülatörde, kaydedicide veya bellekten bir kelime üzerinde
gerçekleştirilir
– Buradaki işlemler;
• Toplama, çıkarma çarpma, bölme
• Çarpma işlemi verinin bir sola kaydırılması ile iki ile çarpılması mantığı ile
• Veya bölme bir sağa kaydırılması ile gerçekleştirilir.
– Bu işlemler toplayıcı, çıkarıcı ve kaydıran devreler ile gerçekleştirilir.
– Bu devreler dahili veri yolu vasıtası ile birbirlerine, harici veri yolu ile
kaydedicilere ve zamanlama-kontrol birimine ulaşır.
– ALU nun çalışmasını bir toplama işlemi ile açıklarsak;
• Birinci veri yükle komutu ile klavyeden girilen bilgi akümülatöre yüklenir
• Sonra topla komutuyla birlikte toplanacak bellek adresi ile belirtilen veri geçici
olarak DR ye alınır ve bir sonraki komut çevriminle birlikte Akümülatöredeki veri ile
toplanarak sonuç akümülatöre yazılır.
• Bu işlem sonucunda diğer kaydediciler, örn. Durum kaydedici, etkilenebilir.
• İkinci işlenen veri başka bir kayıtçıda da bulunabilir.

EEM 448 Mikroişlemciler II No.1-37


Mikroişlemciler/Mikrodenetleyiciler

Temelde Mikroişlemci Çalışması (devam)


• Aritmetik/Lojik Birimi (devam);
– ALU’da gerçekleştirilen tek işlenenli işlemlere akümülatörlü silme, tamlama
veya tersleme, sağa/sola kaydırma ve yönlendirme, indis kaydedicileri
artırma/azaltma işlemleri örnek verilebilir. İki işlenenli işlemler toplama,
çıkarma, karşılaştırma, mantıksal AND, OR, XOR ve BCD aritmetik işlemler
örnek verilebilir.
– Karmaşık işlemleri, örn karakök gibi, doğrudan gerçekleştirilmesi için ayrı bir
altyordam gruplarına veya ek elektronik donanıma gerek duyuylur.
– 8-bit lik işlemcilerde yuvarlanmış kesirli sayılar ile işlem yapmak kolay
değildir ve yuvarlanmış kesirli sayılar yerine tam sayılar kullanılır.
– Günümüz teknolojisinde bu işlemleri yapmak amacı ile bir ortak işlemci
daha yerleştirilir.

EEM 448 Mikroişlemciler II No.1-38


Mikroişlemciler/Mikrodenetleyiciler

Temelde Mikroişlemci Çalışması (devam)


• Zamanlama ve Denetim Birimi;
– Sitemin tüm işleyişinden ve işlemin zamanında yapılmasından sorumludur.
– Bu birim, bellekte program bölümünde bulunan komut kodunun alınıp
getirilmesi, kodunun çözülmesi, ALU tarafından işlenmesi ve sonucun alınıp
geri belleğe konulması için gerekli denetim sinyallerini üretir.
– Bu birimde işlevlerine göre;
• Zamanlama denetimi; sistemin isterlerine göre zamanlama sinyalleri üretilir ve
komut kod çözücüye gönderilir.
• Komut kod çözücü; komut kaydedicinde tutulan komutları yorumlar ve ALU ya
kaydedicilerle çalışması için uygun zamanlama ve kesme sinyalleri gönderir.
• Kesme mantık birimi; bu birimde diğer kontrol elemanlarına benzer ve gerekli
durumlarda kesme sinyallerini alarak işlemciyi uyarır.
– Bu birim merkezi işlem biriminin en karmaşık bölümü olup saat darbe dizileri
ile işlem görür.
– Bu işlemler; “Getirme periyodu” (komut bellekten okunur ve kodu çözülür)
ve “Yürütme periyodu” (gerekli kontrol sinyallerine göre işlevi gerçekleştirilir)
olarak ifade edilirler.

EEM 448 Mikroişlemciler II No.1-39


Mikroişlemciler/Mikrodenetleyiciler

Kaydediciler
• Program Sayıcı;
– Yürütülmekte olan programda sırası gelen komutun adresini tutan
kaydedicidir.
– Mikroişlemci hafızadan aldığı her komutun sonunda sonra gelecek komutun
adresini program sayıcıyı değerini otomatik olarak artırarak (yada azaltarak)
belirler. Bu amaçla kullanılan algoritma;
1. Program Sayıcıyı başlangıç adresine kur.
2. Program Sayıcının gösterdiği adresten komut al.
3. Komutu işlet
4. Dallanma var mı? YOK ise Program Sayıcıyı bir artır, VAR ise Program Sayıcıya
dallanma adresine yükle
5. İkinci adıma dön

EEM 448 Mikroişlemciler II No.1-40


Mikroişlemciler/Mikrodenetleyiciler

Kaydediciler(devam)
• Yığın Göstericisi (SP, Stack Pointer);
– RAM bellğin bir bölümü programcı tarafından veya herhabgibir komutun
işlenmesi sırasında geçici olarak kullanılır. Belleğin bu bölümüne yığın denir.
– Yığın göstericisi yığın adresini tutan kaydedicidir ve bununla yığının istenilen
noktasına erişilebilir.
– Yığına atılan verilerde son giren ilk çıkar (LIFO, Last In First Out) mantığı yani
son olarak yığına giren veriyi önce çıkartarak kullanılır.

Yığın Göstericisi Veriler

3FFB
3FFB
3FFC 03
3FFD 50 YIĞIN
3FFE B7

Yığın Başlangıç Adresi

EEM 448 Mikroişlemciler II No.1-41


Mikroişlemciler/Mikrodenetleyiciler

Kaydediciler(devam)
• Komut Kaydedici (IR, Instruction Register);
– CPU, bellekten komut kodunu alıp getirdiğinde ilk önce bu kaydedici kullanılır.
– Komut kodu burada deşifre devresi tarafında kodu çözülerek hangi işlemin
yapılacağı belirlenir.
• Indeks Kaydedici (IX, Index Register);
– Bellekteki toplu verilere veya veri tablolarına erişimde kullanılırlar.
– Kaydedicilere has artırma/azaltma komutları ile sayaç vazifesi de görebilir.
– Hesaplanan ara değerlerin geçici olarak tutulduğu yerdir.
– Program döngülerinde ve zamanlama uygulamalarında bir sayıcı olarak
kullanılabilir. Zaman gecikmesi istendiğinde bu kaydedici kullanılabilinir.
– Bellekte depolanmış dizi halindeki veri tablosu veya veri bloğu üzerinde bir
indisçi gibi kullanılır.

EEM 448 Mikroişlemciler II No.1-42


Mikroişlemciler/Mikrodenetleyiciler

Kaydediciler(devam)
• Veri Adres Kaydedici (DAR, Data Adress Register);
– Bellek üzerinde çalışılan adresin oluşturulmasında kullanılır.
– Programın işleyişi sırasında komut kodu çözüldükten sonra mutlak adres
bilgisi okuma ile bellekten getirilir.
– Böylece üzerinde çalışılacak adres DAR de üretilmiş olur
• Veri Kaydedici (DR, Data Register);
– Akümülatör yada çalışma kaydedicisi ile birlikte ALU da yapılacak olan
aritmetik ve mantıksal işlemlerde işlenen bilgisinin tutulmasında kullanılırlar.
– Bellekten alınan verilerin üzerinde geçiş yaptırmakla görevlidir.
• Bellek Adres Kaydedici (MAR, Memory Adress Register);
– Bellekten bir veri/komut alınıp getirileceği zaman bu kaydediciye ilgili adres
bilgisi koyulur.
– Program çalıştırıldığında komut kodlarının adresleri önce PC’ye ve oradan da
MAR’a konularak hedef gösterilir.
– MAR bir tampon kaydedici olarak da düşünülebilir.
• Bellek Veri Kaydedici (MDR, Memory Data Register);
– Bellekten herhangi bir veri/komut işlemciye getirilmesi istendiğinde tampon
olarak bu kaydedici otomatik olarak kullanılır.

EEM 448 Mikroişlemciler II No.1-43


Mikroişlemciler/Mikrodenetleyiciler

Kaydediciler(devam)
• İşlemci Durum Kaydedici (SR, Status Register);
– Aritmetik ve Lojik işlemler sonucunda bu kaydedicinin bayrakları (herhangi bir
biti) etkilenir ve değer değiştirirler.
– Bu kaydedicinin bayraklarına göre program içerisinde kullanılan komutlar
işlenebilir.
– Bu bayraklar;
• Elde Bayrağı (Carry Flag); toplama veya çıkarma gibi aritmetik işlem sonrasında bir
elde var ise bu bayrak değeri “1” olur.
• Negatif Bayrağı (Negativ Flag); toplama veya çıkarma gibi aritmetik işlem
sonrasında sonuç negatif ise bu bayrak değeri “1” olur. İşaret biti olarak da bilinir.
• Taşma Bayrağı (Overflow Flag); İkili tümleme sonucunda taşma olup olmadığını
gösterir. Varsa “1” olur.
• Sıfır Bayrağı (Zero Flag); toplama veya çıkarma gibi aritmetik işlem sonrasında
sonuç sıfır ise bu bayrak değeri “1” olur. Bu durumda iki sayı birbirine eşittir.
• Kesme Bayrağı (Interrupt Flag); dışarıdan bir kesme işlemi olup olmadığını gösterir
ve varsa “1” olur.

EEM 448 Mikroişlemciler II No.1-44


Mikroişlemciler/Mikrodenetleyiciler

Örnek: PIC Kaydediciler


• W (Working, Çalışma) Kaydedici;
– Programda veri alanının görülmeyen 8-bitlik kaydedicisi olup geçici olarak veri
depolama alanı olarak kullanılır.
– Bir bellek adresi yoktur ve W’daki veri adres belirtmeden ulaşılır.
Movlw 0x0F ; W’ya 0x0F değerini yükle
Movwf PORTB ;W’yı PORTB ye yükle

W;

0 0 0 0 1 1 1 1

PORTB;

0 0 0 0 1 1 1 1

EEM 448 Mikroişlemciler II No.1-45


Mikroişlemciler/Mikrodenetleyiciler

Örnek: PIC Kaydediciler (devam)


• STATUS (Durum) Kaydedici;
– Program akışını kontrol eden 8-Bit uzunluğunda en önemli kaydedicilerden
biri olup üç bölümde incelenebilir:
• Durum gösterge bitleri; Elde (C) ,basamak elde (DC), sıfır (Z) bayrakları.
• İşlemci durum bitleri; Time-out (TO) ve Power-down(PD) bayrakları ile işlemcinin
uykuda mı yoksa yeni çalışmaya başladığını gösterirler.
• Bellek bank değiştirme bitleri; RP0-2 ile PIC bellek bankları arasında geçiş sağlanır.
– Bu bayraklar yazılır/okunur (R/W).
– Detaylı bilgi için ders kitabı 102 sayfa

Bank Değiştirme Bitleri İşlemci Durum Durum Gösterme Bitleri

R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x


IRP RP1 RP0 TO PD Z DC C
bit-7 6 5 4 3 2 1 bit-0

EEM 448 Mikroişlemciler II No.1-46


Mikroişlemciler/Mikrodenetleyiciler

Örnek: PIC Kaydediciler (devam)


• Program Sayıcı;
– 13-Bit uzunluğunda olan Program Sayıcı RAM veri belleği (File Register)
içinde adreslenir ve RAM’de 8-Bit veri depolanabildiği için iki parçada işlem
görür;
• PCL (Program Counter Low, Program Sayıcı Alt) program sayıcının düşük 8-bit lik
bölümünü belirler.
• PCH (Program Counter High, Program Sayıcı Üst) program sayıcının üst 5-bit lik
bölümünü belirler.
PCL ye doğrudan ulaşmak mümkün olduğu halde PCH e PCLATH kaydedicisi
kullanılarak dolaylı ulaşılır.

PCH PCL

bit-12 bit-8 bit-7 bit-0

bit-7 bit-5 bit-4 bit-0


PCLATH

EEM 448 Mikroişlemciler II No.1-47


Mikroişlemciler/Mikrodenetleyiciler

Bugün
1. Mikroişlemci Temelli Sistemlere Giriş
– Mikroişlemci temelli Sistemler
– Mikrodenetleyiciler
2. Mikroişlemci Mimarisi
– Mikroişlemci Temelli Sistem Yapısı
– Mikroişlemci Temelli Sistem Mimarisi
– Temel Mikroişlemci Özellikleri
– Temelde Mikroişlemci Çalışması
3. Mikroişlemci Komut Seti ve Programlama Teknikleri
– Mikroişlemci Programlama Teknikleri
– Mikroişlemci Komut Seti
– Mikroişlemcilerde Adresleme Modları
– Makine Dili

EEM 448 Mikroişlemciler II No.1-48


Mikroişlemciler/Mikrodenetleyiciler

3.1 Mikroişlemci Programlama Teknikleri


• Mikroişlemci temelli sistemlerde donanım tek başına çalışamaz!!!
• Yazılım ve donanım doğru kullanıldığında bir görevi icra ederler!!!
• Mikroişlemcilerde bir program:
– Program bölümü
– Veri bölümü
olarak ayırabiliriz.
• Programı oluşturan komutlar ise bir amaca yönelik fonksiyonlar ve
fonksiyonların işlendiği işlenenlerin yerleri olacak şekilde ayrıştırmak
mümkündür…
• Komutların genel yapısına bakıldığında
<Etiket> OpKod<.Alan> <İşlenenler> <;Açıklama>
<Label> OpCode<.Field> <Operands> <;Comment>
Örnek:
dongu movlw d’200’ ;W’ya 200 degerini yukle ve bunu
movwf PORTB ;PORTB’nin icine gonder.

EEM 448 Mikroişlemciler II No.1-49


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Programlama Teknikleri(devam)


• Programlama Mantığı
– Algoritma; Bir programın yapacağı işlemleri adım adım yazmak
– Akış Şeması; Algoritmanın bloklar ile ifade edilmesi

Genel İşlemlerde açıklama ile Altyordam için


kullanılır… kullanılır…

Karşılaştırma İşlemleri; Karar


verme durumda doğru/yanlış
seçeneği de verir

Başlangıç ve Bitiş de
kullanılır…
Çıkış, genellikle yazı şeklindeki
çıktılarda kullanılır…

El ile bilgi girişinde kullanılır…

Bağlantı bölümleri için


kullanılır…

EEM 448 Mikroişlemciler II No.1-50


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Programlama Teknikleri(devam)


Örnek: Bir butona basılı olduğunda lambanın yakılmasını sağlayan
Programlama Algoritması ve Akış Şemasını yapalım

Algoritma; Başla
1. Başlangıç ayarlaması yap
2. LED’i söndür LED i söndür
3. Butonun basılı olup olmadığını kontrol et
4. Buton basılı değilse bir önceki adıma dön TUŞ a
5. Basılı ise LED i yak basılı mı?
Hayır
6. Butonun bırakılıp bırakılmadığını kontrol Evet
et
LED i yak
7. Basılı ise bir önceki adıma dön
8. Basılı değilse 2. adıma dön…
TUŞ
bırakıldı mı?
Evet Hayır

EEM 448 Mikroişlemciler II No.1-51


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Programlama Teknikleri(devam)


• PIC Mikrodenetleyicisinde program geliştirme aşamaları;

PIC

Altyordam.asm Programlayıcı

MPLAB Prog.asm Prog.hex


Assembler

Prog.lst
Prog.inc Prog.h
Programcı
Prog.err

EEM 448 Mikroişlemciler II No.1-52


Mikroişlemciler/Mikrodenetleyiciler

3.2 Mikroişlemci Komut Seti


• Mikroişlemci temelli sistemlerde programları oluşturan komutları
yaptıkları işlere göre gruplandıralım…
1. Veri Hareket Komutları:
• Bilgiyi bir yerden başka yere kopyalar ve bazı komutlar durum kayıtçısı gibi
diğer kayıtçıları içeriğini değiştirirler
• Mikroişlemcinin yapısına göre 8-, 16-, 32-, veya 64-bit işlemler yapılır..
2. Aritmetik/Lojik ve Kaydırma İşlem Komutları:
• Dört işlem ile birlikte VE, VEYA DEĞİL gibi mantıksal işlemler yapılır.
• Mikroişlemcinin yapısına göre de 8-, 16-, 32-, veya 64-bit işlemler yapılır..
3. Kaydırma ve Bit Değiştirme İşlem Komutları:
• Herhangi bir kayıtçı içeriğini bit bit sağa/sola kaydırma yapılabilir.
4. Program Kontrol Komutları
• Programın düzenli çalışabilmesi için gerekli başlangıç adreslerini, kesme
olaylarını tanıtan yardımcı komutlardır.
• Program akışının değişimi için kullanılırlar…

EEM 448 Mikroişlemciler II No.1-53


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Komut Seti(devam)


• PIC Mikrodenetleyicisinde kullanılan komutlar detaylı olarak ders
kitabında 68-73 de verilmektedir…
• Komutların açıklamalarında kullanılan semboller;
– f : Dosya kayıtçısı (file register); herhangi bir değişken ile ifade edilen
saklayıcı adresidir.
– w : Çalışma kayıtçısı
– k : 00-FF arasında bir sabit değer
– d : Hedef (destination) göstergesi (0 yada 1 değerinde)
– b : 0-7 arasında bit belirtilen sayı yada binary sayı
– h : Heksadesimal sayı (h’FF’ veya FFh)
– x : değeri önemli olmayan sayı
– <- : Değer atama
– => : İse veya … işleminin sonunda anlamında kullanılır
– [ ] : duruma göre kullanılması serbest olan seçenek

EEM 448 Mikroişlemciler II No.1-54


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemci Komut Seti(devam)


• Örnek Program: PORTA’nın 0. bitine bağlı butonu test ederek PORTD
deki LED leri yakıp söndürülsün…

;----------------------------------------------------------
list p=16f877
#include <p16f877.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC &
_WRT_ENABLE_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF
;----------------------------------------------------------
org 0 ;Reset vektörü
bsf STATUS,RP0 ;bank1'e geç
movlw b'00000111'
movwf ADCON1 ;PORTA ve PORTE dijital I/O seçildi
movlw b'00000000'
movwf TRISD ;PORTD'nin bütün pinleri cikis yapildi
movlw b'11111111'
movwf TRISA ;PORTA'nin tüm pinleri giris yapildi.
bcf STATUS,RP0 ;bank0'a gec
clrf PORTD
test btfss PORTA,0 ;RA0=1'mi?(0' ise alt satira geç yoksa atla)
goto test ;Test sonucu Hayir.Tekrar test et
movlw B'11111111' ;Test sonucu Evet ise bu satirdan devam et.
movwf PORTD ;LED'leri yak.
end
;---------------------------------------------------------
EEM 448 Mikroişlemciler II No.1-55
Mikroişlemciler/Mikrodenetleyiciler
Mikroişlemci Komut Seti(devam)
• LIST Dosyası parçası…
1. sutun: program belleğindeki yerleşimi,
2. sutun: komutların heksedecimal karşılığı, 3.sutun satır numarası
29. satır: h’1283’ = b’001001010000011’ => 01 00bb bfff ffff (BCF f,b)
0000 00020 org 0 ;Reset vektörü
00021
0000 1683 00022 bsf STATUS,RP0 ;bank1'e gec
0001 3007 00023 movlw b'00000111'
0002 009F 00024 movwf ADCON1 ;PORTA ve PORTE dijital I/O seçildi
0003 3000 00025 movlw b'00000000'
0004 0088 00026 movwf TRISD ;PORTD'nin bütün pinleri cikis yapildi
0005 30FF 00027 movlw b'11111111'
0006 0085 00028 movwf TRISA ;PORTA'nýn tüm pinleri input yapildi.
0007 1283 00029 bcf STATUS,RP0 ;bank0'a geç
00030
0008 0188 00031 clrf PORTD
0009 1C05 00032 test btfss PORTA,0 ;RA0=1'mi?(0' ise alt satira geç,)
000A 2809 00033 goto test ;Test sonucu Hayir.Tekrar test et
000B 30FF 00034 movlw B'11111111' ;Test sonucu Evet ise bu satirdan devam et.
000C 0088 00035 movwf PORTD ;LED'leri yak.
00036 HEX Dosyası…
00037 end :020000040000FA
:10000000831607309F0000308800FF308500831280
:0A0010008801051C0928FF30880054
:02400E00713D02
:00000001FF
EEM 448 Mikroişlemciler II No.1-56
Mikroişlemciler/Mikrodenetleyiciler

3.3 Mikroişlemcilerde Adresleme Modları


• Mikroişlemci temelli sistemlerde bir işlenenin merkezi işlem birimi
tarafından nasıl hesaplama yapılacağını adresleme modu ile belirlenir.
1. İvedi Adresleme Modu:
2. Doğal Adresleme Modu:
3. Doğrudan Adresleme Modu:
4. Dolaylı Adresleme Modu:
5. Sıralı Adresleme Modu:
6. Bağıl Adresleme Modu:
• Farklı Mikroişlemcilerde bu isimler farklılık gösterseler de temelde
kullanılan yaklaşımlar bunlardır.
• Adresleme modu seçimi yazılan kaynak ifadelerine göre kullanıcı
tarafından belirlenir.
• Uygun kodlara çevrimi kullanılan yönteme bağlıdır. Adresleme
modlarının tümünün kullanıldığı bir komut yoktur. Dallanma
komutlarının tamamı sadece bir adresleme modu ile kullanılır.
• PIC de kullanılan İvedi, Doğrudan ve Dolaylı Adresleme modlarıdır!

EEM 448 Mikroişlemciler II No.1-57


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• İvedi Adresleme Modu: İşlenen yerine yazılan bilgi bir adres olmayıp
işlenen üzerinde yapılacak verinin kendisidir.
• Çalışma kayıtçısına doğrudan değer atmak veya içeriğin değiştirilmesi
için kullanılan adresleme şeklidir.
• W’ya ivedi adresleme ile 00001001 değerini yükleyelim ve sonra
00010111 değerini çıkaralım;
movlw b’00001001’ ; WÅ b’00001001’
sublw b’00010111’ ; W Å W - b’00010111’
bu durumda öncelikle W nın içeriği ivedi olarak 00001001 oldu sonra
bu değerden 00010111 çıkarılarak 11110010 oldu. Aynı zamanda
STATUS durum kayıtçısı da etkilenerek C = 1 değerini aldı…
W 00001001 C=0
W 11110010 C=1 Z=? DC = ?
• İvedi Adresleme Modu ile W kayıtçısına değer yükleme ve sayı
çıkarmayı akış şeması sayfa 81 de görüldüğü gibidir…
• İvedi adresleme ile bellekte yer işgal edilmez. Ancak artarda gelen
verilerin işlenmesinde bu adresleme modu kullanışlı olmayabilir.

EEM 448 Mikroişlemciler II No.1-58


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• Doğrudan Adresleme Modu: Komut kaydedicisine yapılacak işlem ve
işlemin yapılacağı RAM adresi yerleştirilerek adresleme yapılır.
• İvedi adreslemeye göre artık bellek kullanılmaktadır.
• Bir örnek ile inceleyelim; öncelikle kullanılacak değişken isimlerini
bellekteki yerlerini belirleyelim,
ilk EQU 0x021
son EQU 0x022
sonra da PORTB yi okuyarak bu değeri önce ilk değere sonra son ile
belirtilen adresin içeriğini de ilk değerden çıkararak tekrar son ile
belirtilen değere yerleştirelim.
movf PORTB,W
movwf ilk
movf son,W
subwf ilk,W
movwf son
• Doğrudan Adresleme Modu ile RAM deki veriyi W kayıtçısına
yüklemek, W’yı RAM kaydetmek ve kaydedici içeriğinden W’yı çıkarma
akış şeması sayfa 83-85 de görüldüğü gibidir…

EEM 448 Mikroişlemciler II No.1-59


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• Dolaylı Adresleme Modu: Yüksek ve orta seviyeli programlama
dillerinde kullanılan dizi (array) işlemelerinin gerçekleşmesinde
kullanılan adresleme yaklaşımıdır.
• Bu adresleme modu için kaynak kodunda ayrılan kayıtçılar kullanılır.
• Bir örnek ile inceleyelim; öncelikle dizi başlangıç adresini bellekte
belirleyelim,
dizi EQU 0x020
burada sadece başlangıç adresi belirli olup uzunluğu hakkında bir bilgi
verilmemiştir. Dikkat!!!
• Dolaylı adresleme modunda kullanılan iki önemli kayıtçı INDF ve FSR
kaydedicileri ile adresleme yapılır. Fiziksel kaydedici değillerdir sadece
bu adresleme modunda PIC de kullanılırlar…
• INDF kaydedicisinde bulunan bir komut kullanıldığında FSR
kaydedicisinin gösterdiği kaydedicinin içindeki veriye ulaşılır. FSR
RAM de 0x04 adresinde bulunur. FSR ye daima bir adres verisi
yüklenir. FSR nin gösterdiği bu adresdeki veriye dolaylı olarak ulaşmak
için de INDF kayıtçısı kullanılır.
• Dolaylı adresleme modu genellikle sıralı verilere çok daha hızlı ulaşmak
amacı ile kullanılır. Her gelen veri birbirinin ardı sıra işlenir.

EEM 448 Mikroişlemciler II No.1-60


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• Dolaylı adresleme ile 0x020 ile 0x02F RAM adresleri içerisindeki verileri
silen bir program örneği verelim

movlw 0x020
movwf FSR
dongu clrf INDF
incf FSR,f
btfss FSR,4
goto dongu

• Dolaylı Adresleme Modu ile FSR ve INDF kaydedicilerine


değeryüklemeyi gösteren akış şeması sayfa 88 de görüldüğü gibidir…

EEM 448 Mikroişlemciler II No.1-61


Mikroişlemciler/Mikrodenetleyiciler

3.3 Mikroişlemcilerde Adresleme Modları (tekrar)


• Mikroişlemci temelli sistemlerde bir işlenenin merkezi işlem birimi
tarafından nasıl hesaplama yapılacağını adresleme modu ile belirlenir.
Yani işlenenin nerede bulunacağı belirten ki buna etkin adres adı verilir
yaklaşımlardır…
1. İvedi Adresleme Modu:
2. Doğal Adresleme Modu:
Burada işlenen alanında bulunan bilgi işlenenin bulunduğu kayıtçı adı olup kayıtçılar
üzerinden adresleme yapılır.
3. Doğrudan Adresleme Modu:
4. Dolaylı Adresleme Modu:
5. Sıralı Adresleme Modu:
Dizi yapısında olan veriler bellekte sıralanmış olarak saklanırlar ve bunlara ulaşmak
için kullanılan sıra kayıtçısı ile bu adresleme yapılır. Artan ve azalan sıralama ile
ne uzunlukta bir sıralı diziye ulaşılacağı belirlenir…
6. Bağıl Adresleme Modu:
İşlenen adresi komutun bellekte bulunduğu yere yani adrese göre tanımlama ilkesine
dayanan bu yaklaşımda işlenen yerine görülen sayı üzerinden işlem yapılacak
verinin, komutun yazılı olduğu adresten ne kadar uzakta olduğu belirtilir. Bu
adresleme dallanma işlemlerinde sıklıkla kullanılır.

EEM 448 Mikroişlemciler II No.1-62


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• İvedi Adresleme Modu: İvedi Adresleme Modu
ile W kayıtçısına değer yükleme ve sayı
çıkarmayı akış şeması sayfa 81 de görüldüğü
gibidir… Burada;
– PC nin artışıyla program belleğindeki MOVLW
b’00001001’ komut satırı komut kaydedicisine
yüklenir.
– Komut kaydedicisindeki ilk 6 biti ki bu yapılacak
işi belirtir çözülür. Buna göre b’00001001’
değeri W ya aktarılmalıdır.
– Buradaki 8 bitlik veri bir çoklayıcı (MUX)
yardımıyla ALU ya aktarılır ve buradan da W ya
gönderilerek ivedi adresleme yapılır.
– Benzer bir yaklaşım ile bir sonraki komuttaki 14
bitik verinin ilk 6 bitine göre yapılmak istenen W
kayıtçısındaki bilgiden bir sayının çıkarılması
ve sonucun W ya yazılması anlaşılır.
– Çıkarılmak istenen 8 bitlik değer MUX
tarafından seçilir ve ALU ya gönderilir. Bu
sırada W değeri de ALU ya gider. Çıkarma
işlemi gerçekleşir ve sonuç W ya yazılır. Bu
işlem sırasında STATUS kayıtçısının bayrakları
da etkileneceğinden ALU işlem sonucuna göre
bu kayıtçıyı da etkiler.

EEM 448 Mikroişlemciler II No.1-63


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• Doğrudan Adresleme Modu: Doğrudan
Adresleme Modu ile RAM deki veriyi W
kayıtçısına yüklemek, W’yı RAM kaydetmek ve
kaydedici içeriğinden W’yı çıkarma akış şeması
sayfa 83-85 de görüldüğü gibidir… Burada;
– PC nin artışıyla program belleğindeki MOVLW
PORTB,W 14 bitlik komut satırı komut
kaydedicisine yüklenir.
– Komut kaydedicisi bir RAM adresini ki burada
PORTB doğrudan adresleyerek içeriğini W ya
atacağını çözümler. 7 bit lik doğrudan adres veri
yolu üzerinden değeri kullanılacak verinin adresi
belleğe gönderilir.
– PORTB nin içeriği giriş/çıkış pinlerin belirler ki bu
veri bir çoklayıcı (MUX) yardımıyla ALU ya aktarılır
ve buradan da W ya gönderilerek doğrudan
adresleme yapılır.
– Benzer bir yaklaşım ile bir sonraki komuttaki 14
bitlik komutlar ile doğrudan adresleme ile W yı
RAM a kaydetme ve W kullanılarak çıkarma
işlemleri gerçekleştirilir.

EEM 448 Mikroişlemciler II No.1-64


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• Dolaylı Adresleme Modu: Yüksek ve orta seviyeli programlama
dillerinde kullanılan dizi (array) işlemelerinin gerçekleşmesinde
kullanılan adresleme yaklaşımıdır.
• Bu adresleme modu için kaynak kodunda ayrılan kayıtçılar kullanılır.
• Bir örnek ile inceleyelim; öncelikle dizi başlangıç adresini bellekte
belirleyelim,
dizi EQU 0x020
burada sadece başlangıç adresi belirli olup uzunluğu hakkında bir bilgi
verilmemiştir. Dikkat!!!
• Dolaylı adresleme modunda kullanılan iki önemli kayıtçı INDF ve FSR
kaydedicileri ile adresleme yapılır. Fiziksel kaydedici değillerdir sadece
bu adresleme modunda PIC de kullanılırlar…
• INDF kaydedicisinde bulunan bir komut kullanıldığında FSR
kaydedicisinin gösterdiği kaydedicinin içindeki veriye ulaşılır. FSR
RAM de 0x04 adresinde bulunur. FSR ye daima bir adres verisi
yüklenir. FSR nin gösterdiği bu adresdeki veriye dolaylı olarak ulaşmak
için de INDF kayıtçısı kullanılır.
• Dolaylı adresleme modu genellikle sıralı verilere çok daha hızlı ulaşmak
amacı ile kullanılır. Her gelen veri birbirinin ardı sıra işlenir.

EEM 448 Mikroişlemciler II No.1-65


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• Dolaylı adresleme ile 0x020 ile 0x02F RAM adresleri içerisindeki verileri
silen bir program örneği verelim

movlw 0x020
movwf FSR
dongu clrf INDF
incf FSR,f
btfss FSR,4
goto dongu

EEM 448 Mikroişlemciler II No.1-66


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları


(devam)
• Dolaylı Adresleme Modu: Dolaylı
Adresleme Modu ile FSR ve INDF
kaydedicilerine değer yüklemeyi
gösteren akış şeması sayfa 88 de
görüldüğü gibidir…
– Öncelikle komut çözülür ve FSR
kaydedicisine yazma isteği belirlenir.
W daki veri çoğullayıcı üzerinden
ALU ya oradan da RAM belleğe
gönderilir.
– 8 bitlik bu veri daha sonra doğrudan
adresleme ile INF kayıtçısına
aktarılır.
– Burada FSR sadece kullanılacak veri
adresini dolaylı yoldan
göstermektedir…

EEM 448 Mikroişlemciler II No.1-67


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• RAM Adreslerine Bank Değiştirerek Doğrudan Adresleme Modu ile
Ulaşma;

RP0:RP1 6 RAM Adresi 0

Bank Seçme Konum Seçme


00 01 10 11

00h 80h 100h 180h


RAM Veri Belleği
7Fh FFh 17Fh 1FFh

Bank0 Bank1 Bank2 Bank3

RP0:RP1 , STATUS kayıtçısının 5. ve 6. bitleri

EEM 448 Mikroişlemciler II No.1-68


Mikroişlemciler/Mikrodenetleyiciler

Mikroişlemcilerde Adresleme Modları (devam)


• RAM Adreslerine Bank Değiştirerek Dolaylı Adresleme Modu ile
Ulaşma;

IRP 7 6 FSR Kayıtçısı 0

Bank Seçme Konum Seçme


00 01 10 11

00h 80h 100h 180h


RAM Veri Belleği
7Fh FFh 17Fh 1FFh

Bank0 Bank1 Bank2 Bank3

IRP, STATUS kayıtçısının 7. biti

EEM 448 Mikroişlemciler II No.1-69


Mikroişlemciler/Mikrodenetleyiciler

3.4 Makine Dili


• Mikroişlemci temelli sistemlerde mikroişlemcinin yapısına göre komutlar
hafızada belirli bir yer tutarlar.
• Örneğin bu Motorola 68000 de 16-bit dir.
• PIC 12 ailesinde 11-bit, PIC 16 ailesinde 14-bit, ve PIC 18 ailesinde ise
16-bit, dir. PIC mikrodenetleyicisinde gerçekleştirilen tüm işlemler 8-bit
kayıtçılarla yapılacağını not edelim…
• Farklı Mikroişlemcilerde farklılık gösterseler de temelde bu bitlerden ilk
sırada gelen komut kodu yada OpKod olacaktır. Sonrasında da
adresleme modu ifadesi ve işlenen veri/adres gelecektir.
• PIC’de bu yapı

13 0

Komut Kodu (OpKod) Veri veya Adres

PIC’de kullanılan komutların Makine Kodu karşılıkları için ders kitabı 65-67 ye
bakınız…
EEM 448 Mikroişlemciler II No.1-70
Mikroişlemciler/Mikrodenetleyiciler

Makine Dili
• PIC Veri işleme ve kontrol komutlarında;
addlw sayi

13 8 7 0

Komut Kodu (OpKod) 8-bit Veri veya Adres

GOTO ve CALL Komutları

13 11 10 0

Komut Kodu (OpKod) 11-bit Veri veya Adres

EEM 448 Mikroişlemciler II No.1-71


Mikroişlemciler/Mikrodenetleyiciler

Makine Dili
• PIC Bit veya Byte Üzerine Uygulanan komutlarında;
bcf sonuc,5

13 10 9 7 6 0

Komut Kodu (OpKod) 3-bit Adresi 7-bit RAM Adresi

addwf toplam,f

13 9 8 7 6 0

Komut Kodu (OpKod) 0 -> W’ya 7-bit RAM Adresi


1 -> f’ye

EEM 448 Mikroişlemciler II No.1-72


Mikroişlemciler/Mikrodenetleyiciler

Makine Dili

EEM 448 Mikroişlemciler II No.1-73


Mikroişlemciler/Mikrodenetleyiciler

Makine Dili : Byte ve Bit üzerinden uygulanan komutlar

EEM 448 Mikroişlemciler II No.1-74


Mikroişlemciler/Mikrodenetleyiciler

Makine Dili : Veri işleme ve kontrol komutları

EEM 448 Mikroişlemciler II No.1-75


Mikroişlemciler/Mikrodenetleyiciler

Makine Dili (devam)


• Mikroişlemci Komut Seti Örnek
0000 00020 org 0 ;Reset vektörü
00021
0000 1683 00022 bsf STATUS,RP0 ;bank1'e gec
0001 3007 00023 movlw b'00000111'
0002 009F 00024 movwf ADCON1 ;PORTA ve PORTE dijital I/O seçildi
0003 3000 00025 movlw b'00000000'
0004 0088 00026 movwf TRISD ;PORTD'nin bütün pinleri cikis yapildi
0005 30FF 00027 movlw b'11111111'
0006 0085 00028 movwf TRISA ;PORTA'nýn tüm pinleri input yapildi.
0007 1283 00029 bcf STATUS,RP0 ;bank0'a geç
00030
0008 0188 00031 clrf PORTD
0009 1C05 00032 test btfss PORTA,0 ;RA0=1'mi?(0' ise alt satira geç,)
000A 2809 00033 goto test ;Test sonucu Hayir.Tekrar test et
000B 30FF 00034 movlw B'11111111' ;Test sonucu Evet ise bu satirdan devam et.
000C 0088 00035 movwf PORTD ;LED'leri yak.
00036
00037 end HEX Dosyası…
:020000040000FA
:10000000831607309F0000308800FF308500831280
:0A0010008801051C0928FF30880054
:02400E00713D02
:00000001FF

EEM 448 Mikroişlemciler II No.1-76


Mikroişlemciler/Mikrodenetleyiciler
Makine Dili (devam)
• 29. Satır
0007 1283 00029 bcf STATUS,RP0 ;bank0'a geç
komutun HEX karşılığı binary olarak (14 bit uzunluğunda)
1283h = 01 0010 1000 0110
bit üzerinden uygulanan komutlar tablosundan
BCF f,b Î 01 00bb bfff ffff
karşılık gelmektedir. Burada bbb = 101 ile 3. bit kayıtçı olarak da 000 0110
STATUS kayıtçısı kullanılmaktadır.
• 27. Satır
0005 30FF 00027 movlw b'11111111'
komutun HEX karşılığı binary olarak (14 bit uzunluğunda)
30FFh = 11 0000 1111 1111
veri işleme ve kontrol komutlar tablosundan
MOVLW k Î 11 00xx kkkk kkkk
karşılık gelmektedir. Burada xx herhangi ve kkkk kkkk = 1111 1111 değeridir.
• 33. Satır
000A 2809 00033 goto test
komutun HEX karşılığı binary olarak (14 bit uzunluğunda)
2809h = 10 1000 0000 1100
veri işleme ve kontrol komutlar tablosundan
GOTO k Î 10 1kkk kkkk kkkk
karşılık gelmektedir. Burada dallanılacak adres kkk kkkk kkkk = 000 0000 1100
yani 32. satırda belirtilen 0009 bellek adresindeki komuttur.

EEM 448 Mikroişlemciler II No.1-77


Mikroişlemciler/Mikrodenetleyiciler

Bugün

4. Mikroişlemci Temelli Sistemlerde Bellek ve Çevre Birimleri ile Haberleşme


• Bellek Birimi
• Bellek Çeşitleri
• Bellek Organizasyonu
• Bellek Okuma/Yazma Diyagramları

EEM 448 Mikroişlemciler II No.1-78


Mikroişlemciler/Mikrodenetleyiciler

4.1 Bellek Birimi


• Mikroişlemci temelli sistemlerde en önemli birimlerden biri olan bellek,
merkezi işlem biriminin yapacağı işi belirleyen programın saklandığı ve
verilerin alınıp kullanıldığı veya değerlerinin değiştirildiği birimdir…
• Bellek ile merkezi işlem birimi haberleşmesinde Adres, Veri, Fonksiyon
kodu ve Kontrol hatları kullanılır…
• Burada kullanılan haberleşme asenkron veri haberleşmesidir. Senkron
haberleşmede veri saat darbeleri ile sırasıyla belirli bir düzende
gerçekleşir. Asenkron haberleşmede ise bir işlemin bitmesi beklenir.

Kontrol Adres Hattı Bellek


Birimi

Arithmatik
Lojik Veri Hattı
Birimi
Program Veri
Deposu Deposu
Kontrol Hattı
Kayıtçılar

EEM 448 Mikroişlemciler II No.1-79


Mikroişlemciler/Mikrodenetleyiciler

4.2. Bellek Çeşitleri


• Mikroişlemci temelli sitemlerde tasarımcı belleği büyüklüğü ve
performansına göre seçer…
• Kullanım yerlerine göre bellekler;
i) Ana Bellek; Bir mikroişlemci / merkezi işlem biriminin doğrudan
adres ve veri yolu aracılığı ile erişebileceği bellektir. Bu bellek
referans komutunun yürütümü sırasında üzerindeki okuma ve
yazma işlemi yapılan bellek alanıdır. Yürütülen programın komut
kodlarını saklar…
ii) Yedek Bellek; Saklama birimleri olarak da adlandırılır.
Mikroişlemcinin doğrudan değil de bir arayüz ile ulaşıp veri
okuyup yazdığı (manyetik disk yada bant gibi) elemanlardır.
Burada saklı olan programlar veya veriler önce ana belleğe
oradan da mikroişlemciye aktarılır.
• PIC mikrodenetleyicisinde ana bellek PIC içerisinde yerleştirilmiştir.
Gerekli görüldüğünde PIC ile tasarlanan sisteme yedek bellek
eklenebilir. EEPROM gibi… Bakınız ders kitabı ilerleyen konular…

EEM 448 Mikroişlemciler II No.1-80


Mikroişlemciler/Mikrodenetleyiciler

Bellek Çeşitleri(devam)
• Yapılarına göre bellekler; Yarı-iletken Bellek (Semiconductor memory)
i) Rasgele-Erişilebilir Bellek, (RAM, Random-access memory); Bellek
cipinde herhangi bir noktaya aynı zamanda erişilir. Hem okuma hem
de yazma işlemi yapıldığı için ana bellek için de kullanılır.
• Dinamik rasgele-erişilebilir bellek, Dynamic RAM (DRAM): DRAM
cipinin içeriğini düzenlemek için periyodik olarak tazelemek gerekir.
• Statik rasgele-erişilebilir bellek, Static RAM (SRAM): Periyodik
tazeleme gerekli değildir.
ii) Sadece-Okunur Bellek, (ROM, Read-only memory); İşlemci
tarafından sadece okunabilir fakat yazılamaz. Genellikle üretim
sırasında yada özel yazmaçlar ile program yazılan ve sistemde
sadece bilgi okunan bellek olup bilgi saklamak için kullanılır.
• Maske-programlanan sadece-okunur bellek, Mask-programmed
ROM (MROM): Üretildiğinde programlanır.
• Programlanabilen sadece-okunur bellek, Programmable ROM
(PROM): Bellek cipi kullanıcı tarafından programlanabilir.
• Silinir Programlanabilen ROM, Erasable PROM (EPROM)
• Elektriksel Silinir Programlanabilen ROM, Electrically EPROM
(EEPROM)
• FLASH Bellek, birçok defalar yazılıp silinebilen bellek…
iii) Sıralı Erişimli Bellek, (?AM, ??-access memory); İşlemci tarafından
belleğin herhangi bir yerine sıra ile erişilebilir, okunur yazılır.
EEM 448 Mikroişlemciler II No.1-81
Mikroişlemciler/Mikrodenetleyiciler

Bellek Çeşitleri(devam)
• Tasarımcı açısından belleğe erişim süresi ve maliyeti önemlidir!!!
• Erişim Süresi; bellek okuma/yazma sinyalinin etkin duruma gelmesi
ile bellek çıkış hattında verinin kullanılabilir olması arasında geçen
süredir. Mikroişlemci temelli sistemlerde bu sürenin belirlenen en
yüksek değerden daha düşük tasarlanması gerekir. Bazı bellekler
mikroişlemciye göre yavaş kalır ki bu durumda bellek beklenir.
• Maliyet ise, mikroişlemci temelli sistemlerde yapılacak işe göre
belirlenen diğer önemli faktördür.
• Teknoloji ve veri saklama sürelerine göre bellekler;
i) Statik Bellek; Veriler yasıldığı yer üzerinde başka bir veri
yazılıncaya kadar eğer bellek kalıcı değil ise besleme kapatılıncaya
kadar silinmeden kalır. Bu belleklerde çapraz bağlanmış
transistörler ile oluşturulan flip-flop devreleri bulunur.
ii) Dinamik Bellek; Kullanılan alan etkili transistörler sayesinde
kapasite elemanının belirli bir süre içerisinde yazılan verileri
kaybederler. Dolayısı ile verilerin tekrar tazelenmesi gerekir. Ancak
kullanılan eleman sayısını azlığı sayesinde ucuzdur ve tercih edilir..

EEM 448 Mikroişlemciler II No.1-82


Mikroişlemciler/Mikrodenetleyiciler

4.3. Bellek Organizasyonu


• Genelde bellek devre düzenlemesinin seçimi ve tararımı, donanım tasarımı
aşamalarında sonda yer alır. Bunu nedeni mikroişlemci temelli sitemlerde
RAM ve ROM/PROM/EPROM belleği büyüklüklerinin belirlenmesi yazılım
tasarımı ve bunun için gerekli bellek alanı ihtiyacına göredir…
• Bu aşamada RAM ve ROM a ayrılan adres blokları önemlidir.
• Seçilen belleğin büyüklüğü kaç bellek entegresi kullanılarak sağlanır
sorusunu adres kod çözme yaklaşımları ile sonuçlandırılır.
• Bellek elemanları tek parça olabilecekleri gibi bir yığın halinde de olabilirler.
• Haritalandırma önce kağıt üzerinde yapılır sonra asıl devre kurulur.
• Bu durumda, ekonomik, güvenilir, test edilebilir, az alan kaplayan, hızlı, az
güç harcayan, çok kullanımlı gibi komular dikkate alınarak adres kod çözme
yaklaşımları belirlenir.
• Örnek; Motorola 68K da kullanılabilir bellek 23 adres hattından dolayı 2^23
ile 16 Mbyte dır. Dolayısıyla bellek yapısı 00 0000h – FF FFFEh adresleri ile
belirlenir. Burada 00 000h adresi belleğin tabanı FF FFFEh adresi belleğin
tavanı olarak adlandırılır. Bu adres alanını bloklar halinde bellek haritasını
oluşturursak;
00 0000h – 00 FFFEh Æ Blok 1
10 0000h – 10 0FFEh Æ Blok 2
F0 0000h – FF FFFEh Æ Blok 3
Not: Her blok farklı bellek alanını haritalandırdı ve farklı büyüklükte…
EEM 448 Mikroişlemciler II No.1-83
Mikroişlemciler/Mikrodenetleyiciler

Bellek Adresleme (Memory Addressing)

- Bellek adreslenebilen yerlerden oluşur


- Bellek pozisyonunu 2 parçadan oluşur: adres ve içerik (content)

adres içerik

- CPU ve bellek arasındaki veri transferi (data transfer)


adres hattı (address bus) ve veri hattı (data bus) ile yapılır.

adres hattı

CPU bellek

veri hattı

bellek seçme oku/yaz


CPU - bellek veri transferi dış görünüm
EEM 448 Mikroişlemciler II No.1-84
Mikroişlemciler/Mikrodenetleyiciler

Bellek Organizasyonu(devam) 00 0000h Blok 1


•Örnek bellek haritası... 00 FFFEh
00 0000h – 00 FFFEh Æ Blok 1 ( 64 K x 8)
Boş
10 0000h – 10 0FFEh Æ Blok 2 ( 4 K x 8)
F0 0000h – FF FFFEh Æ Blok 3 (1024 K x 8) 10 0000h
Blok 2
olacak şekilde üç farklı bellek kullanılabilir. Bununla 10 0FFEh
birlikte her bir blok için aynı uzunlukta birkaç Boş
bellekten de yararlanılabilir. Bu durumda adres kod
çözme yaklaşımları farklı olacaktır… F0 0000h
•Burada her bir bellek yongasının seçme fonksiyonu Blok 3
FF FFFEh
adres hattına bağlıdır. Yani, örneğimizdeki bellek
yerleşimi dikkate alındığında
seç1 = F1(A17,…,A23)
seç2 = F2(A13,…,A23) veri hattı
seç3 = F3(A21,…,A23) Blok 2 Blok 3
Blok 1
10 0000h F0 0000h
00 0000h
10 0FFEh FF FFFEh
00 FFFEh

adres hattı
oku/yaz
seç1 seç2 seç3

EEM 448 Mikroişlemciler II No.1-85


Mikroişlemciler/Mikrodenetleyiciler
Bellek Organizasyonu(devam)
• Tek bir bellek entegresi var ise sorun olmadan adres kod çözme doğrudan
yapılır. Ancak birçok mikroişlemci tabanlı sistemde birden fazla bellek
yongası kullanılır. Her bir bellek yongasını aktif hale getirecek kontrol
sinyalleri üretilir. Bu işlemler adres kod çözme ile gerçeklenir.
• Adres kod çözme; Sistem tasarımcısının kullandığı bellek elemanlarını alıp
kullanılan mikroişlemcinin adres alanına haritalandırması işlemleridir.
i) Tam adres kod çözme; Bu yaklaşımda sistem adres veri hattında her
bir bellek parçası tek ve kendine ayrılmış adresleme pozisyonuna
sahiptir.
ii) Parçalı adres kod çözme; Tam adres kod çözmede birçok eleman
kullanılır. Bunu için adres hattını tümü tam adres kod çözmede olduğu
gibi kullanılmadan daha basit bir yapı ile kod çözme yapılır. Daha az
eleman nedeniyle daha ucuzdur…
iii) Blok adres kod çözme; Tam adres kod çözme ve parçalı adres kod
çözme arasında olan bu yaklaşımda belleğin kullanılan alanı bloklar
halinde parçalanır ve kod çözme yapılır. Gerekirse bu bloklar kendi
içlerinde de parçalanır. Bu blokların her birine tam adres kod çözme
yaklaşımı uygulanır.

EEM 448 Mikroişlemciler II No.1-86


Mikroişlemciler/Mikrodenetleyiciler

Bellek Organizasyonu(devam) 00 0000h Blok 1


•Örnek bellek haritası... 00 FFFEh
00 0000h – 00 FFFEh Æ Blok 1 ( 64 K x 8)
Boş
10 0000h – 10 0FFEh Æ Blok 2 ( 4 K x 8)
F0 0000h – FF FFFEh Æ Blok 3 (1024 K x 8) 10 0000h
Blok 2
10 0FFEh
seç1 = F1(A17,…,A23) Boş
seç2 = F2(A13,…,A23)
seç3 = F3(A21,…,A23) F0 0000h
Blok 3
FF FFFEh

veri hattı
Blok 1 Blok 2 Blok 3

10 0000h F0 0000h
00 0000h
10 0FFEh FF FFFEh
00 FFFEh

adres hattı
oku/yaz
seç1 seç2 seç3

EEM 448 Mikroişlemciler II No.1-87


Mikroişlemciler/Mikrodenetleyiciler

4.4. Bellek Okuma/Yazma


• Mikroişlemci temelli sitemlerde bellekten yada giriş/çıkış biriminden
bir kelime veya bir byte okuma/yazma işlemini inceleyelim…
• Okuma/yazma işleminin tamamlandığı bir dizi işleme Okuma/Yazma
Evresi (Read/Write Cycle) denir.
• Bu işlemlerde iki kısım vardır;
• Okuyan-Okunan
• Yazan-Yazılan
ve burada işlemi yapan yani okuma/yazma işlemini gerçekleştirip
sistem hattını kontrol eden (Okuyan/Yazan) Hat Üstadı (Bus Master)
ve bellek birimi (Okunan/Yazılan) de Köle (Slave) olarak isimlendirilir.
• Okuma/Yazma Evresini zamanlama diyagramları ve bunları ifade
eden akış diyagramları (algoritma) ile beliririz.

EEM 448 Mikroişlemciler II No.1-88


Mikroişlemciler/Mikrodenetleyiciler

Bellek Okuma/Yazma(devam)
• Okuma İşlemi;
1. Saat işaretinin değişimiyle (1 den 0 a gelmesiyle), adres bilgisi adres yoluna
koyulur.
2. Adres yolu üzerinde adres bilgisinin oluşmasının ardından bellek seçici ile ilgili
bellek entegresi seçilir.
3. Belleğin seçilmesinin ardından oku emrinin gönderilmesi ile, adreslenerek
seçilen bellek hücresinin içeriği veri yoluna koyulur. Veri yoluna aktarılan
veriler, ilk olarak belirlenen adreslerin adres yolu üzerinde kaldığı, bellek
seçicinin atkin olduğu ve OKU/YAZ girişi 1 olduğu sürece veri yolu üzerinde
görülmeye devam eder…
SAAT

ADRES

SEÇİCİ

OKU/YAZ

VERİ

EEM 448 Mikroişlemciler II No.1-89


Mikroişlemciler/Mikrodenetleyiciler

Bellek Okuma/Yazma(devam)
• Yazma İşlemi;
1. Saat işaretinin değişimiyle (1 den 0 a gelmesiyle), adres bilgisi adres yoluna
koyulur.
2. Yazılacak veri veri yolu üzerine koyulur.
3. OKU/YAZ girişi yaz konumuna 0 a getirilir.
4. Bellek seçici 0 konumuna getirilerek belleğin seçilmesi sağlanır. Bunun
sonucunda, adres yolunda belirtilen bellek hücresine ulaşılacaktır. Ardından
veri yolundaki veriler seçilen bellek hücresine yazılır…

SAAT

ADRES

VERİ

SEÇİCİ

OKU/YAZ

EEM 448 Mikroişlemciler II No.1-90


Mikroişlemciler/Mikrodenetleyiciler

Bugün
5. Mikroişlemci Kesme, Altprogram ve Yığın
• Yığın
• Altprogram
• Kesme

• Yüksek seviyeli programlama dillerinde program yazarken sıklıkla


kullanılan, tekrarlanan programlar ve bir süreçin durdurulması için devam
eden programda araya giren kesme konuları mikroişlemci temelli
sistemlerde önemli yer tutar…
• Bu bölümde altprogramların nasıl yazıldığı, ana program ile altprogramlar
arasında değişkenlerin nasıl taşındığı incelenecek ve yapılması gereken
dallanmalarda yığın kullanımı üzerinde durulacaktır.
• Bununla birlikte, donanım ile yazılıma yön vermede kullanılan kesme
hizmet programlarına dallanma konusu üzerinde durulacaktır.
• PIC mikrodenetleyicisi üzerinde örnekler incelenecektir…

EEM 448 Mikroişlemciler II No.1-91


Mikroişlemciler/Mikrodenetleyiciler

5.1 Yığın
Merkezi işlem birimini incelerken Yığın incelendi. Yığın gelnellikle bellek
içerisinde kullanılmaktadır ve yığın göstergesi ile ifade edilmektedir…

• Yığın Göstericisi (SP, Stack Pointer);


– RAM belleğin bir bölümü programcı tarafından veya herhangi bir komutun
işlenmesi sırasında geçici olarak kullanılır. Belleğin bu bölümüne yığın denir.
– Yığın göstericisi yığın adresini tutan kaydedicidir ve bununla yığının istenilen
noktasına erişilebilir.
– Yığına atılan verilerde son giren ilk çıkar (LIFO, Last In First Out) mantığı yani
son olarak yığına giren veriyi önce çıkartarak kullanılır.

Yığın Göstericisi Veriler

3FFB
3FFB
3FFC 03
3FFD 50 YIĞIN
3FFE B7

Yığın Başlangıç Adresi

EEM 448 Mikroişlemciler II No.1-92


Mikroişlemciler/Mikrodenetleyiciler

Yığın(devam)
• Programda komutlar peş peşe sıralanır ve bunlar sırasıyla bellekten
büyüyen adres yönünde alınarak işlenir.
• Yığında ise büyük adresten küçüğe doğru bir komut işleme akış yönü
söz konusudur. Böylece düşük adresten başlayan programın sonu ile
yüksek adresten başlayarak aşağı doğru sarkan yığın adresleri
kesişmez…

Yığının 2 tür kullanımı üzerinde durulur:


Bellek
1. Verilerin yığına atılması ve tekrar alınarak
işlenmesi… 0000h

Program
2. Merkezi işlem birimi tarafından kullanıcının
denetimi dışında olan kullanım biçimi olup
altprogram ve kesme hizmetleri sırasında bu
bölümde inceleyeceğimiz kullanımıdır. Bu Yığın Göstergesi
kullanımda çalışan ana programın kaldığı yerin Yığın
belirlenmesi, kullanılan verilerin saklanması
amacı ile yığın kullanılır.
FFFFh

EEM 448 Mikroişlemciler II No.1-93


Mikroişlemciler/Mikrodenetleyiciler

5.2. Altprogram
• Program içinde tekrarlanma eyilimi gösteren program parçalarını
tekrar tekrar yazmak yerine bu program parçalarını bir kez yazarak
altprogram haline getirebiliri
• PIC mikrodenetleyicisinde PORTB ye bağlı LED lerin yakılmasında
kullanılan gecikme altprogramı ile birçok defa kullandığımız gecikme,
örn 1 sn, işlemini gerçekleştiririz. Bu örnekte gecikme bir
ALTPROGRAM, hangi LED in yakılması sırasının geldiğinin
belirlenmesi ise ANA program olarak işlem yapmaktadır.
• PIC de ana programdan altprogram bir etiket ismi, örn. gecikme, ile
çağrılır ve altprograma geçilir. Altprogramın bitirilip tekrar ana
programa dönülmesi return komutu ile olur.
• Altprogram bellekte herhangi bir adresten başlayabilir.
• Birden fazla altprogram kullanılabilir. Bunlar ana program içerisinde
sırasıyla çağrılabilineceği gibi altprogram bir başka altprogramı da
çağırarak işleyebilir.
• Ana programdan Altprograma dallanıldığında tekrar ana programa
geri dönüşte başlanacak adres bilgisi yığında saklanır.
Altprogramdan çık return komutu geldiğinde yığının tepesinde
bulunan bu adres alınır ve ana program dönülür.

EEM 448 Mikroişlemciler II No.1-94


Mikroişlemciler/Mikrodenetleyiciler

Altprogram(devam)
• Birden fazla altprogramın iç içe kullanılmasında da dönülecek adres
yığın da tutulur. Bu tutulacak adres sayısı mikroişlemcilerde sınırlıdır.
PIC de 8 seviyeli yığın olduğundan maksimum 8 adres kayıtlanır…
Bkz. ders kitabı sayfa 77…
• Bu işlemlerin gerçekleşmesi merkezi işlem birimi tarafında olacaktır.
Kullanıcı sadece işlemlerin belirli aşamalarda gerçekleneceğini bilir.
• Altprogram kullanımında bir başka konu da altprogramda kullanılan
verilerin ana programa taşınması konusu olarak karşımıza çıkar. Bu
konuda da verilerin belirli adreslere yazılması ve bu adreslerden ana
programda okunması yaklaşımı kullanılabilir. PIC de özellikle ana
programda çalışma W kayıtçısının içeriğinin saklanması önemlidir.
Altprogramda geri dönüldüğünde W kayıtçısının içeriği çoğunlukla
değişmiş olacaktır!!!
• Altprogram ile ana program arasında verilerin taşınması amacı ile
kayıtçılar da kullanılabilir…
• Altprogram kullanımında dikkat edilmesi gerekli önemli nokta
altprogramdan çıkış komutunun koyulmasıdır!!! Bu yoksa yığından
dönüş adresi çekilmeyecektir…

EEM 448 Mikroişlemciler II No.1-95


Mikroişlemciler/Mikrodenetleyiciler

5.3. Kesme
• Mikroişlemci temelli sistemlerde kesme, sistemin yaptığı işlemi bir süre
bırakıp, bir başka işi koşturmak ve bu iş bitince de eski işine geri kaldığı
yerden devam etmek olarak tanımlanabilir…
• Klasik örnek videoda film seyrederken telefonun çalması…
• Kesme işlemi donanımsal olarak yapıldığı gibi yazılım ile de
gerçekleştirilir.
• Kesme olduğu anlaşıldığında ana programdan çıkılarak kesme
altprogramına dallanılır. Dolayısıyla yığın kullanılır.
• PIC mikrodenetleyicisinde karşımıza çıkan kesme kaynakları:
i) RB0/INT ucuna gelen “1” veya “0” verisi ile harici kesme
ii) PORTB (4., 5., 6., 7. bitleri) lojik seviye değişimi ile gelen kesme
iii) TMR0,1,2 zamanlayıcı taşması kesmesi
iv) Veri (EEPROM) belleğine yazma işleminin tamamlanması kesmesi
v) USART TX ve RX haberleşme kesmeleri
vi) Karşılaştırıcı, CCP kesmeleri
• Detaylı bilgi için ders kitabı sayfa 104-124

EEM 448 Mikroişlemciler II No.1-96


Mikroişlemciler/Mikrodenetleyiciler

Kesme(devam)
• PIC mikrodenetleyicisinde kesme:
i) Kesme vektör adresi, 004h yi belirle
ii) INTCON kayıtçısının uygun kesme bayrağını değiştir
iii) Kesme altprogramını çalıştır…
iv) Birden fazla kesme için kesme altprogramların çağır
(örnek: sayfa 123-124)
v) Altprogramdan retfie komutu ile çık
vi) ve ana programa dön
• Detaylı bilgi için ders kitabı sayfa 104-124

EEM 448 Mikroişlemciler II No.1-97

You might also like