GİRİŞ
Sevgili Öğrenci,
Teknolojinin hızla ilerlediği bu zamanda, günümüz modern toplumları bilgisayar
teknolojisini hayatın her alanında uygulamaya geçirmiş ve azami fayda sağlamaya
çalışmaktadır. Özellikle endüstriyel otomasyonda bilgisayarlar önemli bir yer
kaplamaktadır.
İşte endüstrideki bu otomasyon işlemlerinin önemli bir bölümü mikrodenetleyiciler
ile yapılmaktadır. Mikrodenetleyiciler ile kontrol edilmeyen cihaz yok denecek kadar azdır.
Öyle ki bilgisayar teknolojisi mikrodenetleyiciler ile birlikte çamaşır makinemizin içine
kadar girmiştir. Bu noktada güncelliğini koruyan mikrodenetleyiciler ile endüstride çok
basit ama etkili devreler üretmek bizim için önemli hedeflerden biridir.
Modül sonunda edineceğiniz bilgi ve beceriler ile mikrodenetleyicileri tanıyacak
onları programlamayı, programlarken kullanılacak editörleri ve yazılım tabanlı simülatörleri
öğreneceksiniz. Gene aynı şekilde mikrodenetleyiciyi çalışır hale getirmek için gerekli
donanımları ve bu küçük devreler içine hazırlanan yazılımların yüklenmesi için gerekli olan
bilgiye ulaşacaksınız. Bunun yanı sıra mikrodenetleyiciler ile basit sayısal devreler
hazırlayıp temellerini öğreneceksiniz.
ÖĞRENME FAALİYETİ–1
AMAÇ
Mikrodenetleyicileri tanıyacak ve ihtiyaca uygun olarak mikrodenetleyici seçimini
yapabileceksiniz.
ARAŞTIRMA
Bu faaliyet öncesinde yapmanız gereken öncelikli araştırmalar şunlardır:
Günümüzde yaygın olarak kullanılan mikrodenetleyici çeşitlerini araştırınız.
Mikrodenetleyicilerin tarihsel gelişim sürecini araştırınız ve elde ettiğiniz
bilgileri sınıf içerisinde arkadaşlarınızla tartışınız.
RISC (Reduced Instruction Set Computer) işlemcileri ile CISC (Complex
Instruction Set Computer) işlemcileri arasındaki avantaj ve dezavantajları
araştırarak sınıf içerisinde tartışınız.
Mikrodenetleyicilerin fiziksel yapısını inceleyiniz ve mikrodenetleyici
kullanılarak yapılan devrelerin diğer devrelere göre fiziksel yapısını
karşılaştırınız
Araştırma işlemleri için bilgisayar laboratuvarında veya ev ortamında bulunan hazır
bir bilgisayarı ve internet ortamını kullanınız.
1. MİKRODENETLEYİCİ VE DONANIM
SEÇİMİ YAPMAK
1.1. Mikrodenetleyici
1.1.1. Mikroişlemci Nedir
Mikroişlemci, temelde bilgisayarın tüm işlemleri yapmasını sağlayan, halk tabiri ile
bilgisayarın beyni olarak nitelendirilebilecek hesaplama, karar verme ve yönetim
mekanizmasıdır.
Bir mikro işlemcinin üzerinde mantık kapılarının bileşiminden oluşan ve çeşitli
işlevleri yürütmeye yarayan birimler bulunur. Bu birimler arasında aritmetik-mantık birimi,
kontrol birimi, girdi-çıktı ve küçük bir miktar bellek vardır. Bu temel birimlerin dışında
mikro işlemcinin kullanım alanına bağlı olarak farklı görevlerde özelleşmiş birimler de
bulunabilir. Ancak bir mikro işlemcinin ana işlevlerini yerine getirebilmesi için temel
birimler yeterlidir.
Bir mikroişlemci çoğunlukla kendisine bağlanacak bazı entegre devrelerle birlikte
çalışmak için tasarlanır. Örneğin mikroişlemcinin çalıştıracağı programın ve kullanacağı
verinin yüklü olduğu, yazılabilir ve okunabilir, hızlı bir bellek birimi (genellikle RAM) ve
sisteme güç verilmezken programı saklayabilecek bir bellek birimi (genellikle bir çeşit
ROM) mikroişlemcilerin olmazsa olmaz çevre birimleridir. Bunun dışında, mikroişlemciler
genellikle elektronik devrelerde kontrol mekanizması görevinde bulundukları için kontrol
edecekleri cihazlarla da bağlantı kurmaları gerekecektir.
1.1.2. Mikrodenetleyici Nedir
Mikrokontrolörler (mikrodenetleyiciler) tek bir silikon yonga üstünde birleştirilmiş
bir mikroişlemci, veri ve program belleği, sayısal (lojik) giriş ve çıkışlar (I/O), analog
girişler ve daha fazla güç veren ve işlev katan öteki çevre birimleri (zamanlayıcılar,
sayaçlar, kesiciler, analogtan sayısala çeviriciler, vb.) barındıran mikrobilgisayarlardır.
En basit mikrokontrolör mimarisi bir mikroişlemci, bir bellek ve giriş ve çıkıştan
(I/O) oluşur. Mikroişlemci merkezi işlemci ünitesi (CPU – Central Processing Unit) ve bir
kontrol ünitesinden (CU – Control Unit) oluşur. CPU mikroişlemcinin beynini oluşturur,
aritmetik ve mantıksal işlemlerin gerçekleştirildiği yerdir. CU kontrol ünitesi
mikroişlemcinin dahili işlemlerini kontrol eder ve istenen komutları yerine getirmek için
kontrol sinyallerini diğer bölümlere gönderir.
Görüldüğü gibi mikroişlemci ile mikrodenetleyici birbirine yakın teknolojiler
olmakla birlikte en önemli farkları mikrodenetleyicilerin kendi üzerinde belleklerini
ve çevre birimlerini bulundurmasıdır. Bu sebeple çok yüksek hafıza, hız ve işlem
yeteneğinin gerekmediği durumlarda mikrodenetleyiciler tercih edilir.
1.1.3. Programlama İçin Nelere Gereksinim Vardır
Mikrodenetleyicileri programlamak için iki önemli şeye ihtiyaç vardır. Birincisi
mikrodenetleyicinin yapısına uygun bir programlayıcı devre, ikincisi de bu devreye
hazırladığınız derlenmiş programı aktaracak bir yazılım.
Programlayıcı Donanımı:
Şekil 1.1’de PIC16F84 mikrodenetleyicisi için hazırlanmış seri porttan haberleşen
basit bir devre göreceksiniz.
Şekil 1.1: Basit bir programlayıcı devre şeması
Programlayıcı Yazılımı:
Mikrodenetleyicilere hazırladığınız programı yükleyebilmek için mikrodenetleyicinin
yapısına uygun bir elektronik devre ve bu devreye göre hazırlanmış bir programa ihtiyaç
vardır. Birçok PIC mikrodenetleyicisi için hazırlanmış programlayıcı devreler için MPLAB
program paketinin içerisinde programlayıcı mevcuttur ancak yinede bunun dışında kendine
has yazılımları mevcuttur.
Şekil 1.1’deki programlayıcı devre için aşağıda linkte verilen yazılımı
kullanabilirsiniz.
http://people.freenet.de/dl4yhf/winpic/winpicpr.zip
1.1.4. Mikrodenetleyici Çeşitleri
Temelde mikroişlemci mimarisi iki çeşittir. Bunlar RISC (Reduced Instruction Set
Computer: Azaltılmış komut seti) tabanlı işlemciler ve CISC (Complex Instruction Set
Computer: Karmaşık komut seti) tabanlı işlemcilerdir. Mikrodenetleyicilerin de aynı
şekilde RISC ve CISC mimarisine göre türleri vardır. Yaygın olarak kullanılan
mikrodenetleyiciler mimari açıdan bu iki işlemci sınıfından birine aittir.
Üretici firma bakımından ise bilinen çok sayıda mikrodenetleyiciler vardır.
Bunlar;
Microchip firmasının PIC mikrodenetleyicileri (RISC),
Intel firmasının MCS51 (8051) mikrodenetleyicileri (CISC)
Atmel firmasını AVR mikrodenetleyicileri (RISC)
Motorola FreeScale mikrodenetleyicileri ve daha birçok firmanın burada
sayamayacağımız kadar çok çeşitleri olan denetleyicileridir.
http://www.cpupages.com/store/index.php internet adresinden çeşitli
mikrodenetleyiciler ile ilgili bazı temel bilgilere ulaşabilirsiniz.
1.1.5. Mikrodenetleyici Yapısı
Mikrodenetleyiciler yapıları birbirinden farklı olmakla birlikte temelde çok fazla
benzerlikler içerir. Şekil 1.2’de PIC mikrodenetleyicilerinden PIC16F84 iç yapısı
verilmiştir.
Şekil 1.2: Basit bir mikrodenetleyici blok şeması
Görüldüğü gibi mikrodenetleyicilerde hemen hemen tüm çevre birimler denetleyici
içerisinde yer almaktadır. Yapılacak işin niteliğine göre hazırlanacak cihazlarda ek devreler
kullanılabilir ancak PIC mikrodenetleyici çalışmak için ek hiçbir devreye ihtiyaç
duymayacaktır.
1.1.6. Bellek Çeşitleri
Bellekler çeşitli özelliklere göre sınıflandırılabilmektedir.
Fiziksel Yapılarına Göre Bellekler:
Elektronik bellekler (RAM, ROM, Flash vs.)
Elektromanyetik bellekler (disket, sabit disk vs.)
Mekanik bellekler (delikli kart vs.)
Optik bellekler (CD-ROM, DVD-ROM vs.)
Veri Saklama Şekline Göre Elektronik Bellekler.
RAM (Random Access Memory) : Geçici belleklerdir. Devrenin enerjisi
kesilirse içindeki bilgiler kaybolur. Veriler istenildiği gibi değiştirilebilir
ve silinebilir.
ROM (Read Only Memory) : Kalıcı belleklerdir. Enerji kesildiğinde
bilgileri saklamaya devam eder. İçindeki veriler hiçbir suretle silinemez
ve değiştirilemez.
EEPROM (Electricaly Erasable Programmable ROM) : Kalıcı
belleklerdir. Enerji kesintisinde bilgileri saklamaya devam ederler.
Ancak istenildiği zaman belli yöntemler ve devreler sayesinde içindeki
bilgiler silinip değiştirilebilmektedir.
Flash bellek: Bu tür bellekler tıpkı EEPROM bellekler gibidir ancak çok
daha hızlı ve yüksek kapasiteli olabilmektedir. Günümüzde
memorystick ve pendrive gibi çeşitli isimlerle anılan taşınabilir bellek
olarak karşımıza çokça çıkmaktadırlar.
Veri saklama Şekline Göre Optik Bellekler:
CD-ROM (Compact Disk Read Only Memory): Bilgi kaydedilemeyen,
sadece okunabilen CD (Compact Disk) çeşididir. İçindeki bilgiler
değiştirilemez ve silinemez.
CD-R (Compact Disk Recordable): İçeriğine bilgi yazılabilen ancak
yazılan bilgiler silinemeyen ve değiştirilemeyen CD çeşididir.
CD-RW (Compact Disk Rewritable): Tekrar tekrar bilgi yazılabilen CD
türüdür. İçindeki bilgiler çeşitli yöntemlerle silinebilmektedir. Tekrar
yazılabilmesi için diskin tamamen silinmesi gerekir.
DVD-ROM (Digital Versatil Disk ROM): CD-ROM yerine
kullanılabilecek çok daha yüksek kapasiteli optik medya formatıdır.
DVD±R (DVD-Recordable): CD-R yerine kullanılabilecek yüksek
kapasiteli optik medya formatı.
DVD±RW (DVD-Rewritable): CD-RW yerine kullanılabilecek yüksek
kapasiteli optik medya formatı.
DVD+RAM (DVD Random Access Memory): DVD±RW gibidir ancak,
içindeki bilgileri değiştirmek için diskin tamamının silinmesi gerekmez.
Bilgiler istenildiği gibi silinir ve değiştirilir.
Elektromanyetik Belekler
Bu tür bellekler bilgileri çeşitli tekniklerle manyetik ortamda saklar ve içerisindeki
bilgiler istenildiği gibi değiştirilebilmekte ve silinebilmektedir. Enerji kesintisinde bilgileri
saklamaya devam eder yani kalıcı bir bellek türüdür.
Mekanik Bellekler
(Artık günümüzde kullanılmamaktadır).Mikrodenetleyiciler içerisinde RAM bellek
ve ROM bellek yerinede daha geliştirilmiş bir bellek türü olan EEPROM ya da flash bellek
bulunmaktadır. Mikrodenetleyici içyapısına bakıldığında üç önemli hafıza göze çarpar.
Program Memory (Program kodlarının bulunduğu bellek) EEPROM bellek türündedir. Data
memory ise iki kısımdır. Geçici verilerin tutulduğu RAM ve sürekli verilerin ve sabit
değerlerin tutulduğu EEPROM bellek.
Mikrodenetleyiciler içerisinde bu üç bellek dışında mikrodenetleyici çekirdeğinde yer
alan Registers (yazmaçlar) vardır. Bunlar denetleyici türüne göre farklı olmakla birlikte PIC
denetleyicilerinde RAM bellek içinde yer alırlar.
1.2. Mikrodenetleyicide Yazım Dili
1.2.1. Sayıların Tipi
Mikrodenetleyicilerde program geliştirirken üç tür veri tipi kullanılır.
Binary (ikili): 0 ve 1 değeri dışında değer alamaz. En küçük veri tipidir.
Hexadecimal (on altılı): 0-9 arası rakamlar ve A-F arası harflerden oluşan toplam 16
farklı değer alabilmektedir. PIC microdenetleyicisinde her bir bellek adresi 8 bit
uzunluğunda 2 haneli onaltılı sayıları saklayabilmektedir.
Decimal (onlu): 0-9 arası rakamlardan oluşan 10 farklı değer alabilen veri türüdür.
1.2.2. Binary Digit(Hane) Nedir
İkili sayı sisteminde ifade edilen sayının her bir basamağı bir binary digit olarak
değerlendirilir. Binary digitler 0 ya da 1 değeri dışında değer alamazlar. Binary digitlere
kısaca bit denilir. Örneğin PIC mikrodenetleyici için hazırlanmış bir programda şu tür bit
komutlarına rastlamak mümkündür.
BCF 0x03, 5 ; 03 Hex adresindeki verinin 5. bitini 0 yap;
1.2.3. Hexadecimal Digit(Hane) Nedir?
On altılı sayı sisteminde ifade edilen verilerin her bir basamağı hexadecimal digit
olarak adlandırılır. PIC microdenetleyicisinde on altılı bir sayının kullanımı şu şekilde
olabilir.
MOVLW 0xA0 ; Akümülatöre (W Yazmacı) A0 onaltılı sayısını yükle.
1.2.4. Binary, Decimal ve Hexadecimal Sayıların Dönüşümü
1. Binary – Decimal dönüşümü: İkili sayı sisteminden onlu sayı sistemine dönüşüm
için her bit, bit değerliği ile çarpılarak bu çarpımlar toplanmaktadır. Bu durum Şekil 1.3’te
izah edilmiştir. Aynı şekilde onlu sayı sisteminden ikili sayı sistemine geçiş için ise sayı
sürekli ikiye bölünerek kalanlar yan yana yazılır. Bu Şekil 1.4’te izah edilmiştir.
2. Binary – Hexadecimal dönüşümü: İkili sayı sisteminden on altılı sayı sistemine
geçişte her dört bitin hex değeri hesaplanarak yan yana yazılır. Aynı şekilde on altılı sayı
sisteminden ikili sayı sistemine geçişte her basamağın Binary değeri hesaplanarak yan yana
yazılır. Bu durum Şekil 1.5 ve 1.6’da izah edilmiştir.
Şekil 1.5: Binary’den hexadecimal’e geçiş Şekil 1.6: Hexadecimal’den binary’e geçiş
3. Decimal – Hexadecimal dönüşümü: Onlu sayı sisteminden on altılı sayı
sistemine geçişte sayı sürekli on altıya bölünerek kalanlar yan yana yazılır. Aynı şekilde on
altılı sayıdan onlu sayıya geçiş için her bir basamak kendi değerliği ile çarpılarak çarpımlar
toplanır. Böylece dönüşüm gerçekleşir. Bu Şekil 1.7 ve 1.8’de izah edilmiştir.
1.2.5. Komutların Yazılış Biçimi?
Her mikrodenetleyici için kendine has derleyiciler bulunmaktadır. ve Derleyicilerin
kendine has özellik ve yazım kuralları vardır. PIC mikro denetleyici için en yaygın derleyici
olan MPASM derleyicisi aşağıdaki yazım kurallarını getirmiştir.
Satır başına ; (noktalı virgül) konulduğunda o satır yorum satırı olarak
değerlendirilir ve programa herhangi bir etkisi yoktur.
Genellikle derleyiciler program komutlarının belli bir düzen içerisinde TAB
denilen sütunlar halinde yazılım koşulunu getirse de MPASM derleyicisi bu
şartı aramamaktadır.
MPASM derleyicisi için sabit verilerin atandığı bazı sembolik isimlere etiket
denir. Etiketlerde şu kurallara uyulmalıdır.
Etiketler 1. kolondan itibaren yazılır.
Etiketler bir harf ya da _ (altçizgi) ile başlamalıdır.
Etiketlerde Türkçe karakter kullanılamaz.
Bir komut ismi olmamalıdır.
En fazla 31 karakter uzunluğunda olabilir.
Büyük/küçük harf duyarlılığı vardır.
Atama deyimi (EQU): Bu deyim bazı adresleri bazı etiketlere atmak için
kullanılır.
PORTB EQU 0x06 ; Bu komutla 06hex adresi PORTB
etiketine atanmıştır.
Sabitler: Bazı komutlarda doğrudan rakamlar kullanılabilmektedir. Burada
kullanılan rakamlar birer sabittir.
MOVLW 0x07 ; Bu komutla W yazmacına 7 hex sabit değeri
aktarılır.
ORG deyimi: İki amaç için kullanılabilir. Birincisi program başlangıç adresini
belirtmek için ikincisi ise interrupt alt programı başlangıç adresini belirtmek
içindir.
Sonlandırma deyimi: END komutu programı bitirmek içindir. PIC
mikrodenetleyicilerinde halt komutu yoktur. Bunun yerine sonsuz döngüler
kullanılır.
Bu kurallar haricinde PIC mikrodenetleyicilerinde 4 tipte komut yazılışı vardır.
Byte yönlendirmeli komutlar.
Bit yönlendirmeli komutlar.
Sabit işleyen komutlar.
Kontrol ve akış komutları.
Byte Yönlendirmeli komutlar:
KOMUT REGISTER, DESTINATION
MOVF 0x03,0 ; Bu komut 03 adresindeki yazmaç içeriğini
akümülatöre (W yazmacı), kopyalar.
MOVF 0x03,1 ; Bu komut 03 adresindeki yazmaç içeriğini yine 03
adresine kopyalar.
Komut register (yazmaç) ile yaptığı işlem sonucunu Destination (hedef) ile
belirlenen hedefe yazar. Burada Destination (hedef) iki değer alabilir 0 ya da 1. 0 değeri W
yazmacını temsil eder. 1 değeri ise komutta belirtilen yazmacı temsil eder.
Bit yönlendirmeli komutlar:
KOMUT REGISTER, BIT
BCF STATUS, 5 ;Bu komut STATUS yazmacının 5. biti’ni 0 yapar.
Komut register (yazmaç) ile belirtilen yazmacın bit (hane) ile belirtilen basamağı
ile işlem yapar.
Sabit işleyen komutlar:
KOMUT SABIT
ADDLW b’01011010’ ;Bu komut verilen binary (ikili) sabit
sayısını W yazmacı ile toplar.
Komut verilen sabit ile işlem yapmaktadır.
Kontrol komutları:
KOMUT ETIKET
GOTO DONGU ;Bu komut programın akışını DONGU ile belirtilen
etikete yönlendirir.
Komut verilen etikete doğru program akışını yönlendirmektedir.
Sayı ve karakter yazılış biçimleri:
Hexadecimal (On altılı) Sayılar
0x03
03
03h
h’03’
Bu ifadelerin hepsi 03 on altılı sayısını temsil eder.
Binary (İkili) Sayılar
b’00010101’
İkili sayılar yalnızca yukarıdaki gibi yazılabilir.
Decimal (Onlu) Sayılar
d’122’
Onlu sayılar sadece yukarıdaki gibi yazılabilir.
ASCII Karakterler
’s’
ASCII karakterleri sadece yukarıdaki gibi yazılabilir.
PICMikrodenetleyicilerin komut seti:
Aşağıdaki tabloda PIC mikrodenetleyicilerinde kullanılan komutlar verilmiştir.
Tabloda şunlara dikkat ediniz.
ADDWF f, d
Burada ADDWF, komutun kendisidir. Verilen parametrelerden f herhangi bir file
register’ı temsil etmektedir. Yani işlemin yapılacağı yazmacı belirtmiş oluruz. d simgesi ise
işlem yapıldıktan sonra sonucun nerede saklanacağını belirler. 0 ise sonuç W yazmacında 1
ise f ile belirtilen yazmaçta saklanır. Komutun kaç saat çevriminde işlendiği ve hangi
bayrakları etkilediği zaten Tablo 1.1’de açıkça belirtilmiştir.
NOTLAR:
(1) Bir G/Ç kütüğü kendisinin bir fonksiyonu olarak değiştiğinde ( MOVF PORTB, 1), kullanılan değer, uçların
kendisinde bulunan değer olacaktır. Örneğin, eğer giriş olarak tanımlanan bir uçta tutulan değer ‘1’ ise ve
harici bir aygıttan mantık 0 olarak sürülüyor ise, veri ‘0’ olarak geri yazılacaktır.
(2) Eğer bu komut TMR0 kütüğünde kullanılırsa (ve, mümkünse, d = 1 ise), önbölücü TMR0’a adanmışsa
temizlenecektir.
(3) Eğer Program Sayacı (PC) değişmiş ise veya bir şarta bağlı test doğru ise, bu komut iki çevrimde işlenir.
İkinci çevrim bir NOP komutu olarak icra edilir.
Tablo 1.1: PIC 16F84 komut seti
1.3. Mikrodenetleyici Yapısı
1.3.1. Besleme Gerilimi
PIC mikrodenetleyicisi besleme devresi için özel bir devreye gereksinim
duymamaktadır. Besleme gerilimi 2 ila 6 V DC arasında değişmekle birlikte diğer dijital
devrelerle birlikte daha rahat kullanılabilmesi için 5V DC uygun bir değerdir (Şekil 1.9).
1.3.2. Clock Düzeni ve Osilatör Çeşitleri
PIC16F84 mikrodenetleyicisi farklı osilatör tipleri ile çalışabilmektedir. Bu osilatör
tipleri şunlardır.
•LP Low Power Crystal (Düşük Güçlü Kristal Osilatör)
•XT Crystal/Resonator (Kristal, Seramik Rezonatör)
•HS High Speed Crystal/Resonator (Yüksek Hızlı Kristal, Rezonatör)
•RC Resistor/Capacitor (Direnç, Kondansatör)