MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER"

Transkript

1 III İÇİNDEKİLER İÇİNDEKİLER... III ŞEKİLLER DİZİNİ... IX ÇİZELGELER DİZİNİ...X BİRİNCİ BÖLÜM MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER 1.1 Mikroişlemciler Mikrodenetleyici Mikrodenetleyicilerin Kullanım Sebebi Mikroişlemci ile Mikrodenetleyici Arasındaki Farklar... 8 İKİNCİ BÖLÜM PIC MİKRODENETLEYİCİSİ 2.1 Genel Tanımlama Gelişme Desteği Elektrikle Silinebilen Mikrokontrolörler... 12

2 IV 2.4 Mimari Olarak İncelenmesi Komut Akımı / Bilgi İletimi Bellek Organizasyonu Veri Bellek Organizasyonu Genel Amaçlı Kayıt Dosyası Dış Yüzeysel özellikler: Özel Mikrokontrolör Özellikleri: CMOS Teknolojisi: ÜÇÜNCÜ BÖLÜM PIC ÇEŞİTLERİ 3. 1 PIC16F84 Mikrodenetleyicisi: Genel Özellikler Pin Diyagramı Mimari Register Haritası Özel Registerlerin Açıklaması: PIC16F628 Mikrodenetleyicisi : Özellikleri : Bacak Bağlantıları Pin Özellikleri Bellek Organizasyonu Program Belleği Organizasyonu Data Belleği PIC16F877 Mikrodenetleyicisi Genel Özellikleri : PIC16F877 Portlarının Fonksiyonları... 31

3 V PORTA PORTB PORTC PORTD PORTE Program ve Kullanıcı RAM Bellek Organizasyonu STATUS yazmacı Özel fonksiyonlar Paralel Slave Port USART Master Synchronous Serial Port (MSSP) Sayısal Çevirici Modülü Capture/Compare ve PWM Modülü DÖRDÜNCÜ BÖLÜM PIC BASIC PRO 4.1 Picbasic Pro Ve Özellikleri PicBasic Pro ile Kullanılan PICmikro lar Picbasic Pro Derleyicisinin Kullanılışı Komut Satırı Seçenekleri A Seçeneği C seçeneği H veya -? Seçeneği I seçeneği L seçeneği O seçeneği P seçeneği... 45

4 VI S seçeneği V seçeneği Picbasic Pro Temel Kavramlar Tanımlayıcılar Satır Etiketi Değişkenler Alias lar (Bir Değişkene Başka Bir İsim Vermek) Dizi Değişkenler (Arrays) Sabitler Semboller Sayısal Sabitler String sabitler Pinler Açıklama satırı Bir Satıra Birden Fazla Komut Yazmak Satır Devam Ettirme Karakteri INCLUDE Komutu ile Dosya Dahil Etmek DEFINE komutu Aritmetik Operatörler Çarpma Bölme Shift (Kaydırma ABS COS DCD DIG MAX ve MİN Komutları NCD Komutu REV Komutu SIN Komutu SQR Komutu Bit Yönlendirme Operatörleri... 58

5 VII 4.5 Pıcbasıc Pro Komut Seti Port Giriş / Çikiş İşlemleri Button Komutu Goto Komutu End Komutu {LET} Komutu TOGGLE Komutu POKE Komutu PEEK Komutu INPUT Komutu OUTPUT Komutu LOW Komutu HIGH Komutu Karar Verme Ve Döngü İşlemleri FOR NEXT Komutu IF THEN Komutu PAUSE Komutu: WHILE WEND Komutu : RANDOM Komutu : GOSUB Komutu : RETURN Komutu Keyboard Ve LCD Uygulamalari Paralel LCD ler LCDOUT Komutu : Interrupt Ve Uygulamalari ON INTERRUPT Komutu : RESUME Komutu : DISABLE Komutu : ENABLE Komutu : Eeprom Belleğe Yazma Ve Okuma WRITE Komutu : READ Komutu :... 76

6 VIII EEPROM Komutu : DATA Komutu : I2CREAD Komutu : I2CWRITE Komutu : CLEAR Komutu : POT Komutu : Reverse Komutu SLEEP Komutu : STOP Komutu : SWAP Komutu : BEŞİNCİ BÖLÜM DENEYLER DENEY 1: TEMEL PORT UYGULAMALARI DENEY 2: PIC İLE SAYAÇ VE DÖNGÜ KONTROLLERİ DENEY 3: KESME VE ÇEVRİM TABLOSU KULLANIMI DENEY 4: 8255 KULLANIMI DENEY 5: LCD MODÜLÜ DENEY 6: EEPROM KULLANIMI DENEY 7: STEP MOTOR KONTROLÜ DENEY 8: LCD UYGULAMASI DENEY 9: SAAT UYGULAMASI DENEY 10: PWM SİSTEMİNİN TANITILMASI VE KULLANILMASI EKLER

7 IX ŞEKİLLER DİZİNİ Şekil 3.1: 16C84 Pin Diyagram Şekil 3.2: Mimari Şekil 3.3: Register Haritası Şekil 3.4: Özel Registerlerin açıklamaları Şekil 3.5: Status Registeri Şekil 3.6: Option Registeri Şekil 3.7: PIC16F627/628 Bacak Bağlantısı Şekil 3.8: PIC16F627/628 Program Belleği Şekil 3.9: STATUS register Şekil 4.1: Bir pot değerini okumak için gerekli devre... 81

8 X ÇİZELGELER DİZİNİ Çizelge 3.1: PIC16F627/628 Özellikleri Çizelge 3.2: PIC16F627/628 mikrodenetleyicilerin pin adları ve görevleri Çizelge 4.1: PM Assembler Dili Seçenekleri Çizelge 4.2: Veri tiplerine göre array eleman sayıları Çizelge 4.3: PicBasic Pro Komutları Çizelge 4.4: uyumlu LCD komutları... 74

9 1 BİRİNCİ BÖLÜM MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER 1.1 Mikroişlemciler Çok genel bir ifadeyle bir bilgisayarın beyni, esas işi yapan kısmı olarak isimlendirilebilecek olan mikroişlemciler hakkında biraz daha ayrıntılı bir açıklama şu şekilde yapılabilir: Bir dijital bilgisayar üç temel kısımdan oluşmaktadır. Program ve Veri Hafızaları (Program and Data Memory) Giriş Çıkış Birimleri (Input Output Units) Merkezi İşlem Birimi (MİB / CPU), verileri işleme ve sistemi oluşturan çeşitli birimler arasında bilgi akışı kontrolü işlemlerini gerçekleştirir. Veri işlemenin büyük çoğunluğu MİB de yer alan Aritmetik Lojik Birim üzerinde gerçekleştirilir. Ancak bu işlemlerin gerçekleştirilmesi sırasında Kod Çözme Kontrol Birimleri ile çeşitli Saklayıcılar (Registers) da çok yoğun olarak kullanılır. İşte bu merkezi işlem birimini oluşturan çeşitli alt birimlerin tek bir entegre devre üzerinde gerçekleştirilmiş üretilmiş haline Mikroişlemci (Microprocessor) adı verilir.

10 2 Bir mikroişlemci kullanılarak hazırlanmış bilgisayarlara mikrobilgisayar denilmektedir. Hafıza ve giriş-çıkış birimlerinin miktarı, türü ve kapasitesi uygulamaya bağlı olarak değişir. İsimlendirmede kullanılan mikro adı ise işlemcinin veya bilgisayarın yeteneğinin kısıtlılığını değil, boyutlarının küçüklüğünü belirtmek için kullanılır. Modern gelişmiş mikroişlemcilerde bir kaç milimetre karelik alanda milyonlarca transistor yer almaktadır. Örneğin Pentium II işlemcisinde (ön hafıza, cache Memory) hariç 7.5 milyon adet transistor bulunmaktadır. Mikroişlemcilerin tarihsel gelişimine kısaca bir göz atılacak olursa ilk mikroişlemcinin bir hesap makinesinde kullanılmak üzere INTEL firması tarafından 1971 de I4004 adıyla üretilen 4 bitlik bir işlemci olduğu görülür. Bu tarihten önce bilgisayarların MİB leri önceleri elektron tüpleri ve röleler daha sonraki dönemde ise transistörler ve çeşitli elektronik devreler kullanılarak hazırlanıyordu. Çok büyük yer kaplayan ve çok güç tüketen bu eski bilgisayarlar ortam şartlarına karşı da çok duyarlıydılar. İşlem kapasitelerinin çok kısıtlı olmasının yanı sıra sürekli bakım gerektiriyorlardı. Bir fikir vermesi açısından 1945 de Pennsylvania Üniversitesinde tamamlanan ENIAC isimli ilk bilgisayarın 30 metre boyu ve 30 ton ağırlığı olduğunu söyleyebiliriz. 18,000 radyo tüpünden oluşan cihaz 100 Kwatt güç harcamaktaydı deki, bilgisayarın temel elemanı kabul edilen MİB in tek bir entegre devre içine sığdırılarak üretimi, yarı-iletken teknolojisinde, transistörün keşfi gibi bir sıçrama gerçekleştirmiştir.

11 3 INTEL, özel sipariş üzerine geliştirdiği 4 bitlik I4004 (1971) ve 8 bitlik I8008 (1972) entegre devrelerine ilk müşterilerinden başka bir ilgi beklemediği için üretim hattını düşük kapasitede tutmuştu. Ancak aksine bu işlemciler büyük bir ilgi gördü ve 1974 de genel amaçlı ilk 8 bitlik MİB olan I8080 işlemcisini üretti. Bu işlemciye büyük bir talep oldu ve kısa bir zamanda I8080 endüstri standardı oldu. İki yıl sonra 1976 da daha gelişmiş bir model olan I8085 üretildi. Bu arada 1975 yılında sektörün ikinci önemli ismi olan Motorla firması da MC6800 adındaki işlemciyi piyasaya sürerek o günden itibaren süre gelen bir yarışa katılmış oldu. Mikroişlemcilerin sınıflandırılmasında önemli bir ölçü olan bit sayısı işlemcinin üzerinde işlem yapabildiği en uzun verinin bit sayısını gösterir. Kelime uzunluğu (Word lenght) de denilen bu parametre 4 bit, 8 bit, 16 bit, 32 bit gibi değerler alabilmektedir. Bu değer aynı zamanda işlemcinin saklayıcılarının ve veri yolunun genişliğini de gösterir. Ancak bazen harici ve dahili veri yolları farklı genişliklerde olabilir yılında ilk 16 bitlik işlemcisi olan 8086 yı üreten INTEL bir yıl sonra 1979 da harici veri yolu genişliği 8 bit olmanın dışında 8086 ile aynı yapıya sahip olan 8088 i piyasaya sürdü. 8088, 1981 de üretilmeye başlanan IBM PC (Personel Computer Kişisel Bilgisayarların) ilk işlemcisi olmuştur. 16 bitlik işlemcilerde endüstri standardı olan 8086 / 8088 günümüze kadar gelen çeşitli ürünlerle X86 ailesi diye isimlendirilen mikroişlemci ailesinin çekirdeği (core) olmuştur.

12 4 1.2 Mikrodenetleyici Mikrodenetleyici terimini açıklamak için öncelikle mikroişlemci ve mikrobilgisayar konularına değinmek gerekmektedir. Mikroişlemci tüm bilgisayarlarda ve bilgisayar donanımına sahip elektronik cihazlarda bulunan, her türlü aritmetik ve mantıksal işlemin yapıldığı merkezi bir işlem ünitesidir. Bir mikroişlemci genelde şu kısımlardan oluşur: 1. Aritmetik-Mantık Ünitesi (ALU) 2. Komut Çözücü (Instruction Decoder) 3. Yazmaçlar (Registers) 4. Veri Yolu Kontrol Devresi (Data Bus Controller Circuitry) Mikroişlemcinin işlevini yerine getirebilmesi için bazı yardımcı elemanlara ihtiyacı vardır. Bunlar a) Giriş Üniteleri b) Çıkış Üniteleri c) Bellek Üniteleri şeklinde sıralanabilir. Bir kişisel bilgisayarı ele alırsak bilgisayarın beyni olan anakart ve onun üzerindeki çok özel parça mikroişlemci, ancak bellek, sabit disk, klavye ve monitör gibi ünitelerin varlığı sayesinde anlamlı bir işlevi yerine getirebilir. Yukarıda bahsedilen yardımcı elemanlar ile birlikte mikroişlemci küçük boyutlu bir kart üzerine yerleştirildiği zaman mikrobilgisayar olarak adlandırılır. Mikrobilgisayarlar elektronik kontrol uygulamalarında sıklıkla kullanılır. Bir mikrobilgisayarı oluşturan temel bileşenlerin tek bir yonga içerisinde üretilmiş haline mikrodenetleyici denir. Bilgisayar, mikrobilgisayar ve mikrodenetleyicilerin sahip olduğu kabiliyetler, sağladığı imkanlar, fiyatları, donanım özellikleri ve kullanım

13 5 alanları farklıdır. Bunlardan en ucuz, kullanımı kolay ve basit yapıda olanı mikrodenetleyicilerdir. Bugün pek çok günlük uygulamada mikrodenetleyiciler ve mikrobilgisayarlar kullanılmaktadır. Bu uygulamalara şu örnekler verilebilir: Taşıtlar, kamera, cep telefonu, televizyon, radyo, hesap makinesi, çamaşır-bulaşık makinesi, kombi, fırın, fotokopi makinesi, elektronik oyuncaklar, alarm sistemleri ve benzeri. Endüstriyel alanda ise mikrodenetleyicilerin kullanım alanı sıralanamayacak kadar geniştir. Günümüzde bir otomobil ortalama olarak 15 işlemci taşımaktadır model Mercedes 63, BMW ise 65 işlemci ile en konforlu ve güvenli otomobillerdendir yılı ile birlikte modern bir evdeki cihazlarda bulunan toplam işlemci sayısı 50`yi aşmıştır. Günümüzde kullandığımız bilgisayarların özelliklerinden bahsederken özellikle işlemcisinden bahsedilir ve bunların çalışma frekansları o bilgisayarın hızını belirlemede ön önemli kıstas olduğu açıktır. Şu an kullanılan, Intel firmasının ürettiği 80286, 80386, ve nihayetinde Pentium serisi birer mikroişlemcilerdir. (Microprocessor). İşlemciler kendi başlarına pek işe yaramazlar ve bellek, giriş-çıkış ünitelerine ihtiyaç duyarlar.eğer bu üç yapıyı (CPU, RAM ve I/O ) bir araya getirip bir kılıf içine aldığımızda ortaya çıkan yapıya mikro denetleyici (mikrokontroller) denir. Bilgisayar teknolojisi gerektiren uygulamalarda kullanılmak üzere tasarlanmış olan mikro denetleyiciler, mikroişlemcilere göre basit ve ucuzdur. Artık günümüzde birçok ürünün içinde mikro denetleyiciler yer almaktadır. Mesela yeni çıkan klimaları ve buzdolaplarını yakından inceleyin. Mutlaka sıvı kristal bir gösterge ekranına sahiptir ve tuşlarla bu makineleri kontrol etmekteyiz. Bu kontrol etme olayını bize mikro denetleyiciler sağlar. Veya arabamızda özellikle yeni olanlarında mutlaka bir tane mikro denetleyici vardır. Bu mikro denetleyici merkezi kilit sistemini ve gösterge panelini ve/veya klimayı kontrol eder ve bunlar hakkındaki bilgileri bize ekranda veya göstergelerle bize anlatır. örnekleri arttırmak mümkün. işte bu tür kontrol ve hesaplama olayları için mikro denetleyicileri kullanabiliriz. istersek bir robot bile yapabiliriz.

14 6 Günümüzde birçok mikrodenetleyici üreticisi mevcuttur ve bunlar ihtiyaç duyulan işleme göre farklı mikro denetleyiciler üretmektedirler. Ama basite indiğimizde mikro denetleyici mimarisinde çok az bir değişim vardır ve bu mikro denetleyiciler yap itibariyle hemen hemen aynıdır. Bir projeye başlamadan önce mikro denetleyiciyi seçerken, uygulamada kullanacağımız mikro denetleyicinin ne tür özelliklerinin olması gerektiği iyice kavranmalıdır. Bu tür özellikler, 1. Kesme sayısı 2. I/O port sayısı 3. Programlanabilir dijital paralel giriş / çıkış 4. Programlanabilir analog giriş / çıkış 5. Dahili belek tipi ve kapasitesi 6. Kayan nokta hesaplaması Bu özellikleri arttırmak mümkün. Ben sadece temel özellikleri saydım. Bir mikrodenetleyici genel olarak aşağıdaki birimlerden oluşur: 1. CPU (Merkezi işlem ünitesi - central processing unit) 2. RAM (Rasgele erişimli bellek-random Access Memory) 3. EPROM/PROM/ROM (Silinir, yazılır sadece okunur bellek-erasable Programmable Read Only Memory) 4. I/O (Girdi/çıktı - input/output) - seri ve paralel 5. Timers (Zamanlayıcılar) 6. Interrupt controller (Kesmeler)

15 7 Mikro denetleyiciler özel amaçlı bilgisayarlardır ve programlandıkları şeyi en iyi şekilde yaparlar.genel olarak özellikleri ise; 1. Mikro denetleyiciler sadece bir iş için programlanmışlardır ve sadece bu programı işlerler ve kullandıkları program çipin içinde veya program hafızası denilen yerde saklı tutulur. 2. Mikro denetleyiciler sadece 50 mw civarında güç harcarlar. 3. Mikro denetleyicilere sadece girdi yapılmaz aynı zamanda çıktı da alınabilir. LED göstergelerle, sıvı kristal göstergelerle, ikaz sesleriyle vb.. 4. Mikro denetleyiciler ucuzdur. Bir çok parçadan oluşan kompleks bir devreyi kolayca küçük boyutlara ve maliyete indirmenizi sağlar Mikrodenetleyicilerin Kullanım Sebebi Elektronik sistemlerde sayısal devrelere sıklıkla rastlanır. Pek çok aritmetik ve mantıksal işlemi sayısal devreler sayesinde yapmak mümkündür. Sayısal bir sistemde gereken fonksiyonları yerine getiren bir devre kurmak veya tasarlamak için birkaç seçenek vardır. İstenilen fonksiyonu yapmak üzere üretilmiş basit bir entegre devre piyasada mevcut olabilir. Buna ºöyle bir örnek verilebilir: Amacımızın ikili sistemdeki iki sayıyı karşılaştırmak olduğunu varsayalım. Sayısal elektrik sinyalleri ile ifade edilen sayıları karşılaştırıp büyük, küçük veya eşit gibi sonuçlar veren entegre devreler piyasada mevcuttur ve oldukça ucuzdur. Bu durumda doğru olan bu devreleri kullanmaktır. PLD(Programmable Logic Device) olarak adlandırılan programlanabilir yongalar her türlü mantıksal işlemi yapma kabiliyetine sahiptir. İstenilen fonksiyona göre tekrar programlanabilir olması en önemli özelliğidir. Kullanımı yukarıda bahsedilen entegre devreler kadar kolay değildir. Ayrıca maliyeti de daha yüksektir.

16 8 Bahsedeceğimiz son seçenek amacımıza uygun bir mikrodenetleyici kullanmaktır. Basit entegre devrelerin ve PLD lerin yetersiz kaldığı durumlarda mikrodenetleyici kullanmak özellikle karmaşık sayısal sistemler için avantajlıdır. Günümüzde mikrodenetleyicileri programlamak PLD leri programlamaktan zor olmadığı gibi mikrodenetleyiciler PLD lerin sağlayamadığı pek çokkabiliyete de sahiptir. Bu üstün özellikleri sebebiyle pek çok elektronik kontrol sisteminde mikrodenetleyiciler tercih edilir. 1.3 Mikroişlemci ile Mikrodenetleyici Arasındaki Farklar Mikroişlemci ile kontrol edilecek bir sistemi kurmak için en azından şu üniteler bulunmalıdır. CPU,RAM,I/O ve bu ünitelerin arasındaki veri alışverişlerini sağlamak için DATABUS (Data Yolu ) gerekmektedir. Elbette bu üniteleri yerleştirmek için baskılı devreyi unutmamak gerekir. Mikrodenetleyici ile kontrol edilecek sistemde ise yukarıda saydığımız ünitelerin yerine geçecek tek bir chip ve birde devre kartı kullanmak yetecektir. Ayrıca da kullanım ve programlama kolaylığı da ikinci bir avantajıdır. Örneğin, bir programcı mikrodenetleyiciyi programlayarak önceden belirlenen koşulları yada I/O uçlarından gelen verileri ele alarak kararlar verdirebilir. Eldeki verileri kullanarak bazı matematik ve mantıksal işlevleri yürütüp elde ettiği neticeyi yine I/O uçlarından digital veriler olarak çıkarabilir.

17 9 İKİNCİ BÖLÜM PIC MİKRODENETLEYİCİSİ 2.1 Genel Tanımlama PIC, adını İngilizce'deki Peripheral Interface Controller cümlesindeki kelimelerin baş harflerinden almış olan bir mikrodenetleyicidir. Eğer bu cümleyi Türkçe'ye çevirirsek, çevresel üniteleri denetleyici arabirim gibi bir anlam çıkacaktır.pic gerçekten de çevresel üniteler adı verilen lamba,motor,role,ısı ve Işık sensörü gibi I/O elemanların denetimini çok hızlı olarak yapabilecek şekilde dizayn edilmiş bir chip'tir. RICS mimarisi adı verilen bir yöntem kullanılarak üretildiklerinden bir PIC'i programlamak için kullanılacak olan komutlar oldukça basit ve sayı olarak da azdır. 1980'lerin başından itibaren uygulanan bir tasarım yöntemi olan RISC (Reduced Instruction Set Computer) mimarisindeki temel düşünce, daha basit ve daha az komut kullanılmasıdır. örneğin PIC16F84 mikrodenetleyicisi toplam 35 komut kullanılarak programlanabilmektedir. Bir mikrodenetleyici ile çalışmaya başlayanlar için en uygun seçenek PIC16F84 denetleyicisidir. çünkü Flash belleğe sahip olan PIC16F84'i programlayıp ve deneylerde kullandıktan sonra, silip yeniden program yazmak PIC ile yeni çalışmaya başlayanlar için büyük kolaylıktır. Böylece işe yeni başlayanlar yaptıkları programlama hataları nedeniyle chip'i atmak zorunda kalmayacaklardır. Gerçi EPROM program belleği olan chip'lere de yeniden yazmak mümkündür ama, bu durumda bir EPROM silici cihazına ihtiyaç vardır. Bir silici cihaz bulunsa bile programı bellekten silmek için en azından dk. Beklemek zorunda

18 10 kalınacaktır. işte PIC16F84'ün bu özelliği mikrodenetleyici kullanmaya yeni başlayanlar için ideal bir seçenektir. PIC 16F84 düşük maliyetli, yüksek performanslı, CMOS, full-statik, 8 bit mikrodenetleyicidir. Tüm PIC 16/17 mikrodenetleyiciler RISC mimarisini kullanmaktadır. PIC16FXX mikroları birçok esas özelliklere sahiptir. 8 seviyeli, derin küme ve çoklu iç ve dış kesme kaynaklarına sahiptir. Harward Mimarisinin ayrı komut ve veri taşıyıcısıyla ayrı 8 bitlik geniş veri taşıyıcılı, 14 bitlik geniş komut kelimesine imkan vermektedir. 2 aşamalı komut hattı tüm komutların tek bir saykıl la (çevrimle) işlenmesini sağlamaktadır. Yalnızca bazı özel komutlar 2 saykıl çekerler. Bu komutlar dallanma komutlarıdır. PIC16FXX mikrodenetleyicileri tipik olarak 2:1 oranında kod sıkıştırmasına erişmektedir ve sınıflarındaki 8 bit mikrodenetleyicilerden 2:1 oranında hız arttırılmasına olanak sağlanmaktadır. (10MHZ) PIC16F84 microchip i 36 bitlik RAM belleğine, 64 bayt EEPROM belleğine ve 13 I/O pin ine sahiptir. Bunun yanı sıra, timer ve sayaç ta mevcuttur. PIC16FXX ailesi dış elemanları azaltacak spesifik özelliklere sahiptir ve böylece maliyet minimuma inmekte, sistemin güvenirliği artmakta, enerji sarfiyatı azalmaktadır. Bunun yanı sıra tüm PIC ler de 4 adet osilatör seçeneği mevcuttur. Bunlarda tek pin li RC osilatör, düşük maliyet çözümünü sağlamakta (4 MHZ), LP osilatör (Kristal veya seramik rezonatör), enerji sarfiyatını minimize etmekte (asgari

19 11 akım) (40 KHZ), XT kristal veya seramik rezonatör osilatörü standart hızlı ve HS kristal veya seramik rezonatörlü osilatör çok yüksek hıza sahiptir (20 MHZ). PIC mikrokontrolörlerinin en büyüközelliği sleep modu özelliğidir.. Bu mod ile PIC işlem yapılmadığı durumlarda uyuma moduna geçerek çok düşük akım çeker. (5m A). Kullanıcı bir kaç iç ve dış kesmelerle PIC i uyuma modundan çıkarabilmektedir.yüksek güvenilirlikli Watchdog Timer kendi bünyesindeki chip üstü RC osilatörü ile yazılımı kilitlemeye karşı korumaktadır. PIC16F84 EEPROM program belleği, aynı aygıt paketinin orjinali ve üretimi için kullanılmasına olanak vermektedir. Yeniden programlanabilirliği mikroyu uygulamanın sonundan kaldırmadan kodu güncelleştirmeye izin vermektedir. Bu aygıtın kolayca erişilemediği, fakat prototipinin kod güncelleştirmesi gerekli olduğu durumlarda, bir çok uygulamanın geliştirilmesinde yararlıdır. Bunun yanı sıra bu kodun güncelleştirilmesi diğer ayrı uygulamalarda da yararlıdır. PIC ler özellikle de PIC16F84 yüksek hızlı otomobillerden, motor kontrolü uygulamaları, düşük enerji sarfiyatlı uzaktan çalışan sensörler, elektronik kilitler, güvenlik aygıtları ve akıllı kartlara kadar bir çok uygulamalarda kullanılırlar. EEPROM teknolojisi uygulama programların (Transmitter kodları, motor hızları, alıcı frekansları, güvenlik kodları vb.) uygulamasını son derece hızlı ve uygun hale getirmektedir. Küçük boyutlarıyla bu mikrodenetleyiciler alan sınırlaması bulunan uygulamalarda kusursuzdur. Düşük maliyet, düşük enerji sarfiyatı, yüksek performans, kullanım kolaylığı ve I/O esnekliği özellikle de PIC 16F84 mikrosunun daha önce kullanılması hiç düşünülmeyen alanlarda kullanılmasını sağlamaktadır. (Bunlar ; timer fonksiyonları, seri kominikasyon, PWM fonksiyonları ve birlikte işlemci uygulamaları) Seri sistem içi programlama özelliği (iki pinin üzerinden)

20 12 ürünün tamamen toplanması ve test edilmesinden sonra ürünün alıştırılmasının esnekliğine olanak vermektedir. Bu özellik sayesinde ürün serileştirilebilmekte ve veriler saklanabilmektedir. 2.2 Gelişme Desteği PIC16FXX sınıfı tam özellikli mikrobirleştirici, yazılım simülatörü, devre içi emülatör, düşük maliyetli program geliştirme ve tam özellikli programlayıcı ile desteklenmiştir. PIC 16F84 PIC16C5X mikrokontrolerlerinin geliştirilmiş halidir. PIC16C5X için yapılan devrelerde kolaylıkla PIC16F84 kullanılabilir. 2.3 Elektrikle Silinebilen Mikrokontrolörler Bu mikrolar, programının silinip yeniden yazılabilme özelliğine sahiptir ve oldukça düşük maliyetli plastik ambalajlar halinde bulunmaktadır. Aynı zamanda bu tip mikroların üretimi kadar prototipinin geliştirilmesi ve pilot programlar için kullanılmasına olanak sağlamaktadır. Bunun daha ötesindeki avantajlarından biri, bunların devre içi veya Microchip in PICSTART plus veya PROMATE II programlayıcıları tarafından silinebilmesi ve yeniden programlanabilmesidir.

21 Mimari Olarak İncelenmesi PIC16FXX sınıfının üstün performansı genellikle RISC mikroçiplerinde bulunan birçok mimari özelliklere sahiptir. Başlangıç olarak PIC16FXX Harward mimarisini kullanmaktadır. Bu mimari ayrı belleklerden erişilen program ve verilere sahiptir. Böylece PIC mikrosu program belleği ve veri belleği taşıyıcılarına sahipken programların ve verilerin aynı bellekten getirilen geleneksel Von Neuman mimarisi üzerinde bant genişliği iyileştirilmektedir. Programların ve veri belleklerinin ayrılması komutların 8 bitlik geniş veri kelimesinden farklı boyutlandırılmasına olanak vermektedir. PIC16FXX mikroları tekli kelimeye imkan veren 14 bit taşıyıcı üzerinden 14 bit komutu tek bir süreçte uygulamaktadır. İki aşamalı hat komut sürecini ve yürütülmesini biraraya getirmektir. Bunun sonucu olarak, program bölünmeleri dışında tüm komutlar tek bir süreçle yürütülmektedir 10MHZ). PIC 16FXX aygıtları,kayıt dosyalarına ve veri belleğine doğrudan veya dolaylı olarak yönlenebilmektedir. Program Sayacı dahil bütün özel fonksiyon kayıtları veri belleğine yerleştirilmiştir. Adres modunu kullanarak herhangi bir kaydın üstüne herhangi bir işlemin gerçekleşmesini mümkün kılan Ortogonal (simetrik) komutlarda kurulmuştur. Simetrik özelliği ve özel optimal durumların eksikliği PIC 16FXX ile programlamayı daha da etkin kılmaktadır. İlaveten enformasyon eğrisi önemli ölçüde azaltılmıştır. PIC16FXX mikroları 8 bitlik ALU ve W (working) registerine sahiptir. W registerindeki veri ile herhangi bir kayıt dosyası arasında aritmetik ve boolean fonksiyonları uygulanmaktadır. ALU 8 bit uzunluğundadır ve toplama, çıkarma, değiştirme ve çeşitli lojik işlemleri içerir. İki bilgili komutlarda bir bilgi tipik olarak

22 14 W registeridir diğer bilgi ise dosya kaydı veya hazır sabit değerdir. Tekli komutlarda bilgi ya W kaydı ya da dosya kaydıdır. Yürütülen komutlara dayanarak ALU, STATUS kaydındaki Caryy (C), Digit Caryy (DC) ve Zero (Z) bitlerini etkileyebilmektedir. C ve DC bitleri, çıkarmalarda, nispeten çıkarma işleminde ödünç alan ve sayısal ödünç alan bit olarak işlemektedir. 2.5 Komut Akımı / Bilgi İletimi Komut süreci dört Q sürecinden oluşmaktadır. (Q1, Q2, Q3 ve Q4). Komut devri ve yürütülmesi şöyle iletilmektedir. Devir bir komut sürecini üstlenirken decode ve yürütme diğer komut sürecini üstlenmektedir. Bununla birlikte bilgi iletim nedeniyle, her bir komut etkin olarak bir süreçte yürütülür. Eğer komut program sayacının değişmesine neden olmuşsa ( örn. GOTO komutu) o zaman komutun tamamlanması için iki süreç gereklidir. Devir süreci her Q1 de değeri bir artan program sayacı (PC) ile başlar. Yürütme sürecinde işleyen komut Q1 sürecindeki Komut kaydı na gönderilir. Daha sonra bu komut Q2, Q3 ve Q4 süreçleri boyunca decode edilir ve yürütülür. Veri belleği Q2 boyunca okunur (Bilgi okunması) ve Q4 boyunca yazılır (Yazım hedefi). 2.6 Bellek Organizasyonu PIC16F84` de 2 bellek bloğu mevcuttur. Bunlar program belleği ve veri belleğidir. Her bir bellek kendi taşıyıcısına sahiptir; böylece her bir bloğa erişim aynı osilatör süreci boyunca meydana gelebilmektedir.

23 15 Bunun ötesinde, veri belleği genel amaçlı RAM ve özel fonksiyon kayıtları (SFR S ) olmak üzere ikiye bölünür. SFR`ler her bir bireysel özelleşmiş modülü ele alan bölümde açıklanan özel modülleri kontrol etmek için kullanılmaktadır. Veri belleği EEPROM veri belleğini de içermektedir. Bu bellek, doğrudan veri belleğine planlanmamış, fakat dolaylı olarak planlanmıştır ve dolaylı adres göstergeleri okumak/yazmak için EEPROM belleğinin adresini belirlemektedir. EEPROM belleği 64 bayt ve 10h-3Fh adres uzunluğuna sahiptir. 2.7 Veri Bellek Organizasyonu Veri belleği ikiye ayrılır. Birincisi özel fonksiyon kayıt alanı (SFR), diğeri ise genel amaçlı kayıt alanıdır. SFR ler aygıtın işlemini kontrol eder. Veri belleğinin bölümleri kümelenmiştir. Bu kümeler BANK adını alırlar. Bu hem SFR alanı hem de GPR alanı içinde geçerlidir. GPR alanı genel amaçlı RAM`in 16 baytından daha fazlasına olanak sağlanabilmesi için kümelenmiştir. SFR`nin kümelenmiş alanı özel fonksiyonları kontrol eden kayıtlara aittir. Kümeleme küme seçimi için kontrol bitleri gerektirmektedir. Bu kontrol bitleri STATUS kaydında yer almaktadır. Veri belleğin tümüne ya direkt her kayıt dosyasının mutlak adreslerini kullanarak ya da dolaylı yoldan dosya seçim kaydı (FSR) üzerinden erişilebilir. Dolaylı adresleme, veri belleğinin kümelenmiş alanına erişmek için RP1: RPO` un şimdiki değerlerini kullanmaktadır.

24 16 Veri belleği genel amaçlı kayıt ve özel fonksiyon kaydını içeren iki kümeye bölünmektedir. RPO bitinin (STATUS <5>) (Yani 5. Bit RPO bitidir.) silinmesiyle BANK 0 seçilir. RPO` in kurulması BANK 1`i seçer. Her bir BANK (küme) 7Fh (128 bytes) kadar uzanır (genişler). Her bir kümenin ilk on iki yerleşimi özel fonksiyon kaydı için rezerve edilmiştir. Kalanı ise statik RAM olarak genel amaçlı kayıt yürütebilmektedir. 2.8 Genel Amaçlı Kayıt Dosyası Bütün aygıtlar belirli bir miktarda genel amaçlı kayıt (GPR) alanına sahiptir. Her bir GPR 8 bit uzunluğundadır ve dolaylı yada doğrudan FSR üzerinden erişilmektedir. BANK 1`de ki GPR adresleri BANK 0`daki adreslere planlanır. Örnek olarak, 0Ch veya 8Ch adresleme yerleşimi aynı GPR` ye erişecektir 2.9 Dış Yüzeysel özellikler: 13 I/O pini ile bağımsız komut kontrolü Doğrudan LED sürücüsü için yüksek akımda indirme/çıkarma Her pin için Max. 25 ma'lik sink akımı Her pin için Max. 20 ma'lik source akımı TMRO: 8 bitlik programlanabilir ön derecelendirici ile 8 bitlik zamanlayıcı/sayacı

25 Özel Mikrokontrolör Özellikleri: Power-on Reset (POR) Power-up Timer (PWRT) Oscillator Start-up Timer (OST) Güvenli işlemler için chip üstünde olan RC osilatör ile Watchdog Timer (WDT) Kod koruması Güç korumalı SLEEP modu Seçilebilir osilatör seçenekleri Seri sistem içi programlama (iki pin yolu ile) 2.11 CMOS Teknolojisi: Düşük güç,yüksek hız CMOS EEPROM teknolojisi Bütünüyle statik dizayn Geniş aralıklı işletme voltajı: Ticari : 2.0V-6.0V Endüstriyel : 2.0V-6.0V Düşük güç tüketimi < 2mA 5V,4MHz 60 ma 2V,32 khz 26 ma tipik standby 2V

26 18 ÜÇÜNCÜ BÖLÜM PIC ÇEŞİTLERİ 3. 1 PIC16F84 Mikrodenetleyicisi: Genel Özellikler Sadece 35 komut ile programlama 13 adet giriş/çıkış portu Çalışma hızı maks DC-10 MHz 8 bit data 1Kx14 EEPROM Program Hafızası 64 Byte EEPROM Data Hafızası Direkt/Dolaylı Adresleyebilme 4 adet Kesme Fonksiyonu. (Harici Kesme, TMR0, RB Change, EEPROM Write) 1 milyondan fazla yazma silme Kolay ve ucuz programlayabilme Her bir pinden 25 ma e kadar akım verebilme 8 bit programlanabilir zamanlayıcı/sayıcı

27 Pin Diyagramı Şekil 3.1: 16C84 Pin Diyagram 16F84 13 adet giriş çıkış portu bulunmaktadır. Bunlardan 8 bitlik olanına PortB, 5 bitlik olanına da PortA denir. PortA nın 4 numaralı pini open kollektör olup giriş çıkış yapmak için bir direnç ile +5 e çekmek gerekmektedir. Diğer portlardan hiçbir ek elemana ihtiyaç duymadan giriş/çıkış yapılabilir. Mikrodenetleyicinin mimarisi şekil 3.2 de verilmiştir.

28 Mimari Şekil 3.2: Mimari Mikrodenetleyiciyi programlamadan önce kaydedici haritasını bilmemiz gerekmektedir. PIC mimarisinde genelde tüm işlemler W (work) kaydedicisi üzerinden yapılır. Program yazmadan önce hangi porttan giriş hangi porttan çıkış yapılacağının belirlenip bunun mikrodenetleyiciye anlatılması gerekmektedir.bu da TrisA ve TrisB kaydedicilerine değerler atayarak olur. Şekil 3.3 de 16F84 ün kaydedici haritası görülmektedir.

29 Register Haritası Şekil 3.3: Register Haritası Şekil 3.3 e dikkat edilirse Bank0 ve Bank1 olarak 2 bölme vardır. Bank1 de bilmemiz gereken en önemli kaydediciler Option, TrisA ve TrisB dir. Bank0 da ise

30 22 Status,PortA,PortB,TMR0 ve Intcon dur. Bu kaydedicilerin bit-bit açıklaması ise şekil 3.4 de verilmiştir Özel Registerlerin Açıklaması: Şekil 3.4: Özel Kaydedicilerin Açıklamaları Şimdi bu kaydedicileri kısa kısa açıklayalım. PORTA: 5 adet giriş/çıkış pini vardır.

31 23 PORTB: 8 adet giriş/çıkış pini vardır. TRISA: PortA dan giriş mi yoksa çıkış mı yapılacağını belirleyen kaydedicisidir. İlgili gözelere 1 yüklenirse giriş, 0 yüklenirse çıkış yapılır. Örnek olarak MOVLW b MOVWF TRISA Bu komut satırları ile PortA nın 0,1 nolu pinleri Giriş, 2,3,4 nolu pinleri ise çıkış olarak tanımlanmış olur. TRISB: TrisA ile aynı. STATUS: Şekil 3.5: Status Kaydedicisi Bit7: IPR 0: Bank0-1 1: Bank2-3 Bit6-5: RP0-RP1 00:Bank0 01:Bank1 10:Bank2 11:Bank3 Bit4: TO Süre Aşım Biti 0: WDT Süre aşım işlemi yapmışsa 1: CR WDT yada SLEEP yapılmışsa Bit3: PD Güç Kesme Biti 0:SLEEP den sonra 1: CLRWDT dan sonra

32 24 Bit2: Z Bit1:DC Bit0:C 0:Yapılan aritmetik işlemin sonucu sıfırdan farklı ise 1: Yapılan aritmetik işlemin sonucu sıfır ise 1: 8 bitin Düşük anlamlı ilk 4 bitinden taşma olursa 0: Taşma olmazsa (ADD komutları ile değişir) 1: 8 bitten taşma olursa 0: Taşma olmazsa(add komutları ile değişir) OPTION : Şekil 3.6: Option Registeri R = Okunabilir Bit W = Yazılabilir Bit U= Önemsiz sıfır olarak okunur n = Değeri POR resete bağlıdır. Bit7:RBPU Bit6:INTEDG 1:PB0 Bit5:T0CS Bit4:T0SE Bit3:PSA Bit2,1,0: 0: PortB Pull-Up disable 1: PortB Pull-Up enable 0: PB0 düşen kenarda interrupt kabul eder. Yükselen kenarda interrupt kabul eder. 0: T0CKI den gelen darbeler Clock kabul edilir 1: Clock kaynağı XTAL in ürettiği dahili darbeler olur. (T0CS=1 ise) 0: T0CKI den gelen darbeler yükselen kenarda Clock u arttırır. 1: T0CKI den gelen darbeler düşen kenarda Clock u arttırır. 0: Ön bölme değeri TMR0 için ayarlı 1: Ön bölme değeri WDT için ayarlı Ön bölme değeri set etme

33 PIC16F628 Mikrodenetleyicisi : Özellikleri : Son yıllarda PIC18F84 ün yerini almaya başlayacak olan PIC16F627/628 düşük fiyatlı 8-bit bir mikrodenetleyicidir. PIC16F84 ile bacak uyumludur ve bu PICmikro için yazılan programların hiçbir değişiklik yapmadan aynen PIC16F628 üzerinde de çalışır. FLASH belleğe sahip olduğu için elektriksel olarak kolayca silinip yeniden yazılabilir. PIC16F628 PIC mikroların önemli özelliklerinden biride dahili RC osilatörlerin bulunması, böylece haricen bir direnç ve bir kondansatörü kullanmadan daha sade devreler oluşturmayı sağlar. Çizelge 3.1: PIC16F627/628 Özellikleri Özellikler PIC16F627 PIC16F628 Max çalışma hızı 20 MHz 20MHz Program belleği 1Kx14 Word FLASH 2Kx14 Word FLASH Kullanıcı RAM 224x8 Byte 224x8 Byte EEPROM veri belleği 128 Byte 128 Byte Timer (sayıcı) TMR0,TMR1,TMR2 TMR0,TMR1,TMR2 Karşılaştırıcı 2 2 Captur/compare/PWM 1 1 Seri iletişim USART USART Interrupt kaynağı sayısı I/O pini sayısı Çalışma gerilimi V V

34 Bacak Bağlantıları PIC16F84 ün pinleri ile tam uyumludur. Bu nedenle 16F84 için geliştirilmiş kodları hiçbir değişikliğe tabi tutmadan 16F628 e yükleyebilir ve çalışmanızı deneyebilirsiniz. PIC16F628 in ilave fonksiyonları vardır. Örneğin RA0, RA1 pinleri analog karşılaştırıcı girişi olarak kullanılabilir. MCLR pini, giriş pini olarak kullanılabilir. A2/AN2/VREF 1 18 RA1/AN1 RA3/AN3/CMP RA0/AN0 RA4/TOCK1/CMP RA7/OSC1/CLKIN RA5/MCLR /THV 4 15 RA6/OSC2/CLKOUT Vss 5 14 VDD RB0/INT 6 13 RB7/T1OSI RB1/RX/DT 7 12 RB6/T1OSO/T1CKI RB2/TX/CK 8 11 RB5 RB3/CCP RB4/PGM Şekil 3.7: PIC16F627/628 Bacak Bağlantısı Pin Özellikleri PIC16F628, 18 bacaklı olmasına rağmen 16 tane I/O pini vardır. Çizelge 3.2 de görüleceği gibi her pinin birden fazla işlevi vardır. Gerektiğinde Vss, Vdd pinleri hariç tüm pinleri giriş/çıkış verileri için kullanılabilir. Bu pinlerin 8 i (RA0- RA7) PORTA olarak, 8 i de PORTB(RB0-RB7) olarak kullanılır. Çizelge 3.2: PIC16F627/628 mikrodenetleyicilerin pin adları ve görevleri Pin Adı RA0/AN0 RA1/AN1 RA2/AN2/VREF Açıklama İki yönlü dijital I/O portu / Analog komparatör girişi İki yönlü dijital I/O portu / Analog komparatör girişi İki yönlü dijital I/O portu / Analog komparatör girişi/vref girişi

35 27 RA3/AN3/CMP1 RA4/TOCKI/CMP2 RA5/MCLR /THV RA6/OSC1/CLKOUT RA7/OSC2/CLKIN RB0/INT RB1/RX/DT RB2/TX/CK RB3/CCP1 RB4/PGM RB5 RB6/T1OSO/T1CKI RB7/T1OSI Vss Vdd Digital I/O portu / Analog komparatör girişi/ komparatör çıkışı Digital I/O portu / TIMER 1 harici clock girişi/ komparatör çıkışı Digital I/O portu / Reset girişi yada programlama esnasında gerilim giriş ucu olarak kullanılır. MCLR olarak konfigüre edildiğinde aktif 0 girişi PIC i reset eder. MCLR/THV girişi normal çalışma esnasında Vdd gerilimini geçmemelidir. Dijital I/O portu/ Kristal osilatör girişi. ER osilatörü ve dahili RC osilatörü kullanıldığında OSC1 frekansının 1/4 ünün alındığı pin Dijital I/O portu/ Kristal osilatör girişi ve harici clock girişi olarak kullanılan pin Dijital I/O portu/ Harici kesme Girişi Dijital I/O portu/ USART veri alış pini / senkronize data I/O pini Dijital I/O portu / USART veri gönderme pini/ senkronize clock I/O pini Dijital I/O portu /Capture-Compare PWM I/O Dijital I/O portu / düşük gerilim programlama giriş pini. Pindeki seviye değişikliği SLEEP moduna giren PIC i uyandırır. Dijital I/O portu / Pindeki seviye değişikliği SLEEP moduna giren PIC i uyandırır. Dijital I/O portu / Timer osilatör çıkışı / Timer1 clock girişi Dijital I/O portu / Timer1 osilatör girişi Güç kaynağının GND ucuna bağlanacak pin Güç kaynağının + ucuna bağlanacak pin

36 Bellek Organizasyonu Program Belleği Organizasyonu PIC16F62X, 8Kx14 bitlik program belleği alanını adresleyebilecek kapasiteye sahip olan 13 bitlik bir counter i vardır. PIC16F627 de sadece ilk 1Kx14 (0000h- 03FFh) PIC16F628 de ise 2Kx14 (0000h-07FFh) adresine fiziksel olarak ulaşılabilir. Reset vektörü 0000h adresinde ve kesme vektörü 0004h adresindedir. PC< 12:0 > CALL, RETURN 13 RETFIE, RETLW Yığın Seviye 1 Yığın Seviye 2.. Yığın Seviye 8 Reset Vektörü 000h Kesme Vektörü On-Chip program hafızası FFh 0800h 1FFFh Şekil 3.8: PIC16F627/628 Program Belleği Data Belleği Data belleği 4 Bank a ayrılmıştır. Bellek banklarında genel amaçlı kaydediciler (kullanıcı RAM) ve özel fonksiyon kaydedicileri bulunmaktadır. Özel fonksiyon kaydedicileri her bir bankın ilk 32 adresine yerleştirilmiştir. 20h-7Fh, A0h- FFh, 120h-14Fh, 170h-17Fh ve 1F0h-1FFh adres aralıkları genel amaçlı kaydediciler için

37 29 ayrılmışlardır. Bu 8 bitlik kaydediciler kullanıcının programda gerekli olan değişkenler için ayırıp kullanabileceği RAM alınıdır. Aşağıda RAM bellekteki banklara nasıl ulaşılacağını göstermektedir. Çizelge 3.3: Bank seçme bit lerinin durumu RP1 RP0 BANK0 0 0 BANK1 0 1 BANK2 1 0 BANK3 1 1 Bir kaydedici bankını seçmek için STATUS kaydedicisindeki RP0 ve RP1 bitleri kullanılmaktadır. 16F84 de iki bank (BANK0, BANK1) bulunduğundan sadece RP0 bitini kullanmak suretiyle banklara ulaşabiliyoruz. Bit7 IRP RP1 RP0 TO PD Z DC C Bit0 Şekil 3.9: STATUS kaydedici 16F628 register haritası 224x8 olarak organize edilmiştir. Her bir bellek hücresine doğrudan olarak ulaşılabildiği gibi FSR kaydedicisi kullanarak dolaylı olarak ta erişilebilir. 3.3 PIC16F877 Mikrodenetleyicisi Genel Özellikleri : PIC16F877, dünyada kullanıma sunulmasıyla eş zamanlı olarak Türkiye'de de uygulama geliştirenlerin kullanımına sunuldu. PIC16F877, belki de en populer PIC işlemci olan PIC16F84'ten sonra kullanıcılara yeni ve gelişmiş olanaklar sunmasıyla hemen göze çarpmakta. Program belleği FLASH ROM olan F877'de yüklenen

38 30 program F84'de olduğu gibi elektriksel olarak silinip yeniden yüklenebilmektedir. Aşağıdaki Çizelge F877 özelliklerini göstermektedir. Çizelge 3.4: PIC16F877 Özellikleri Özellikler Çalışma Hızı Program Belleği EEPROM VerBelleği Kullanıcı RAM PIC16F877 DC-20MHZ 8Kx14 word Flash ROM 256 Byte 368x8 byte Giriş Çıkış PortSayısı 33 Timer A/D çevirici Timer0,Timer1,Timer2 8 Kanal 10 bit 16 bit Capture Capture/Comp./PWM 16 bit Compare 10 bit PWM çözünürlük Seri çevresel arayüz Paralel slave port USART/SCI SPI(Master) vei2c(master/slave)modunda SPI portu (senkron seri port) 8 bit harici RD,WR ve CS kontrolu 9 bit adresli Özellikle 16C6x ve 16C7x ailesinin tüm özelliklerini barındırması, 16F877 yi kod geliştirmede de ideal bir çözüm olarak gündeme getirmekte. Konfigürasyon bitlerine dikkat etmek şartıyla C6x veya C7x ailesinden herhangi bir işlemci için geliştirdiğiniz kodu hemen hiç bir değişikliğe tabi tutmadan F877 e yükleyebilir ve çalışmanızı deneyebilirsiniz. Bunun yanı sıra F877, 16C74 ve 16C77 işlemcileriyle de bire bir bacak uyumludur.

39 31 Şekil 3.10: PIC16F877 nin Bacak Bağlantıları PIC16F877 Portlarının Fonksiyonları PORTA Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilmektedir. 6 bit genişliğindedir (F84 de 5 bittir). RA0, RA1,RA2,RA3 ve RA5 bitleri analog/sayısal çevirici olarak konfigüre edilebilmektedir. Buna ek olarak RA2 ve RA3 gerilim referansı olarak da konfigüre edilebilmektedir (bu durumda bu bitler aynı anda A/D çevirici olarak kullanılamazlar). İlgili yazmaçlar ve adresleri aşağıdaki gibidir. PORTA 0x05 TRISA 0x85 ; giriş/çıkış belirleme yazmacı

40 32 ADCON1 0x9F ; RA portlarının A/D, referans gerilimi veya sayısal giriş/çıkış seçiminde kullanılır.işlemciye ilk defa gerilim uygulandığında RA4 hariç diğer beş PORTA biti A/D çeviricidir. Eğer RA portunun bazı bitlerini sayısal giriş/çıkış olarak kullanmak isterseniz ADCON1 yazmacında değişiklik yapmanız gerekmektedir PORTB Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. B portunun her bacağı dahili bir dirençle VDD ye bağlıdır (weak pull-up). Bu özellik varsayılan olarak etkin değildir. Ancak OPTION yazmacının 7.bitini 0 yaparak B portunun bu özelliğini etkinleştirebilirsiniz. RB4-RB7 bacakları aynı zamanda bacakların sayısal durumlarında bir değişiklik olduğunda INTCON yazmacının 0. biti olan RBIF bayrağını 1 yaparak kesme oluştururlar. Bu özelliği, işlemci SLEEP konumundayken, devreye bağlı tuş takımınının her hangi bir tuşuna basıldığında işlemcinin yeniden etkinleşmesi için kullanabilirsiniz. Bütün bunların yanı sıra RB6 ve RB7 yüksek gerilim programlama, RB3 ise düşük gerilim programlama modlarında da kullanılmaktadır. İlgili yazmaçlar ve adresleri aşağıdaki gibidir. PORTB 0x06 TRISB 0x86 ; giriş/çıkış belirleme yazmacı OPTION_REG 0x81, 0x181

41 PORTC Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. SPI, USART, Capture/Compare ve PWM gibi özel fonksiyonlar, ilgili yazmaçların ayarlanmasıyla bu porttan yürütülmektedir. İlgili yazmaçlar ve adresleri aşağıdaki gibidir. PORTC 0x07 TRISC 0x87 ; giriş/çıkış belirleme yazmacı PORTD Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. Bütün port bacakları Schmitt Trigger girişlidir. TRISE yazmacının 4.biti olan PSPMODE bitini 1 yaparak paralel slave mode da kullanılabilir. Bu fonksiyon aracılığıyla 8 bit genişliğindeki her hangi bir mikroişlemci bus ına bağlıyabilirsiniz. PORTD 0x08 TRISD 0x88 ; giriş/çıkış belirleme yazmacı TRISE 0x PORTE Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilmektedir. 3 bit genişliğindedir. RE0, RE1 ve RE2 bacaklarında Schmitt Trigger giriş tamponları vardır.her bir bacak analog/sayısal çevirici olarak konfigüre edilebilmektedir. Eğer PORTD paralel slave port olarak konfigüre edilirse, RE0, RE1 ve RE2 bacakları

42 34 PORTD nin bağlandığı mikroişlemci bus ında sırasıyla READ, WRITE ve CHIP SELECT kontrol girişleri olarak kullanılır. Bunun için TRISE uygun biçimde ayarlanmalıdır. İlgili yazmaçlar ve adresleri aşağıdaki gibidir. PORTE 0x09 TRISE 0x89 ; giriş/çıkış belirleme yazmacı ADCON1 0x9F ; RE portlarının A/D veya sayısal giriş/çıkış olarak seçiminde kullanılır İşlemciye ilk defa gerilim uygulandığında üç PORTE biti de A/D çeviricidir. Eğer RE portunun bazı bitlerini sayısal giriş/çıkış olarak kullanmak isterseniz ADCON1 yazmacında değişiklik yapmanız gerekmektedir Program ve Kullanıcı RAM Bellek Organizasyonu PIC16F877 de üç bellek bloğu bulunmaktadır. Program ve kullanıcı veri belleği ayrı bus yapısına sahiptir ve aynı anda erişilebilir. F877 de 13 bitlik bir program sayacı vardır ve 8Kx14 Word adreslemeye yeterlidir. Reset vektörü 0x00 da kesme vektörüyse 0x04 de yer almaktadır.

43 35 Şekil 3.11: Program Bellek Haritası Kullanıcı veri belleği birden fazla yazmaç bankasına bölünmüştür. Bu yazmaç bankalarında hem genel amaçlı yazmaçlar hem de özel fonksiyon yazmaçları (SFR) bulunmaktadır. Yazmaç bankasını seçmek için STATUS yazmacındaki RP1 ve RP0 bitleri kullanılmaktadır. F84 de iki yazmaç bankası olduğunu ve yalnızca RP0 bitini ayarlamak suretiyle ilgili yazmaç bankasının seçildiğini hatırlayınız STATUS yazmacı <RP1,RP0> bitlerini aşağıdaki gibi ayarlayarak istediğimiz yazmaç bankasına erişebiliriz. Her yazmaç bankası 128 Byte genişliğindedir (7Fh).

44 36 00: Bank0 01: Bank1 10: Bank2 11: Bank Özel fonksiyonlar Paralel Slave Port TRISE yazmacının PSPMODE bitini 1 yaptığınızda PORTD yi 8 bit genişliğinde mikroişlemci portu olarak kullanabilirsiniz. Bu arada RE0,RE1 ve RE2 yi TRISE ve ADCON1 yazmaçlarında ilgili ayarları yaparak sayısal giriş olarak da tanımlamanız gerekiyor. Böylece harici bir mikro işlemci, RE0,RE1 ve RE2 yi kontrol olarak kullanarak 8 bitlik veri bus ına bağlı 16F877 nin PORTD sine hem veri yazabilir hem de okuyabilir USART USART, yani senkron/asenkron alıcı verici F877 deki iki seri giriş/çıkış modülünden biridir. Seri iletişim arayüzü (SCI: serial comm.interface) olarak da bilinen USART, monitör veya PC gibi aygıtlara tam çift yönlü asenkron bağlantıda kullanılmak üzere konfigüre edilebilmektedir. A/D veya D/A arayüzlerine, seri EEPROM lara yarım çift yönlü senkron bağlantıda kullanılmak üzere de konfigüre edilebilir. USART aşağıdaki gibi konfigüre edilebilmektedir. Asenkron : tam çift yönlü (full duplex) Senkron: Master, yarım çift yönlü (half duplex) Senkron: Slave, yarım çift yönlü

45 37 RC6 verici, RC7 ise alıcı port olarak kullanılmaktadır. RCSTA (0x18) ve TXSTA (0x98) yazmaçları konfigürasyonda kullanılmaktadır Master Synchronous Serial Port (MSSP) MSSP modülü, diğer çevre birimleri veya mikroişlemcilerle seri iletişimde kullanılmaktadır. Bu çevre birimleri seri EEPROM, kaydırmalı yazmaçlar (shift register), gösterge sürücüleri, A/D çeviriciler vb. olabilir. MSSP modülü aynı anda aşağıdaki iki moddan birine konfigüre edilebilir: 1. Serial Peripheral Interface (SPI) RC5: Seri veri çıkışı (SDO: serial data out) RC4: Seri veri girişi (SDI: serial data in) RC3: Seri saat (SCK: serial clock) 2. Inter Integrated Circuit (I 2 C) RC4: Seri veri (SDA: serial data ) RC3: Seri saat (SCK: serial clock) Bu modlardan birine göre konfigüre etmek içinse SSPSTAT (senkron seri port durum yazmacı, 0x94), SSPCON (senkron seri port kontrol yazmacı, 0x14) ve SSPCON2 (senkron seri port kontrol yazmacı 2, 0x91) yazmaçları ayarlanmalıdır Sayısal Çevirici Modülü A/D modülü 16C7x ailesinden farklı olarak 10 bittir. Toplam 8 A/D kanal vardır. F877 nin güzel bir özelliği de işlemci SLEEP modundayken bile A/D çeviricinin geri planda çalışmasıdır. A/D kanalları için RA4 hariç diğer RA portlarını ve RE

46 38 portlarını kullanabilirsiniz. Aşağıdaki yazmaçlar konfigürasyon ve sonuçta kullanılmaktadır. ADRESH 0x1E ; A/D sonuç yazmacı (High register) ADRESL 0x9E ; A/D sonuç yazmacı (Low register) ADCON0 0x1F ; A/D kontrol yazmacı0 ADCON1 0x9F ; A/D kontrol yazmacı Capture/Compare ve PWM Modülü Her capture/compare ve pwm modülü 16 bitlik yakalama(capture) yazmacı, 16 bitlik karşılaştırma(compare) yazmacı veya 16 bitlik PWM(darbe genişlikli modülasyon) yazmacı olarak kullanılabilir. Yakalama modunda, TMR1 yazmacının değeri RC2/CCP1 bacağının durumunda bir gelişme olduğunda CCPR1H:CCPR1L yazmaçlarına yazılır ve PIR1 yazmacının 2.biti olan CCP1IF kesme bayrağı 1 olur. RC2 bacağının durumu, her alçalan kenarda, her yükselen kenarda, her yükselen 4. veya 16.kenarda kontrol edilecek şekilde CCP1CON yazmacı aracılığıyla ayarlanarak konfigüre edilebilir. Karşılaştırma modundaysa CCPR1 yazmacındaki 16 bitlik değer düzenli olarak TMR1 yazmaç değeriyle karşılaştırılır ve bir eşitlik olduğunda RC2/CCP1 bacağı CCP1CON yazmacında yaptığımız ayara göre 1, 0 olur veya durumunu korur.

47 39 PWM modundaysa RC2/CCP1 bacağı 10 bit çözünürlükte darbe genişlik modülasyonlu bir sinyal üretecek şekilde konfigüre edilebilir. PR2 yazmacı darbe genişlik periyodunun tayininde kullanılmaktadır. CCPR1H 0x16 ; Yakalama/karşılaştırma yazmacı (High register) CCPR1L 0x15 ; Yakalama/karşılaştırma yazmacı (Low register) CCP1CON 0x17 ; kontrol yazmacı PR2 0x92 ; PWM çıkış yazmacı TMR1L 0x0E ; TMR1 yazmacı (High register) TMR1H 0x0F ; TMR1 yazmacı (Low register)

48 40 DÖRDÜNCÜ BÖLÜM PIC BASIC PRO 4.1 Picbasic Pro Ve Özellikleri Mikro Engineering Labs firması tarafından PIC mikrodenetleyileri için geliştirilen Pic Basic pro derleyicisinin kullanımı, DOS ve WINDOWS la birlikte gelen QBASIC in kullanımına çok benzemektedir. BASIC programlama dilinin çok kolay öğrenilir olma özelliğinden kaynaklanan ve dünyanın en çok kullanılan kod geliştirme aracı olma yolundadır. Eğer programlama yapabilmek için bilinmesi gereken en temel işlemi, yani akış diyagramı çıkarabilmeyi ve QBASIC ile basit programlar yapabilmeyi bilmemiz, PicBasic pro yu kullanabilmemiz için yeterlidir. Eğer assembly dilini biliyorsanız, PicBasic kullanımının daha basit ve fonksiyonları itibariyle daha işlevsel olduğunu göreceksiniz. Örneğin PIC assembly ile sayfalar yer tutan LCD kontrolü, seri haberleşme veya seri EEPROM veri alışverişi gibi işlemlerin birkaç satırla hallediyor olması sizi oldukça etkileyecektir. PicBasic Pro program diliyle bir program kolayca ve hızlıca yazmak ve araya da assembly diliyle yazılmış program kodlarını serpiştirmek mümkündür. Bu ilave kodları direkt olarak PBP programı içerisine serpiştirilebileceği gibi istenirse harici bir dosya olarak da PBP içerisine dahil edilebilir. PBP, aksi belirtilmediği sürece 4 MHz frekanslı PIC16F84-04/P PICmikrosu ürerinde çalışacak program dosyalarını yaratır. Bu PICmikro yu çalıştırmak için sadece; 4MHz kristal için 2 adet 22pF lık kondansatör, MCLR ucunu pull-up

49 41 yapmak için 4.7K lık bir direnç ve 5V luk uygun bir güç kaynağı yeterlidir. PICbasic Pro ya gerekli bildiriler yapılmak suretiyle, 16F84 haricindekileri ve hatta 4MHz den farklı osilatör frekansında çalışan PICmikro lar için de dosyalar üretebilir. PBP nin PIC16F84 ü varsayılan olarak ele almasının nedeni, bu chip in kullanım kolaylığı ve avantajlarıdır. 4.2 PicBasic Pro ile Kullanılan PICmikro lar PicBasic Pro derleyicisi çok geniş yelpazedeki 8 pin den 68 pin e kadar bacağı olan ve chip üzeri farklı özellikler içeren (A/D konvertör,hardware timer ve seri port) PICmikro ların programlanmasında gerekli olan kodları üretebilmekte kullanılır. PicBasic Pro derleyicisi ile kod üretemeyeceğiniz bazı PICmikro lar vardır. Bunlar ; PIC16C5X serisindeki PIC16C54 ve PIC16C58 dir. Bu PICmikro lar sık kullanılan ve program belleği 14 bit olanlardan olmayıp, eskiden kullanılan ve 12 bitlik PICmikro lardır. 5X serisi ile bacak uyumluluğu olan bir çok PICmikro mevcuttur. PicBasic Pro derleyici ile programlanabilen ve piyasada bulunan PICmikro ları şöyle sıralayabiliriz: PIC16C554, 556, 558, 61, 62(AB), 620(A), 621(A), 622(A), 63(A), 64(A), 65(AB), 66, 67, 71, 710, 711, 715, 72(A), 73(AB), 74(AB), 76, 77, 773, 84, 923, 924; PIC16F83, 84, 873, 874, 876, 877; PIC16C671, 672 ve PIC Bunların dışında Mikrochip in çok büyük bir hızla eklediği yeni PICmikro lar. PicBasic Pro derleyicisini kullanarak genel amaçlı programlar yapmak için seçilen en uygun PICmikro PIC16F84, PIC16F84A dır. 18 pinli bu mikrodenetleyicilerde flash (veya EEPROM) teknolojisi kullanılması nedeniyle kolayca silinebilmesi, çok hızlı program geliştirmeyi sağlar. Silme yazma işlemi programlayıcı yazılımındaki

50 42 bir butona Mouse ile tıklanarak çok kısa zamanda yapılabilir. Silme ve yazma işlemini defalarca (yaklaşık 1000 defa ) yapmak mümkündür. 12C67X, 16C55X, 16C7XX ve 16C9XX serisi PICmikro lar sadece bir defa programlanabilirler (One-Time-programmable-OTP). Chip üzerinde cam penceresi bulunanların silinmesi ise ultraviolet ışınları altında dk. lık bir zaman alır. PIC16F84 ayrıca 64 byte lık bir veri belleğine sahiptir (EEPROM). Programda kullanılacak dataları veya bazı parametreleri saklamak amacıyla kullanılan bu bellek chip in enerjisi kesilse bile silinmez. Bu data belleğe PicBasic Pro nun READ ve WRİTE komutları kullanılarak erişilebilir. Program kodlarının yazıldığı bellek alanı bu data belleğinden farklı bir alandadır ve burada ki kodlar da enerji kesildiğinde silinmezler. PIC programlamayı öğrenmek için ilk olarak 16F84 ü kullanmanız, program hatalarını bulmada ki hızınızı artıracaktır. Çünkü bu mikrodenetleyiciye defalarca program yazma ve silme olanağı vardır. 4.3 Picbasic Pro Derleyicisinin Kullanılışı PicBasic Pro derleyicisi DOS komut satırından aşağıdaki formatta yazılarak çalıştırılır; PBP Seçenek dosya_adı PBP tanımlanan dosyayı bir veya daha fazla seçeneğin belirlediği şartlarla derler. İstenirse hiçbir seçenek kullanılmayabilir. Seçenek (-) veya düz slash(/) konularak yazılır. veya / işaretinden sonra yazılan karakter seçeneğin ne olduğunu belirler. Birden fazla seçenek kullanmak gerektiğinde arada bir boşluk bırakıldıktan sonra ilave seçeneklerin önüne yine - veya / yazılmalıdır. Boşluk bırakılmadan yazılan seçeneklerde tek seçenek kullanılmış gibi algılanır.

51 43 Örneğin birden fazla seçenek kullanıldığında aşağıdaki komut satırında olduğu gibi yazılmalıdır. PBP p16c71 ampasm yakson Bu durumda derleme şöyle yapılır. YAKSON.BAS dosyası MPASM derleyicisi kullanılarak ve PIC16C71 mikrodenetleyicisi hedef alınarak derlenir. PBP den sonra kullanılan ilk kelimenin önüne - işareti konulmaz ise dosya adı olarak algılanır. Dosya adından sonra.bas uzantısı konulmadığında kabul edilen uzantı.bas tır. Eğer bir path (yol) belirtilmişse dosya belirlenen klasör içinde aranır. Eğer derlenme hatasız yapıldı ise, PBP nin assembler i olan PM.EXE yi otomatik olarak devreye sokar. PicBasic Pro, PM.EXE dosyasını PBP.EXE ile aynı dizin içerisinde olduğunu varsayar. Bu nedenle program dosyaları kaydedilirken buna dikkat edilmelidir. Eğer S seçeneği kullanıldıysa veya derleme esnasında hatalar bulunduysa PM.EXE assembler programı devreye sokulmaz Komut Satırı Seçenekleri A Seçeneği PBP, Mikrochip in MPASM derleyicisini veya PicBasic Pro derleyicisi olan PM yi kullanabilir. Aksi belirtilmedikçe otomatik olarak PM derleyicisi çalıştırılır. Eğer MPASM derleyicisi kullanılmak isteniyorsa komut satırında aşağıdaki örnekte olduğu gibi yazılmalıdır. PBP -ampasm dosya_adı

52 C seçeneği -C seçeneği assembly kaynak dosyası içerisinde PicBasic Pro kaynak dosyalarını açıklama satırları olarak yazılmasını sağlar. PicBasic Pro komutlarının yanına assembly komutlarının yazılması, PIC assembly PicBasic Pro ya daha kolay geçiş yapabilmeleri yada hata arama esnasında kolaylık olması bakımından çok yararlıdır. Yazılış biçimi aşağıdaki gibidir. PBP -C dosya_adı H veya -? Seçeneği -H veya -? Seçeneği PBP nin yardım ekranının gösterilmesini sağlar. Bu ekran ayrıca herhangi bir seçenek veya dosya adı yazılmadan direkt olarak PBP yazıp entere basınca da gösterilir I seçeneği -I seçeneği PicBasic Pro tarafından kullanılacak olan dosyaları program içerisine dahil edebilmek amacıyla yol belirlemek için kullanılır L seçeneği -L seçeneği PicBasic Pro tarafından kullanılan kütüphane dosyalarını seçmenize olanak sağlar. Her bir mikro denetleyici için oluşturulan konfigürasyon dosyası içerisine varsayılan kütüphane dosyası tanımlandıysa genellikle bu seçeneği kullanmak gerekmez. PBP -Ipbpps2 dosya_adı

53 45 Bu örnek, PBP ye Picstic2 kütüphane dosyasını kullanarak derleme yapmasını söyler O seçeneği -O seçeneği bu harfi takiben yazılan harfle birlikte kullanılır. İkinci harf assembler a komut satırı seçeneği gibi işlem gördürür. PM assembler dilinin bazı seçenekleri şunlardır. Çizelge 4.1: PM Assembler Dili Seçenekleri PM seçeneği OD OL Açıklama List dosyası, sembol tablosu ve map dosyası oluştur. Sadece list dosyası oluştur. PBP OL dosya_adı Bu örnek, PBP ye başarılı bir derlemeden sonra dosya_adı.lst adında bir dosya üretmesini söyler. Assembler a birden fazla O seçeneği ile farklı işlem yaptırılabilir P seçeneği Farklı bir şey belirtilmediyse, PBP programları PIC16F84 için derler. Eğer programın farklı bir mikrodenetleyici için derlenmesi isteniyorsa PICmicro nun adı P seçeneğinden sonra yazılmalıdır. Örneğin program PIC16C74 PICmikro sunda çalıştırılacaksa komut satırına aşağıdaki gibi yazılır. PBP P16C74 Dosya_adı

54 S seçeneği PBP normal olarak bir programı başarılı olarak derledikten sonra otomatik olarak assembler programını devreye sokar. Assembler programı PBP nin ürettiği.asm dosyasını ele alır ve.hex uzantılı makine diline çevirir. S seçeneği kullanıldığında assembler programının çalıştırılması engellenerek sadece PBP nin ürettiği.asm dosyası elde edilir. Yazılışı şöyledir. PBP S Dosya_adı V seçeneği -V seçeneği programın derlenmesi esnasında daha fazla bilgi verilmesini sağlar. PBP -V Dosya_adı 4.4 Picbasic Pro Temel Kavramlar Tanımlayıcılar Tanımlayıcılar, değişken adı ve satır etiketlerini tanımlamakta kullanılan programcının verdiği isimlerdir. Tanımlayıcılar harflerden, rakamlardan ve alt çizgilerden ( _ ) oluşabilir. Ancak bir rakamla başlayamazlar. Bir tanımlayıcı da küçük harf, büyük harf duyarlılığı yoktur. Yani etiket adında bir tanımlayıcıyla ETIKET tanılayıcısı arasında PBP açısından herhangi bir fark yoktur. Etiketlerde kullanılan karakter sayısında herhangi bir sınır olmamasına rağmen PBP sadece ilk 32 karakteri algılar.

55 Satır Etiketi Bazı eski BASIC dillerinde olduğu gibi her satır için bir satır numarası kullanılmadığından GOTO ve GOSUB komutlarıyla programın dallanması istenen yere gidebilmesi için referans satırı gereklidir. Etiketler bu referans satırının yerini belirlemek için kullanılır. Etiket tanımlayıcılarından sonra muhakkak iki nokta üst üste ( : ) yazılmalıdır. Aşağıdaki örnekte etiket tanımlayıcısının adı LCD_gönder LCD_gönder : Serout 0,N2400, [ Merhaba, dünya!,13,10] Goto LCD_gönder Değişkenler Değişkenler, PicBasic Pro programları içerisinde geçici olarak veri saklamaya yarar. VAR anahtar sözcüğü kullanılarak oluşturulurlar. Değişkenler bit, byte veya word tipinde tanımlanabilirler. Tanımlanan tipe göre mikro denetleyicinin RAM ı içersinde yeterli genişlik PBP tarafından otomatik olarak ayarlanır. Bir değişken adı tanımlama formatı aşağıdaki gibidir. Değişken_adı VAR tip{.alt_eleman} Değişken_adı, programcının seçtiği herhangi bir tanımlayıcı olabilir. Ancak anahtar kelime PBP komutlarından birisi olamaz. Alt_eleman kullanımı isteğe bağlıdır. Tip olarak BIT, BYTE veya WORD kelimeleri kullanılır. Aşağıda değişken adı oluşturmaya birkaç örnek verilmiştir. Gecikme VAR byte Saga_don VAR bit Dur VAR word

56 Alias lar (Bir Değişkene Başka Bir İsim Vermek) Bazen bir değişkene başka bir isim vermek gerekebilir. Bu isimlere alias adı verilir. Alias kullanmak bir değişkenin alt_elemanlarını tanımlayarak onlara erişimde kolaylık sağlar. Count VAR sayac b0 VAR W0.byte0 b1 VAR W0.byte1 ilk VAR sayac.0 count, sayac değişkenine verilen başka bir addır b0, W0 kelimesinin (word) ilk byte ıdır. (byte0alt_elemandır.) b1, W0 kelimesinin ikinci byte ıdır (byte0 alt_elemandır.) ilk, sayac ın 0. bit idir Dizi Değişkenler (Arrays) Array değişkenler, normal değişkenin oluşturulmasına benzer biçimde aşağıdaki formatta oluşturulurlar. Değişken_adı VAR tip[eleman_sayısı] Değişken adı, programcının seçtiği ve tanımlayıcı belirleme kurallarına uygun olarak oluşturulmuş bir isimdir. Tip olarak BIT, BYTE veya WORD kullanılabilir. Eleman sayısı ile dizi değişkenin kaç elemandan oluşacağı belirlenir. Aşağıda dizi değişken oluşturmaya birkaç örnek görülmektedir. Oku VAR byte[14] Sinyalsayisi VAR bit[8] Dizi değişkenin ilk elemanının indisi 0 (sıfır) dır. Yukarıdaki oku dizi değişkeninin elemanları oku[0] dan oku[13] e kadardır. Toplam 14 eleman vardır.

57 49 Mikro denetleyicilerdeki RAM ın sınırlı oluşu nedeniyle her bir tip için aşağıdaki sınırlamalar vardır Sabitler Sabit isimleri de değişken isimlerine benzer bir biçimde tanımlanır.tek farkla, VAR yerine CON anahtar kelimesi kullanılır.program içerisine sabit değerleri yazmak yerine önceden tanımlı sabit ismini kullanmak iyi programcılık açısından yararlıdır. Bir sabit ismin içerisine program içerisinde değer atanmaz. Sabit ismi tanımlama aşağıdaki gibidir. Çizelge 4.2: Veri tiplerine göre array eleman sayıları Tip Maksimum eleman sayısı BIT 128 BYTE 64 WORD 32 Sabit_ismi CON sabit_sayı Sabit sayı oluşturmaya örnekler; Adres CON 3 Satir CON adres* Semboller Sembol, değişken veya sabit isimlerine alias adı vermenin başka bir yoludur. Sembol ile sabit yada değişken adı oluşturulmaz sadece başka bir isim vermek için kullanılır.

58 50 SYMBOL read=oku SYMBOL adres=1 oku değişkeni daha önceden VAR kullanılarak tanımlanmış olması gerekir adres CON 1 tanımın aynısıdır Sayısal Sabitler PBP de sayısal sabitler üç şekilde tanımlanabilir; ondalık, binary ve heksadesimal. Binary sayılar tanımlanırken önüne % işareti,heksadesimal sayıları tanımlanırken $ işareti konulur. Ondalık sayılar PBP de kabul edilen sayı biçimidir ve herhangi ön işaret gerekmez ondalık sayısı %100 4 sayısının binary gösterilişi $ sayısının heksadesimal gösterilişi Çift tırnak içerisine yazılan bir karakter ASCII kodu karşılığına çevrilir.tırnak içerisindeki karakter birden fazla olduğunda string sabit olarak ele alınır. A d 65 sayısının ASCII değeridir. 100 sayısının ASCII değeridir String sabitler PBP nin string sabit işleme yeteneği yoktur. Fakat bazı komutlarda kullanılabilirler. Bir string sabit bir veya daha fazla karakterin çift tırnak içerisine yazılmış biçimidir. Merhaba M, e, r, h, a, b, a karakterlerinin kısaltılmış biçimidir. PBP de bir string içerisindeki karakterlerin her biri ayrı birer karakter sabit olarak ele alınır.

59 Pinler Mikro denetleyici pinlerine erişmek ve kullanmak için birkaç farklı yol vardır. Bir programda pin i tanımlamak için kullanılacak en kolay yöntem port adını ve bit numarasını birlikte kullanmaktır. PORTB.1=1 PORTB nin 1 nolu ucunu 1 yap Pin in ne amaçla kullanıldığını hatırlamayı kolaylaştırmak amacıyla VAR komutuyla bir isim atamak gerekir. Bumdan sonra herhangi bir işlemde, bu isim kullanılabilir. Led VAR PORTA.0 High Led PORTA nın 0. pin ini led olarak adlandır. led i (PORTA.0) high yap Açıklama satırı REM yada tek tırnak ( ) ile başlayan tüm PBP satırları açıklama satırları olarak algılanır. REM veya ( ) takip eden karakterler derlenmez. Tek başına yazılan REM geçerli değildir Bir Satıra Birden Fazla Komut Yazmak Uzun programlarda satır sayısını azaltmak veya birbiri ile ilgili komutları gruplamak amacıyla bir satıra birden fazla komut yazılabilir. Bu durumda komutlar arasına iki nokta üst üste (:) konulmalıdır. Aşağıdaki örnekler birbirinin aynısıdır. W2 = W0 W0 = W1 W1 = W2 İle aşağıdaki satırlar aynıdır. W2 = W0 : W0 = W1 : W1 = W2

60 52 İkinci örnekte satır sayısı azalmasına rağmen derleme sonunda üretilen makine dili komut sayısında herhangi bir azalma olmaz Satır Devam Ettirme Karakteri PBP de bir satıra yazılabilecek en fazla karakter sayısı 256 dır. Daha uzun satırlar alt ( _ ) karakteri kullanılarak alt satıra devam etmeyi sağlar. BRANCH B0, [ Etiket0, etiket1, etiket2, etiket3, Etiket4, etiket5 ] INCLUDE Komutu ile Dosya Dahil Etmek INCLUDE komutu kullanılarak bir PBP programı içerisine başka BASIC kaynak dosyaları eklenebilir. Standart hale gelmiş bazı alt programları tanımlamaları veya başka bir program dosyalarını ana programımızdan ayrı bir yerde saklamak isteyebilirsiniz. Bu durumda bu program kodlarını kendi programımız içerisinde yazmak zorunda kalmadan sadece gerekli olduklarında INCLUDE komutu kullanarak programa dahil edebilirsiniz. INCLUDE dosyaları derlenmemiştir, yani.bas uzantılı kaynak dosyalardır. INCLUDE komutundan hemen sonra yazılan dosyadaki program kodları oraya yazılmış gibi işlem görür. INCLUDE modedefs.bas DEFINE komutu Clock osilatör frekansı ve LCD pin yerleşimi gibi bazı elemanlar PBP içerisinde tanımlıdır. DEFINE komutu istenirse bu tanımlamaların değiştirilmesini sağlar. Önceden tanımlı olan clock osilatörü değerinin değiştirilmesi, DEBUG pin lerinin ve boud rate ve LCD pin yerleşiminin değiştirilmesi gibi işlemler DEFINE ile

61 53 değiştirilebileceklerinden bazılarıdır. DEFINE ile yapılan tanımlamaların hepsi büyük harfle yazılmalıdır. DEFINE BUTTON_PAUSE 10 Buton arkı söndürme gecikmesi(ms) DEFINE CHAR_PACING 1000 Seraut karakter gönderme gecikmesi (Ms) DEFINE DEBUG_REG PORTB Debug pini PORTB de DEFINE DEBUG_BIT 0 Debug Pini 0. bit DEFINE DEBUG_BAUD 2400 Debug baud rate 2400 DEFINE DEBUG_MODE 12 Debug modu: 0=true(doğru) 1=inverted (terslenmiş) DEFINE DEBUG_PACING 1000 Debug karekter gönderme Gecikmesi (Ms) DEFINE HSER_BAUD 2400 Debug baud rate 2400 DEFINE HSER_RCSTA 90h rcv registeri kur DEFINE HSER_ 20h transmit registeri kur DEFINE HSER_EVEN 1 Sadece çift parity istendiğinde kullanılır DEFINE HSER_ODD 1 Sadece tek parity istendiğinde kullanılır DEFINE I2C_INTERNAL 1 16CExxx ve 12CExxx üzerindeki dahil EEPROM u kullanmak için DEFINE I2C_SLOW 1 standart hızlı EEPROM u 8 MHz den fazla olan osilatörlerle kullan DEFINE LCD_DREG PORTA LCD data portunu belirler DEFINE LCD_BIT 0 LCD data başlangıç bit i (0veya4) DEFINE LCD_RSEG PORTA LCD registeri portu seçer. DEFINE LCD_RSBIT 4 LCD registeri bitini seçer DEFINE LCD_EREG PORTB LCD enable portu DEFINE LCD_EBIT 3 LCD enable biti DEFINE LCD_BITS 4 LCD data yolu biti (4 veya 8 ) DEFINE LCD_LINES 2 LCD deki satır sayısı DEFINE OSC4 4 3, 4, 8, 10, 12, 16 veya 20 DEFINE OSCCAL_1K 1 OSCCAL ı PIC12C671 için kur DEFINE OSCCAL_2K 1 OSCCAL I PIC16C672 için kur

62 Aritmetik Operatörler Aritmetik işlemler diğer BASIC dillerinde olduğu gibi hiyerarşik bir düzene göre yapılır. İşlem operatörlerinin birbirine göre önceliği vardır. Örneğin çarpma ve bölme işlemleri toplama ve çıkarmadan önce yapılır. İşlem önceliğini kendi istediğiniz sıraya göre yapmak istediğiniz sıraya göre yapmak istediğinizde işlemleri gruplamak için parantez içine alınız. A= (B+C)*(D-E) Burada önce parantez içindeki toplama ve çıkarma işlemleri yapılır, daha sonra çarpma işlemi yapılır. Aritmetik işlemlerde işlem önceliği aşağıdaki sıraya göredir: ( ) parantez içindeki ifadeler * çarpma / bölme + toplama - çıkarma Çarpma PBP, 16x16 bit lik çarpma yapar. * operatörü çarpma sonunda elde edilen 32 bitlik sonucun alt 16 bitini elde eder. Bu işlem çoğu programlama dillerindeki tipik çarpma işlemidir. ** operatörü ise 32 bit lik sonucun üst 16 bitini ifade eder. 16x16 bitlik çarpma sonucunda elde edilen 32 bitlik sonucun hem alt hem de üst 16 bitini elde etmek için bu iki operatör birlikte kullanılır. W1 =W0 * 1000 W0 ın içindeki sayıyı 1000 ile çarpar, elde edilen sonucun alt 16 bitini W1 in içine yerleştirir.

63 55 W2 =W0 * 1000 W0 ın içindeki sayıyı 1000 ile çarpar, elde edilen sonucun üst 16 bitini W2 in içine yerleştirir. */ operatörü 32 bitlik sonucun ortasındaki 16 biti elde eder. W3 =W0 */ 1000 W1 le W0 ı çarpar, elde edilen 32bitlik sonucun ortasındaki 16 biti W3 içine İçerisine yerleştirir Bölme PBP, 16 bitlik bölme yapar. / operatörü 16 bitlik bölme sonucunu elde eder. // operatörü ise bölme sonucunda kalanı bulur. Buna bazen bir sayının modülünü de denir. W1 = W0 / 1000 W2 = W0 // 1000 W0 ı 1000 e böler ve sonucu W1 e yerleştirir. W0 ı 1000 e böler ve kalanı W2 ye yerleştirir Shift (Kaydırma) << ve >> operatörü bir sayıyı sağa ve sola kaydırırlar. 16 bitlik bir saykı1-15 defa kaydırılabilir. Kaydırılmış bitlerin değeri sıfırdır. B0 = B0 << 3 W1 = W0 >> 1 B0 içindeki sayı 3 pozisyon sola kaydırılır ve sonuç B0 a yerleştirilir.(0,1 ve 2. bitler 0 değerini alır.) W1 içindeki sayı 1 pozisyon sağa kaydırılır ve sonuç W1 içerisine yerleştirilir. ( 15. bit 0 değerini alır.) ABS ABS bir sayının mutlak (işaretsiz) değerini elde eder. Bir byte lık sayı eğer 127 den büyükse (en soldaki bit1), 256 sayı değeri elde edilir. Eğer bir Word

64 56 (2 Byte) luk sayı den büyükse (en soldaki bit 1), sayı değeri elde edilir. B1 = ABS B0 B0 sayısının mutlak değerini B1 içerisine yazar COS COS komutu bir raydan cinsinden verilen bir açının kosinüsünü bulur. Elde edilen sonuç 8 bittir ve ikinin tamamlayıcısı formundadır. (örneğin -127,127 şeklindedir.) COS komutu sonucu bulmak için bir lookup tablosu kullanılır derecelik bilinen açıların karşılığı, arasındaki binary sayılarla gösterilir. B1 = COS B0 B0 içerisindeki sayının kosinüsünü B1 içerisine yerleştirir DCD DCD, 8 veya 16 bitlik binary bir sayı üzerinde istenilen bir bitin değerini 1 yapar. Diğer bitlerin değeri 0 olur. Bit numaraları 0-15 sayılardan birisi olabilir. B0 = DCD 4 B0 içerisine & sayısını yerleştirir DIG DIG komutu decimal bir sayının istenilen bir bitini elde etmeye yarar. Decimal sayının en sağdaki rakam, 0 ıncı rakamdır. B0 =123 B1 = B0 DIG 1 B0 içerisine 123 decimal sayısını atar. B1 in içerisine 2 sayısını (123 ün 1. rakamı ) atar.

65 MAX ve MİN Komutları MAX ve MİN, iki sayıdan büyük olanı yada küçük olanı bulmaya yarar. Bu komutlar genellikle bir sayıya alt ve üst sınır kullanılmak için kullanılır. B1 = B0 MAX 100 B1 = B0 MİN 100 B0 ve 100 arasında hangisi büyükse onu B1 içerisine atar. (B1, arasında bir sayı olacaktır.) B0 ve 100 arasında hangisi küçükse onu B1 içerisine atar. (B1, 100 den küçük olamaz.) NCD Komutu NCD, binary bir sayının içersinde en soldaki 1 in sırası kaç ise bu sayıyı elde eder. Binary sayının ilk rakamı birinci sıradadır. Son rakamı 16. sıradadır. Eğer 1 olan hiçbir dijit yoksa elde edilen sayı 0 dır. B0 = NCD % sayısı B0 a atanır REV Komutu REV, binary bir sayının içerisinde belirlenen bir bit ten daha sağa doğru olan tüm bitlerin tersini alır. Bitler en düşük değerli bitten en yüksek değerli bite doğru 1 den 16 ya kadar numaralandırılmıştır. B0 = REV 4 B0 ın içerisine % i atar SIN Komutu SIN komutu bir raydan cinsinden verilen bir açının sinüsünü bulur. Elde edilen sonuç 8 bittir ve ikinin tamamlayıcısı formundadır. (örneğin -127, 127 şeklindedir.) SIN komutu sonucu bulmak için bir lookup tablosu kullanılır.

66 derecelik bilinen açıların karşılığı, arasındaki binary sayılarla gösterilir. B1 = SIN B0 B0 içerisindeki sayının sinüsünü B1 içerisine yerleştirir SQR Komutu SQR komutu, bir sayının karekökünü elde eder. PBP sadece tam sayıları işleyebileceğinden elde edilen sonuç 8 bittir. B0 =SQR W1 W1 in karekökünü B0 a atar Bit Yönlendirme Operatörleri Bit yönlendirme operatörleri, bir binary sayı içerisinde istenilen bir biti maskeleme yapmak veya bir bitini değiştirmek için kullanılır. B0 =B0 & % B0 =B0 % B0 =B0 ^ % B0 ın 0. bitini maskeler. B0 ın 0. bitini 1 yapar B0 ın 0. bitini tersine çevirir.

67 Pıcbasıc Pro Komut Seti Çizelge 4.3: PicBasic Pro Komutları ASM..ENDASM BRANCH BRANCHL BUTTON CALL CLEAR COUNT DATA DEBUG DISABLE DTMFOUT EEPROM ENABLE END FOR..NEXT FREQOUT GOSUB GOTO HIGH HSERIN Açıklama Bir satırlık assembly komutu PBP içerisine yazılır. Birden fazla assembly satırı PBP içerisine yazılır. Koşullu GOTO komutu (ON.. GOTO komutu benzeri) Koşullu GOTO komutu (2K lık bellek dışına çıkıldığında) Belirlenen bir pinden bir giriş almak için kullanılır. Assembly dili alt programını çağırır. Tüm değişkenlerin içeriğini sıfırlar. Bir pinden gelen pals sayısını sayar. On-chip EEPROM belleğin içerisine sabit değer yazar. Sabit bir pin ve baud da asenkron seri çıkışı sağlar. INTERRUPT kesmelerini geçersiz yapar. Bir pinden telefon tuşu ton seslerini üretir. On-chip EEPROM belleğin içerisine veri yazar. INTERRUPT kesmelerini geçerli yapar. Programı durdurup ve düşük güç moduna geçirir. Komut grubunu istenilen sayıda tekrar eder. Bir pinden iki farklı frekans üretir. Bir PBP alt programını çağırır. Belirlenen bir etikete dallanmayı sağlar. Belirlenen bir pin çıkışını high (1) yapar. Donanımı seri iletişimi destekleyen cihazlardan

68 60 HSEROUT I2CREAD I2CWRITE IF..THEN..ELSE..ENDIF INPUT {LET} LCDOUT LOOKDOWN LOOKDOWN2 LOOKUP LOOKUP2 LOW NAP ON INTERRUPT OUTPUT PAUSE PAUSEUS PEEK POKE POT (USART) seri olarak veri almak için kullanılır. Donanımı seri iletişimi destekleyen cihazlara seri olarak veri göndermek için. Bir seri EEPROM bellekten bir byte lık veriyi seri olarak okur. Bir seri EEPROM belleğe bir byte lık veriyi seri olarak yazar. Bir koşula bağlı olarak farklı komut veya komut grupları çalıştırmak için kullanılır. Bir pini giriş yönünde yönlendirir. Bir ifadenin sonucunu değişkene atar. (Kullanımı isteğe bağlıdır.) Bir LCD ye 4 bit veya 8 bit ile karakter gönderir. Bir değer tablosundan sabit bir değer araştırmak için kullanılır. Bir değer tablosundan sabit/değişken araştırmak için kullanılır. Bir değer tablosundan sabit değer almak için kullanılır. Bir değer tablosundan sabit/değişken almak için kullanılır. Bir pin çıkışını LOW(0) yapar. İşlemciyi kısa süreyle durdurur. Bir interrupt (kesme) oluştuğunda interrupt alt programın çağrılmasını sağlar. Bir pini çıkışa yönlendirir. İstenilen bir zaman süresinde gecikme yapar. İstenilen bir zaman süresinde gecikme yapar. Bir registerden 1 byte lık veri okur. Bir registere 1 byte lık veri yazılır. Belirlenen bir pindeki potansiyometreyi okur.

69 61 PULSIN Bir pindeki pals genişliğini ölçer. PULSOUT Bir pinden istenilen uzunlukta palsler üretilir. PWM Bir pinden PWM palsleri üretir. RANDOM Bir değişken içerisine arasında rastgele sayılar üretir. RCTIME Bir pindeki pals genişliğini ölçer. READ On-chip EEPROM bellekten 1 Byte lık veri okur. RESUME INTERRUPT alt programı bittikten sonra programı kaldığı yerden devam ettirir. RETURN Programı en son kullanılan GOSUB komutundan sonraki komuttan itibaren devam ettirir. REVERSE Bir pinin giriş/çıkış yönlendirmesini tersine çevirir. Giriş olan Pinler çıkışa yönlenir. SERIN Asenkron seri giriş komutu (BS1 stilinde) SERIN2 Asenkron seri giriş komutu (BS2 stilinde) SEROUT Asenkron seri çıkış komutu (BS1 stilinde) SEROUT2 Asenkron seri çıkış komutu (BS2 stilinde) SHIFTIN Senkron seri giriş komutu SHIFTOUT Senkron seri çıkış komutu SLEEP İşlemciyi belirlenen bir süre ile düşük güç moduna sokar. SOUND Belirlenen bir pinden istenilen tonda ses üretir. STOP Programın çalışmasını durdurur. SWAP İki değişken içerisindeki değerleri değiştirir. TOGGLE Bir pini çıkışa yönlendirir ve toggle pals üretir. Yani pinin konumu 1 ise 0 yapar. WHİLE..WEND Bir koşul doğru (true) olduğu sürece bir grup komutu tekrarlar. WRITE On-chip EEPROM belleğe 1 byte lık veri yazar.

70 Port Giriş / Çikiş İşlemleri Bir PIC mikrodenetleyicinin temel fonksiyonlarında ilki, girişine uygulanan bir veriyi okumaktır. Giriş pininden okunan sinyali RAM bellekteki program aracılığı ile değerlendirilip, çıkış pinleri vasıtasıyla dışarı göndermek ise ikinci önemli fonksiyondur. Giriş pinindeki veri bir anahtar, sensör veya başka bir elektronik devreden alınabilir. Çıkış pinine gönderilen veri ise bir LED, röle veya başka bir elektronik devreyi sürebilir. Bir pindeki veriyi okuyup değerlendirdikten sonra çıkış pinine göndermek için kullanılan bir çok komut vardır. Bu bölümde giriş komutları olan button ve peek komutlarını, çıkış komutu olarak da poke, low, high komutlarının kullanışını göreceğiz Button Komutu Dizilimi : BUTTON Pin, Bas, Gecikme, Oto_Tekrar, Değişken, İşlev, Etiket Bir pini okumak için kullanılır. İsteğe bağlı olarak ark söndürme ve otomatik tekrar yaptırılabilir. Komut çalıştırılınca pin otomatikman giriş olarak yönlenir. Pin : Okunacak olan pin BUTTON komutundan hemen sonra yazılır. Pin 0-15 arasında bir sabit, 0-15 sayılarını içeren bir değişken. Bas: Butona basıldığında pinin durumu (0 veya 1). Bu değer pull-up yapılmış butonlarda 0, pull-down yapılmış butonlarda ise 1 olarak verilir. Gecikme: Otomatik komut tekrarı yapılmadan önce kaç saykıl gecikme yapılacağı burada belirlenir. Bu sayı arasında olabilir. 0 sa ark söndürme gecikmesi ve otomatik tekrar gecikmesi oluşmaz. 255 ise ark söndürme gecikmesi olur ve otomatik tekrar geciktirmez.

71 63 Oto-Tekrar: Butona devamlı basıldığında komutun otomatik olarak tekrar edilmesi için gerekli olan gecikme süresi. Bu değer arasında olabilir. Değişken: Gecikme veya tekrar işlemleri için kullanılan byte tipinde dahili bir sayıcı değişkenidir. Komutu her çalışmasından önce bu değişken sıfırlanmalıdır. İşlev: Etikete dallanma işlevinin gerçekleşebilmesi için butonun durumu (0 sa basılmamış, 1 se basılmış). Etiket: Buton işlev ile belirtilen değeri alması halinde program bu etikete dallanır. Örnek: BUTTON PORTB. 2, 0, 100, 10, B2, 0, Dongu Eğer pindeki butona basılmamışsa dongu etiketine dallan BUTTON komutunun otomatik olarak tekrar edilmesini sağlamak için bir döngü içerisinde kullanılmalıdır. BUTTON komutu butona basıldığında meydana gelen arkın sönüp, normal seviyeye gelmesini beklemek için program akışını birkaç milisaniyelik gecikme gerçekleştirilir. Varsayılan gecikme süresi 10mS dir. Bu süreyi değiştirmek için DEFINE komutunu kullanınız. Define BUTTON_PAUSE 50 ark söndürme gecikmesini 50 ms ye kurar. BUTTON_PAUSE kelimesinin büyük harfle aynen yazılması gerektiğini unutmayınız.genellikle bir pinin durumunu kolayca okumak için IF..THEN komutu kullanmak BUTTON komutunu kullanmaktan daha uygundur. İf PORTB.2 = 1 then dongu PORTB nin 2. biti 1 se dongu etiketine dallan

72 Goto Komutu Dizilimi: GOTO Etiket Programın akışı etiket ile belirlenen yerdeki komuttan itibaren devam etmeye başlar. Örnek: Goto Gonder gonder: Serout 0, N2400,[ Merhaba ] Gönder etiketine git Pin0 dan Merhaba karakterinigönder End Komutu Dizilimi: END Programın çalışmasını durdurup düşük güç moduna geçmek için kullanılır. Tüm pinlerin lojik seviyesi o andaki değerde kalır. END komutu, sleep komutunun bir döngü içerisinde devamlı olarak çalıştırılması prensibine göre çalışır. Her programın sonunda bir END, STOP veya GOTO komutu yer almalıdır. Aksi halde programın bitmesi gereken adresten sonra çalışmaya devam etmesi engellenemez {LET} Komutu Dizilimi : {LET} Değişken = Değer Bir değişkenin içerisine değer atamak için kullanılır. Değer olarak bir sabit, başka bir değişken veya bir aritmetik ifade yazılabilir. LET komutunun kullanılması isteğe bağlıdır.

73 65 Örnek : LET B0=B1*B2+3 B0 = Sqr W TOGGLE Komutu Dizilimi : TOGGLE Pin Tanımlanan pinin lojik seviyesini tersler. Pin otomatik olarak çıkış olur. Pin 0-15 arasında bir sayı, 0-15 sayısını içeren değişken yad pin adı olabilir. Örnek: LOW PortB.0 PotrB nin 0. bitni Low (0) yap TOGGLE PortB.0 PortB nin 0. pin seviyesini tersle yani 1 yap POKE Komutu Dizilimi: POKE Adres, Değer Belirlenen adresteki mikrodenetleyicinin registerine değer yazmak için kullanılır. A/D dönüştürücü gibi farklı özellikleri bulunan PICmikroların veya ilave I/O portlarına (PORTC,PORTD, gibi) POKE komutu kullanarak veri yazılabilir. Örnek : POKE $85, 0 Heksadesimal adres 85 de bulunan TRISA ya 0 yaz. (PORTA nın tüm pinleri çıkış olur.)

74 PEEK Komutu Dizilimi: PEEK Adres, Değişken Belirtilen adresteki mikrodenetleyici registerini okur ve sonucu değişken içerisinde saklar. A/D dönüştürücü ve ilave I/O portları gibi bazı özellikleri olan PICmikrolarda portlar PEEK komutu kullanılarak okunur. PEEK ve POKE bir PICmikronun registerlerinin tamamına direkt olarak erişimini sağlar. Bu registerler PORTA,PORTB,PORTC,PORTD,PORTE ve bu portların TRIS registerleridir. PEEK ve POKE bir registerin içerisindeki tüm bitleri başka bir deyişle bir byte ın tamamı üzerinde çalışır. POKE komutuyla PORTA ya veri gönderildiğinde portun sadece bir biti değil tamamı değiştirilebilir. Örnek : PEEK PORTA, B0 PORTA pinlerindeki veriyi B0 değişkeninde saklar INPUT Komutu Dizilimi: INPUT Pin İstenilen bir pini giriş olarak yönlendirmek için kullanılır. Pin 0-15 arasında sabit bir sayı, 0-15 arasındaki sayıları içeren bir değişken veya bir pin adı olabilir. Örnek: INPUT 0 Pin0 ı giriş yap INPUT PORTA.0 PORTA nın 0. pinini giriş yap

75 OUTPUT Komutu Dizilimi: OUTPUT Pin Belirlenen bir pini çıkış yapar. Pin 0-15 arasında bir sabit veya 0-15 arasındaki sayıları içeren değişken yada pin adı olabilir. Örnek: OUTPUT 0 OUTPUT PORTA.0 Pin0 ı çıkış yap PORTA nın 0. pinini çıkış yap LOW Komutu Dizilimi: LOW Pin Belirlenen bir pini (low = düşük ) 0V yapar. Pin otomatik olarak çıkış olur. Pin 0-15 arasında bir sabit veya 0-15 sayılarını içeren değişken yada pin adı olabilir. Örnek: LOW 0 Pin0 ı çıkış yap ve 0 V a kur. LOW PORTA.0 PORTA nın 0. pinini çıkış yap, 0V a gönder Led Var PORTB.0 LED bağlı pini tanımla LOW Led LED pinini çıkış yap ve 0 V a kur HIGH Komutu Dizilimi: HIGH Pin Belirlenen bir pini (high=yüksek) 5V yapar. Pin otomatik olarak çıkış olur. Pin, 0-15 arasında sabit bir sayı, 0-15 arasındaki sayıları içeren bir değişken yada pin adı olabilir.

76 68 Örnek: HIGH 0 Pin0 ı çıkış olarak yönlendirir ve 5V yap HIGH PORTA.0 PORTA nın 0.bitini çıkış olarak yönlendirir ve 5V yap Led Var PORTB.0 PORTB nin 0. bitini led olarak tanımla HIGH Led Led pinini 5V yap. 4.7 Karar Verme Ve Döngü İşlemleri FOR NEXT Komutu Dizilimi: FOR Sayac = başlangıç TO Son {STEP{-} Adım} { Tekrar edilecek komutlar } { bloğu } NEXT Sayac FOR NEXT döngüsü, tekrar edilmesi gereken bir grup komutu istenilen sayıda tekrar etmek için kullanılır. FOR NEXT komutunun kullanılışı aşağıda adım adım açıklanmıştır. 1- Başlangıç değeri sayac değişkeni içerisine atanır. Sayac herhangi bir tip değişken olabilir. 2- Blok tekrar edilir. Eğer bir gecikme döngüsü kurmak isteniyorsa blok içerisine komut yazılmayabilir. 3-Adım olarak yazılan sayı sayac değişkeni içerisindeki sayıya eklenir. Sayının önünde - varsa çıkarılır. STEP ifadesi yazılmazsa sayac içerisindeki sayı artışı daima 1 dir. 4-Eğer sayac içerisindeki sayı Son ile belirlenen yerdeki sayıyı geçmemişse işlem 2. adımdan itibaren devam eder. 5-Sayac ve son değerleri birbirine eşit olunca program NEXT komutundan sonra devam eder.

77 69 Eğer sayac içerisindeki sayı 255 i geçecekse, bu durumda sayac değişkeni Word tipinde tanımlanması gerekir. Örnek: FOR i = 1 TO 10 Serout 0, N2400, [ #i, ] NEXT i Serout 0, N2400, [10] i nin değerini 1 den 10 a kadar artırır. Her bir sayıyı Pin0 dan seri olarak gönder Geri dön ve sayac içindeki sayıyı bir artır. bir satır besleme karakteri gönder IF THEN Komutu Dizilimi: IF Karşılaştırma {AND/ OR Karşılaştırma } THEN Etiket Veya IF Karşılaştırma {AND/ OR Karşılaştırma } THEN Deyimler ELSE Deyimler ENDIF IF THEN karşılaştırılan ifadelerin doğru veya yanlış oluşunu değerlendirerek, farklı işlemler gerçekleştirmek için kullanılır. Karşılaştırma sonucu doğruysa THEN den sonraki komut çalıştırılır. Karşılaştırma sonucu yanlışsa THEN den sonraki komut çalıştırılmadan bir sonraki komuta geçer. Karşılaştırma ifadesinin olduğu yerdeki sayı 0 sa yanlış olarak değerlendirilir. Diğer tüm sayılar doğru olarak değerlendirilir. Tüm karşılaştırmalar işaretsizdir. Çünkü PBP sadece işaretsiz sayıları destekler.

78 70 Örnek: IF B0< >10 THEN B0=B0+1 B1=B1-1 ENDIF IF B0=20 THEN Led=1 ELSE Led=0 ENDIF PAUSE Komutu: Dizilimi: PAUSE Süre Programı süre parametresi ile belirlenen milisaniye süresince durdurur. Süre 16 bit tir, bu nedenle bir gecikme süresi ms (1 dk yı biraz geçer) olabilir.diğer gecikme komutlarında (NAP SLEEP) olduğu gibi mikro denetleyici düşük güç moduna sokmaz. PAUSE komutu çalışınca diğerlerine göre daha fazla güç harcar, ancak süre diğerlerine göre daha hassastır. Çünkü sistem clock frekansı ile aynı hassasiyete sahiptir. PAUSE 4 MHz ilk osilatör frekansının kullanıldığını varsayar. Eğer osilatör 4 MHz den farklıysa DEFINE OSC komutu ile bu frekans PBP ye bildirilmelidir. Örnek: PAUSE saniye gecikme yap

79 WHILE WEND Komutu : Dizilimi: WHILE Karşılaştırma ifadesi Basic deyimleri WEND Karşılaştırma ifadesi sonucu doğru (true) olduğu sürece WHILE..WEND arasına yazılan PicBasic Pro komutlarını çalıştırır. Karşılaştırma sonucu yanlış olduğunda WEND den sonraki komuttan itibaren program devam eder. Örnek: i=1 WHILE i <=10 Serout 0, N2400, [ No:, #i, 13, 10] i= i + 1 WEND RANDOM Komutu : Dizilimi: RANDOM Değişken RANDOM, değişken içerisinde rasgele bir sayı elde etmek için kullanılır. Değişken 16-bit lik bir değişken olarak tanımlanmış olması gerekir. RANDOM ile değişken indeksli array değişkenler kullanılamaz, ancak sabit indeksli array değişkenler kullanılabilir. Üretilen sayı arasındadır. Örnek: RANDOM W4 W4 değişkenine arasında rasgele bir sayı yerleştirir.

80 GOSUB Komutu : Dizilimi: GOSUB Etiket Etiket ile belirlenen alt programa dallanmayı sağlar. Programın sonundaki RETURN komutuna gelince, program akışı GOSUB komutundan sonraki komuta geçer. Bir programda sınırsız sayıda alt program kullanılabilir. Alt programlar gerektiğinde iç içe yazılabilir. Başka bir deyişle,bir alt program içerisinden başka bir alt programı çağırmak mümkündür. İç içe alt program yazılırken 4 seviyeden daha fazla çağırma yapmaktan kaçınılmalıdır., Örnek: GOSUB saga_don saga_don alt programı çalıştır RETURN Komutu Dizilimi: RETURN Alt programdan ana programa dönüş komutudur. Alt program çağırma komutu olan GOSUB dan sonraki komuttan itibaren programın devam etmesini sağlar. 4.8 Keyboard Ve LCD Uygulamalari Bu bölümde 16 butonlu matrix keyboard uygulamasını ve paralel girişli LCD lerin kullanılmasıyla ilgili uygulamaları birlikte göreceğiz.

81 Paralel LCD ler İlk LCD ler (Liquid Cyrstal Display) 1960 yılında kullanılmaya başlandı. PC nizin seri veya paralel portundan yada bir Picmikro dan gönderdiğiniz verilerle kontrol edebileceğimiz LCD lerin yapısı iki bölümden oluşur. Yazı yada grafikleri gösteren likit kristal display ve bu displayi süren chip. Genellikle baskı devrenin bir yüzüne LCD, diğer yüzüne de sürücü chip yerleştirilir LCDOUT Komutu : Dizilimi: LCDOUT Veri {, Veri..} Likit kristal ekran üzerine istenilen veriyi göndermek için kullanılır. PBP üzerinde Hitachi kontrol chipi veya eşdeğeri olan LCD modüllerini destekler. Bu LCD lerin genellikle tek veya çift sıralı 14 yada 16 pini vardır. Eğer veri önünde # işareti konulursa her bir karakterin ASCII karşılığı olan sayı LCD ye gönderilir. Bir LCD ye ilk komutu göndermeden önce program en az 0.5 Sn bekleme yapması gerekir. Çünkü LCD lerin verileri göndermeye başlaması kısa bir süre alır. LCD ye komut göndermek için o komutun önüne $FE yazmak gerekir.

82 74 Çizelge 4.4: uyumlu LCD komutları Komut $FE, 1 $FE, 2 $FE, $0C $FE, $0E $FE, $0F $FE, $10 $FE, $14 $FE, $C0 Yaptığı iş Ekranı siler. Satır başına dönülür. Kursörün görüntüsünü yok eder Kursörü alt çizgi biçimine getirir. Kursörü yanıp/söner yapar. Kursörü bir pozisyon sola getirir Kursörü bir pozisyon sağa getirir Kursörü 2. satırın başına getirir. Örnek: LCDOUT $FE, $C0 LCD displayin ikinci satırından itibaren karakter yazmaya başlatır LCDOUT $FE, 1, Merhaba Ekranı sil ve Merhaba yaz. LCDOUT B0, #B1 B0 içerisindeki sayının ASCII karşılığı olan Karakteri ve B1 içerisindeki karakterin ASCII Karşılığını LCD ekranında gösterir. 4.9 Interrupt Ve Uygulamalari ON INTERRUPT Komutu : Dizilimi: ON INTERRUPT GOTO Etiket ON INTERRUPT, mikro denetleyici kesmenin bir PicBasic Pro alt tarafından ele alınmasını sağlar.

83 75 Örnek: ON INTERRUPT GOTO Ledyak Kesme oluştuğunda Ledyak alt programına atla RESUME Komutu : Dizilimi: RESUME {Etiket } Bir kesme oluştuğunda program nerede kaldıysa tekrar oraya dönmesi için kullanılır. RESUME alt programlarda kullanılan RETURN a benzer ancak PicBasic Pro kesme alt programlarının sonunda kullanılır. Örnek: Saatkesmesi: Saniye= saniye+1 RESUME Süreyi say Kesmeden sonra ana programa dön DISABLE Komutu : Dizilimi: DISABLE DISABLE komutu kullanıldıktan sonra oluşacak kesmeleri geçersiz yapar. Bu esnada kesme oluşsa bile PBP programı bu kesmeyi çalıştırmaz. Yani göz önüne almaz ENABLE Komutu : Dizilimi: ENABLE DISABLE komutu kullanılarak iptal edilen sonraki kesmeleri kesme alt programı bittikten sonra tekrar geçerli yapmak için kullanılır.

84 Eeprom Belleğe Yazma Ve Okuma WRITE Komutu : Dizilimi: WRİTE Adres, değer Chip üzeri eeprom belleği bulunan PIC lerde belirlenen adrese bir değer yazar. Bu komut sadece chip üzeri EEPROM belleği bulunan PIC16F84 veya PIC16C84 mikrodenetleyicilerinde kullanılabilir. WRITE komutu programın çalışması anında EEPROM alanında bir değer yazmak isteniyorsa kullanılır. Eğer programlama anında değer yazmak isteniyorsa DATA veya EEPROM komutları kullanılmalıdır. Her bir WRITE komutunun mikrodenetleyicide çalışması için gereken süre 10 ms dir. Örnek: WRITE 5, B0 EEPROM un 5 adresine B0 içindeki değeri yazar READ Komutu : Dizilimi : READ adres değişken Chip üzeri EEPROM un belirtilen adresini okur ve sonucu değişken içerisinde saklar. Bu komut sadece chip üzeri EEPOM u bulunan PIC16F84 ve PIC16C84 mikrodenetleyicilerinde kullanılırlar. Örnek: READ 5, B2 EEPROM un 5 adresndeki veriyi B2 değişkeni içerisinde sakla

85 EEPROM Komutu : Dizilim: EEPROM {adres} [sabit{sabit}] Chip üzeri EEPROM alanına verileri yazmak için kullanılır. Adres sabitin yazılacağı yeri gösterir. Eğer adres yazılmazsa ilk EEPROM komutu 0 adresinden itibaren yazmaya başlar. Takip eden komutlarsa bu adresten itibaren yazmaya devam eder. Sabit, sayısal veya karakter sabit olabilir. Sayısal sabitlerin sadece alt byte ı saklanır. Karakter sabitlerin ise ASCII karşılıkları olan byte lar ardı ardına yazılır. EEPROM komutu sadece Chip üzeri EEPROM alanı bulunan PIC16F84, PIC16C84 ve PIC16F877 gibi mikro denetleyicilerde çalışır. Mikro denetleyicinin enerjisi kesilse bile EEPROM alanındaki veriler aynen kalır DATA Komutu : Dizilimi: DATA {@adres,}sabit{,sabit...} Mikrodenetleyiciyi programlama esnasında Chip üzerindeki EEPROM belleğe sabit değerler yazmak için kullanılır. Eğer adres yazılmazsa ilk DATA komutu 0 adresinden başlar ve takip eden DATA komutları bu adresten itibaren sabitleri yazmaya devam eder. Eğer adres için bir değer girilmişse sabit değerlerin girileceği adresin başlangıç adresi belirtilmiş olur. İstenirse EEPROM un başlangıç adresi olarak etiket kullanılabilir. Sabitler sayısal veya karakter olabilir. Sayısal sabitlerin önüne word tipi olduğunu belirleyen $ işareti konulmadığı sürece sadece sayının alt byte ı kaydedilir. String sabitlerin ise ASCII kodu kaydedilir.

86 78 Örnek: 10, 20, 30 5 adresinden itibaren 10,20,30sayılarını EEPROM alanına kaydeder. DATA (4), 0 (10) 4 adres atlar ve 10 tane 0 kaydeder I2CREAD Komutu : Dizilimi: I2CREAD Data_pini, Clock_pini, Kontrol_kodu {Adres,} [Değişken{,Değişken }] {,Etiket} Kontrol_kodu ve isteğe bağlı adres byte larını clock_pini den ve data_pini inden gönderir. Okunan bytleri değişken içerisine kaydeder. Clock_pini ve data_pini 0-15 arasında sabit bir sayı veya 0-15 sayılarını içeren bir değişken yada pin adı olabilir. Kontrol_kodu nun üst 7 biti kullanılacak EEPROM elemanına bağlı olarak eleman seçme bitlerini veya ilave adres bilgilerini içerir. İlk bit ise dahili bir bayrak bitidir. Bu bit bir okuma mı? Yoksa yazma mı? olduğunu gösterir ve normal durumda içindeki veri 0 da tutulmalıdır. I2CREAD komutunda yer alan adres in tipi okunacak olan adresin genişliğini belirler. Adres için kullanılan değişkenin tipi byte tipinde tanımlanmışsa 8 bitlik adres gönderir. Eğer adres değişkeni word tipindeyse 16 bitlik adres gönderilir. Örnek: Adres var byte Kontrol con % Adres=17 Adresi 17 ye kur. I2CREAD PORTA.0, PORTA.1, kontrol,adres, [B2] 17 adresindeki datayı oku ve B2 değişkenine sakla

87 I2CWRITE Komutu : Dizilimi: I2CWRITE Data_pini,Clock_pini,Kontrol,{Adres,}[Data {,Data }]{,Etiket} I2WRITE komutu bir mikrodenetleyici üzerinde belirlenen bir data _pini ve clock_pini nden isteğe bağlı olarak yazılan adrese komut içerisinde yazılan dataları gönderir. Clock_pini ve data_pini 0-15 arasında sabit sayı veya 0-15 sayılarını içeren bir değişken yada pin adı olabilir. Bir seri EEPROM belleğe veri yazıldıktan sonra yeni bir verinin yazılması için 10mS lik bir bekleme süresi gerekir. Eğer yazma işlemi tamamlamadan I2CREAD veya I2CWRITE ile erişim sağlanmak istenirse erişim reddedilir. Örnek: Adres var byte Kontrol con % Adres=17 Adresi 17 ye kur. I2CWRITE PORTA.0, PORTA.1, Kontrol, Adres, [6] 17 adresine 6 verisini gönder. Pause 10 Yazmanın tamamlanması için 10 ms bekle Adres=1 adresi 1 e kur I2CWRITE PORTA.0, PORTA.1, Kontrol, Adres, [B2] 1 adresine B2 deki veriyi gönder. Pause 10 Yazmanın tamamlanması için 10mS bekle

88 CLEAR Komutu : Dizilimi: CLEAR Her banktaki RAM registerini sıfırlar. CLEAR komutu aynı zamanda kullanıcı değişkenlerini ve dahili sistem değişikliklerini de sıfırlar. Genellikle CLEAR komutu kullanmaya gerek duyulmaz. Çünkü değişkenlere program içerisinde olması gereken ilk değerleri atanması gerekir. Örnek: CLEAR Tüm değişkenleri sıfırla POT Komutu : Dizilimi: POT Pin, Taksimat, Değişken Bir pine bağlı olan potansiyometreyi okur. Pin 0-15 arasında bir sayı, 0-15 sayılarını içeren değişken yada pin adı olabilir. Bir direncin değeri o dirence (5K-10K) bağlı bir kondansatörün deşarj olma zamanı ölçme suretiyle yapılır. Taksimat, RC sabitesinin değişimi ayarlamak için kullanılır. Büyük RC sabitelerinde, taksimat 0 olmalıdır. Küçük RC sabitelerinde taksimat maksimum değerde (255) olmalıdır. Eğer taksimat doğru olarak seçilirse, değişken içerisinde saklanacak değer minimum dirençte sıfıra yakın değer, maksimum dirençte ise 255 yakın değer olmalıdır.

89 81 Şekil 4.1: Bir pot değerini okumak için gerekli devre Örnek: Pot 3, 255, B0 Taksimatı belirlemek için Pin3 den potansiyometrenin değerini B0 içerisine yerleştirir Reverse Komutu Dizilimi: REVERSE Pin Pinin giriş/ çıkış yönünü değiştirmek için kullanılır. Eğer pin girişse, onu çıkış yapar, çıkışsa giriş yapar. Pin 0-15 arasında bir sayı, 0-15 sayılarını içeren değişken yada pin adı olabilir. Örnek : Output 4 REVERSE 4 Pin4 ü çıkış yap Pin4 ü tekrar giriş yap SLEEP Komutu : Dizilimi: SLEEP Süre Belirlenen süre ile mikrodenetleyiciyi düşük güç moduna sokar. Süre 16 bittir ve saniyelik bir süreyle (yaklaşık 18 saat) gecikme yapar.

90 82 SLEEP, watchdogs timer ı kullanıldığından PIC e uygulanan osilatör frekansından bağımsızdır. Çözünürlük yaklaşık olarak 2.3 sn.dir ve Chip özelliklerine ve ısıya bağlı olarak değişir. Örnek: SLEEP 60 Uyku moduna yaklaşık olarak 1 dakika girer STOP Komutu : Dizilimi: STOP Sonsuz bir döngüyü çalıştırarak programın çalışmasını durdurur. STOP mikrodenetleyiciyi düşük güç moduna sokmaz. Mikrodenetleyici sonsuz bir döngüde devamlı olarak çalışır. Örnek: STOP Devam eden programı sonsuz döngüye sokar SWAP Komutu : Dizilimi: SWAP Değişken, Değişken İki değişken içerisindeki değerleri birbiriyle yer değiştirir. Değişken tipleri bit, byte veya word tipinde olabilir. Değişken olarak sabit indeksli dizi değişkenleri kullanılabilir. Değişken indeksli dizi değişkenler ise kullanılmaz. Örnek: B0 =5 : B1 =3 ise SWAP B0, B1 B0=3, B1=5 olur

91 83 BEŞİNCİ BÖLÜM DENEYLER

92 84 DENEY I TEMEL PORT UYGULAMALARI Deneyin Amacı : PIC lerde bulunan portların öğrenilmesini ve bunlarla ilgili çeşitli uygulamalar yapılmasını sağlamak. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 Arabirimi LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

93 85 Deney Hakkında Teorik Bilgiler : A. PIC16F84 BELLEK DÜZENİ PIC16F84A`da iki tane bellek alanı vardır.bunlar komutların yer aldığı program belleği ve programın üzerinde çalıştığı ana bellek (RAM) alanıdır. Her iki bellek alanının da ayrı veri yolları vardır. Bu sayede bu iki bellek bloğuna aynı anda tek çevrim içinde ulaşmak mümkündür. Ana bellek iki kısımdan oluşur. Bunlar genel amaçla RAM ve SFR (Special Function Registers) olarak adlandırılan kontrol amaçlı yazmaçlardır. Yazmaç(register) 8-bitlik hafıza alanına verilen genel isimdir. Program Belleği: PIC16F84A 13-bitlik bir program sayacına(program Counter) sahiptir. Program sayacı program belleğinden alınacak komutun adresini gösteren bir yazmaçtır. İşlemci bu yazmacın gösterdiği program adresinden komutları alıp işler ve bu yazmacın içindeki sayı her çevrimde artar. 13-bitlik bir program sayacı ile 2^13=8192 tane adrese ulaşmak mümkündür. PIC16F84A`nın hafızası 1Kbyte olduğu için program sayacı sadece ilk 1Kbytelýk adresleri gösterir. Eğer program sayıcısı 1023`ten daha büyük bir değer alırsa hafızada başa dönülmüş olur. Program belleğine ait şema aşağıda verilmiştir. Ana Bellek: Genel amaçlı RAM ve SFR`ler bu bellekte yer alır. Genel amaçlı RAM programın üzerinde çalıştığı bellektir ve çalışma esnasında oluşan değişkenler buraya kaydedilir. SFR`ler ise mikrodenetleyicinin giriş/çıkış hatları gibi donanım ünitelerinin kontrolünü sağlar. Ana bellek iki bloktan oluşmaktadır. İşlemci Bank0 ve Bank1 olarak adlandırılan bu bloklardan ikisini de aynı anda kullanamaz. Kullanılacak blok SFR`lerden biri olan STATUS yazmacının 5. biti ile belirlenir. Bu

94 86 bit 0 iken Bank0, 1 iken Bank1seçilmiş olur. 68 byte lık genel amaçlı RAM`in kullanımı seçilmiş olan RAM bankasından etkilenmez. PIC16F84A`nın ana belleğinin haritası aşağıda verilmiştir. B. PIC16F628 Pin Özellikleri PIC16F628, 18 bacaklı olmasına rağmen 16 tane I/O pini vardır. Tabloda görüleceği gibi her pinin birden fazla işlevi vardır. Gerektiğinde Vss, Vdd pinleri hariç tüm pinleri giriş/çıkış verileri için kullanılabilir. Bu pinlerin 8 i (RA0- RA7) PORTA olarak, 8 i de PORTB(RB0-RB7) olarak kullanılır. Pin Adı Açıklama RA0/AN0 İki yönlü dijital I/O portu / Analog komparatör girişi RA1/AN1 İki yönlü dijital I/O portu / Analog komparatör girişi RA2/AN2/VREF İki yönlü dijital I/O portu / Analog komparatör girişi/vref girişi RA3/AN3/CMP1 Dijital I/O portu / Analog komparatör girişi/ komparatör çıkışı RA4/TOCKI/CMP2 Dijital I/O portu / TIMER 1 harici clock girişi/ komparatör çıkışı RA5/MCLR /THV Dijital I/O portu / Reset girişi yada programlama esnasında gerilim giriş ucu olarak kullanılır. MCLR olarak konfigüre edildiğinde aktif 0 girişi PIC i reset eder. MCLR/THV girişi normal çalışma esnasında Vdd gerilimini geçmemelidir. RA6/OSC1/CLKOUT Dijital I/O portu/ Kristal osilatör girişi. ER osilatörü ve dahili RC osilatörü kullanıldığında OSC1 frekansının 1/4 ünün alındığı pin RA7/OSC2/CLKIN Dijital I/O portu/ Kristal osilatör girişi ve harici clock

95 87 RB0/INT RB1/RX/DT RB2/TX/CK RB3/CCP1 RB4/PGM RB5 RB6/T1OSO/T1CKI RB7/T1OSI Vss Vdd girişi olarak kullanılan pin Dijital I/O portu/ Harici kesme Girişi Dijital I/O portu/ USART veri alış pini / senkronize data I/O pini Dijital I/O portu / USART veri gönderme pini/ senkronize clock I/O pini Dijital I/O portu /Capture-Compare PWM I/O Dijital I/O portu / düşük gerilim programlama giriş pini. Pindeki seviye değişikliği SLEEP moduna giren PIC i uyandırır. Dijital I/O portu / Pindeki seviye değişikliği SLEEP moduna giren PIC i uyandırır. Dijital I/O portu / Timer osilatör çıkışı / Timer1 clock girişi Dijital I/O portu / Timer1 osilatör girişi Güç kaynağının GND ucuna bağlanacak pin Güç kaynağının + ucuna bağlanacak pin PIC16F627/628 mikrodenetleyicilerin pin adları ve görevleri Bellek Organizasyonu 1. Program Belleği Organizasyonu PIC16F62X, 8Kx14 bitlik program belleği alanını adresleyebilecek kapasiteye sahip olan 13 bitlik bir counter i vardır. PIC16F627 de sadece ilk 1Kx14 (0000h- 03FFh) PIC16F628 de ise 2Kx14 (0000h-07FFh) adresine fiziksel olarak ulaşılabilir. Reset vektörü 0000h adresinde ve interrupt vektörü 0004h adresindedir.

96 88 PC< 12:0 > CALL, RETURN 13 RETFIE, RETLW Yığın Seviye 1 Yığın Seviye 1.. Yığın Seviye 1 Reset Vektör 000h Interrupt Vektör On-Chip program hafızası FFh 0800h 1FFFh PIC16F627/628 Program Belleği 2. Data Beleği Data belleği 4 Bank a ayrılmıştır. Bellek banklarında genel amaçlı registerler (kullanıcı RAM) ve özel fonksiyon registerleri bulunmaktadır. Özel fonksiyon registerleri her bir bankın ilk 32 adresine yerleştirilmiştir. 20h-7Fh, A0h- FFh, 120h-14Fh, 170h-17Fh ve 1F0h-1FFh adres aralıkları genel amaçlı registerler için ayrılmışlardır.bu 8 bitlik registerler kullanıcının programda gerekli olan değişkenler için ayırıp kullanabileceği RAM alınıdır. Aşağıda RAM bellekteki banklara nasıl ulaşılacağını göstermektedir.

97 89 RP1 RP0 BANK0 0 0 BANK1 0 1 BANK2 1 0 BANK3 1 1 Bank seçme bit lerinin durumu Bir register bankını seçmek için STATUS registerindeki RP0 ve RP1 bitleri kullanılmaktadır. 16F84 de iki bank (BANK0, BANK1) bulunduğundan sadece RP0 bitini kullanmak suretiyle banklara ulaşabiliyoruz. IRP RP1 RP0 TO PD Z DC C Bit7 Bit0 STATUS register 16F628 register haritası 224x8 olarak organize edilmiştir. Her bir bellek hücresine direkt olarak ulaşılabildiği gibi FSR registeri kullanarak endirekt olarak ta erişilebilir. C. PIC16F877

98 90 PIC16F877 portlarının fonksiyonları PORTA: Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilmektedir. 6 bit genişliğindedir (F84 de 5 bittir). RA0, RA1,RA2,RA3 ve RA5 bitleri analog/sayısal çevirici olarak konfigüre edilebilmektedir. Buna ek olarak RA2 ve RA3 gerilim referansı olarak da konfigüre edilebilmektedir (bu durumda bu bitler aynı anda A/D çevirici olarak kullanılamazlar). İlgili yazmaçlar ve adresleri aşağıdaki gibidir. PORTA 0x05 TRISA 0x85 ; giriş/çıkış belirleme yazmacı ADCON1 0x9F ; RA portlarının A/D, referans gerilimi veya sayısal giriş/çıkış seçiminde kullanılır. İşlemciye ilk defa gerilim uygulandığında RA4 hariç diğer beş PORTA biti A/D çeviricidir. Eğer RA portunun bazı bitlerini sayısal giriş/çıkış olarak kullanmak isterseniz ADCON1 yazmacında değişiklik yapmanız gerekmektedir. PORTB: Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. B portunun her bacağı dahili bir dirençle VDD ye bağlıdır (weak pull-up). Bu özellik varsayılan olarak etkin değildir. Ancak OPTION yazmacının 7.bitini 0 yaparak B portunun bu özelliğini etkinleştirebilirsiniz. RB4-RB7 bacakları aynı zamanda bacakların sayısal durumlarında bir değişiklik olduğunda INTCON yazmacının 0. biti olan RBIF bayrağını 1 yaparak kesme oluştururlar. Bu özelliği, işlemci SLEEP konumundayken, devreye bağlı tuş takımının her hangi bir tuşuna basıldığında işlemcinin yeniden etkinleşmesi için

99 91 kullanabilirsiniz. Bütün bunların yanı sıra RB6 ve RB7 yüksek gerilim programlama, RB3 ise düşük gerilim programlama modlarında da kullanılmaktadır. İlgili yazmaçlar ve adresleri aşağıdaki gibidir. PORTB 0x06 TRISB 0x86 ; giriş/çıkış belirleme yazmacı OPTION_REG 0x81, 0x181 PORTC: Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. SPI, USART, Capture/Compare ve PWM gibi özel fonksiyonlar, ilgili yazmaçların ayarlanmasıyla bu porttan yürütülmektedir. İlgili yazmaçlar ve adresleri aşağıdaki gibidir. PORTC 0x07 TRISC 0x87 ; giriş/çıkış belirleme yazmacı PORTD: Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. Bütün port bacakları Schmitt Trigger girişlidir. TRISE yazmacının 4.biti olan PSPMODE bitini 1 yaparak paralel Slave mode da kullanılabilir. Bu fonksiyon aracılığıyla 8 bit genişliğindeki her hangi bir mikroişlemci bus ına bağlıyabilirsiniz. PORTD 0x08 TRISD 0x88 ; giriş/çıkış belirleme yazmacı TRISE 0x89

100 92 PORTE: Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilmektedir. 3 bit genişliğindedir. RE0, RE1 ve RE2 bacaklarında Schmitt Trigger giriş tamponları vardır.her bir bacak analog/sayısal çevirici olarak konfigüre edilebilmektedir. Eğer PORTD paralel slave port olarak konfigüre edilirse, RE0, RE1 ve RE2 bacakları PORTD nin bağlandığı mikroişlemci bus ında sırasıyla READ, WRITE ve CHIP SELECT kontrol girişleri olarak kullanılır. Bunun için TRISE uygun biçimde ayarlanmalıdır. İlgili yazmaçlar ve adresleri aşağıdaki gibidir. PORTE 0x09 TRISE 0x89 ; giriş/çıkış belirleme yazmacı ADCON1 0x9F ; RE portlarının A/D veya sayısal giriş/çıkış olarak seçiminde kullanılır İşlemciye ilk defa gerilim uygulandığında üç PORTE biti de A/D çeviricidir. Eğer RE portunun bazı bitlerini sayısal giriş/çıkış olarak kullanmak isterseniz ADCON1 yazmacında değişiklik yapmanız gerekmektedir.

101 93 Kullanıcı veri belleği birden fazla yazmaç bankasına bölünmüştür. Bu yazmaç bankalarında hem genel amaçlı yazmaçlar hem de özel fonksiyon yazmaçları (SFR) bulunmaktadır. Yazmaç bankasını seçmek için STATUS yazmacındaki RP1 ve RP0 bitleri kullanılmaktadır. F84 de iki yazmaç bankası olduğunu ve yalnızca RP0 bitini ayarlamak suretiyle ilgili yazmaç bankasının seçildiğini hatırlayınız. STATUS yazmacı <RP1,RP0> bitlerini aşağıdaki gibi ayarlayarak istediğimiz yazmaç bankasına erişebiliriz. Her yazmaç bankası 128 byte genişliğindedir (7Fh). 00 Bank0 01 Bank1 10 Bank2 11 Bank3

102 94 A. PORTB ye Bağlı Bir Ledin Yakılması: Deneyin Yapılışı : 1. Bir ledin yakılması programını editörünüzde yazdıktan sonra LEDYAK.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek LEDYAK.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda bir ledin yakılması programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. Ledin hareketini izleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. Deneyimizi iki led kullanarak tekrar yapınız. Ledleri PORTB ye 0. Biti ve 1. Bitine bağlayınız. B. PORTB ye bağlı bir ledin yakıp söndürülmesi: Deneyin yapılışı : 1. Bir ledin yanıp sönmesi programını editörünüzde yazdıktan sonra YANSON.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek YANSON.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz.

103 95 4. Bilgisayarda Bir ledin yanıp sönmesi programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. PIC deney setine enerji veriniz. Ledin hareketini izleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. Aynı deneyi iki led ile gerçekleştiriniz. 2. İki ledle flip flop oluşturunuz. C. PORTA daki bilginin PORTB ye aktarılması: Deneyin yapılışı : 1. PORTA daki bilginin PORTB ye aktarılması programını editörünüzde yazdıktan sonra PORTAB.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek PORTAB.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda PORTA daki bilginin PORTB ye aktarılması programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. PIC deney setine enerji veriniz. 7. PORTA nın durumuna göre PORTB yi karşılaştırınız. Deney ile ilgili sorular ve raporda istenenler : 1. PORTA daki bilginin tersini PORTB ye aktaran programı yazınız. Deneyiniz.

104 96 DENEY 2 PIC İLE SAYAÇ VE DÖNGÜ KONTROLLERİ Deneyin Amacı : PIC i kullanarak sayaç ve döngü yapılarını öğrenmek ve bu komutlarla program yapma becerisini kazanmak. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 Arabirimi LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

105 97 Deney Hakkında Teorik Bilgiler : Karar Verme Ve Döngü İşlemleri 1. FOR NEXT Komutu Dizilimi: FOR Sayac = başlangıç TO Son {STEP{-} Adım} { Tekrar edilecek komutlar } { bloğu } NEXT FOR NEXT döngüsü, tekrar edilmesi gereken bir grup komutu istenilen sayıda tekrar etmek için kullanılır. FOR NEXT komutunun kullanılışı aşağıda adım adım açıklanmıştır.başlangıç değeri sayac değişkeni içerisine atanır. Sayac herhangi bir tip değişken olabilir. 1. Blok tekrar edilir. Eğer bir gecikme döngüsü kurmak isteniyorsa blok içerisine komut yazılmayabilir. 2. Adım olarak yazılan sayı sayac değişkeni içerisindeki sayıya eklenir. Sayının önünde - varsa çıkarılır. STEP ifadesi yazılmazsa sayac içerisindeki sayı artışı daima 1 dir. 3. Eğer sayac içerisindeki sayı Son ile belirlenen yerdeki sayıyı geçmemişse işlem 2. adımdan itibaren devam eder. 4. Sayac ve son değerleri birbirine eşit olunca program NEXT komutundan sonra devam eder. Eğer sayac içerisindeki sayı 255 i geçecekse, bu durumda sayac değişkeni Word tipinde tanımlanması gerekir.

106 98 Örnek: FOR i = 1 TO 10 i nin değerini 1 den 10 a kadar artırır. Seraut 0, N2400, [ #i, ] Her bir sayıyı Pin0 dan seri olarak gönder NEXT i Geri dön ve sayac içindeki sayıyı bir artır. Seraut 0, N2400, [10] Bir satır besleme karakteri gönder. 2. IF THEN KOMUTU Dizilimi: IF Karşılaştırma {AND/ OR Karşılaştırma } THEN Etiket Veya IF Karşılaştırma {AND/ OR Karşılaştırma } THEN Deyimler ELSE Deyimler ENDIF IF THEN karşılaştırılan ifadelerin doğru veya yanlış oluşunu değerlendirerek, farklı işlemler gerçekleştirmek için kullanılır. Karşılaştırma sonucu doğruysa THEN den sonraki komut çalıştırılır. Karşılaştırma sonucu yanlışsa THEN den sonraki komut çalıştırılmadan bir sonraki komuta geçer. Karşılaştırma ifadesinin olduğu yerdeki sayı 0 sa yanlış olarak değerlendirilir. Diğer tüm sayılar doğru olarak değerlendirilir. Tüm karşılaştırmalar işaretsizdir. Çünkü PBP sadece işaretsiz sayıları destekler. Örnek: IF B0< >10 THEN B0=B0+1 B1=B1-1 ENDIF IF B0=20 THEN Led=1 ELSE

107 99 Led=0 ENDIF 3. PAUSE Dizilimi: PAUSE Süre Programı süre parametresi ile belirlenen milisaniye süresince durdurur. Süre 16 bit tir, bu nedenle bir gecikme süresi ms (1 dk yı biraz geçer) olabilir.diğer gecikme komutlarında (NAP SLEEP) olduğu gibi mikro denetleyici düşük güç moduna sokmaz. PAUSE komutu çalışınca diğerlerine göre daha fazla güç harcar, ancak süre diğerlerine göre daha hassastır. Çünkü sistem clock frekansı ile aynı hassasiyete sahiptir. PAUSE 4 MHz ilk osilatör frekansının kullanıldığını varsayar. Eğer osilatör 4 MHz den farklıysa DEFINE OSC komutu ile bu frekans PBP ye bildirilmelidir. Örnek: PAUSE saniye gecikme yap 4. WHILE WEND Dizilimi: WHILE Karşılaştırma ifadesi Basic deyimleri WEND Karşılaştırma ifadesi sonucu doğru (true) olduğu sürece WHILE..WEND arasına yazılan PicBasic Pro komutlarını çalıştırır. Karşılaştırma sonucu yanlış olduğunda WEND den sonraki komuttan itibaren program devam eder. Örnek: İ=1 WHILE i <=10

108 100 WEND Serout 0, N2400, [ No:, #i, 13, 10] İ= İ RANDOM Dizilimi: RANDOM Değişken RANDOM, değişken içerisinde rasgele bir sayı elde etmek için kullanılır. Değişken 16-bit lik bir değişken olarak tanımlanmış olması gerekir. RANDOM ile değişken indeksli array değişkenler kullanılamaz, ancak sabit indeksli array değişkenler kullanılabilir. Üretilen sayı arasındadır. Örnek: RANDOM W4 W4 değişkenine arasında rasgele bir sayı yerleştirir. 6. GOSUB Dizilimi: GOSUB Etiket Etiket ile belirlenen alt programa dallanmayı sağlar. Programın sonundaki RETURN komutuna gelince, program akışı GOSUB komutundan sonraki komuta geçer. Bir programda sınırsız sayıda alt program kullanılabilir. Alt programlar gerektiğinde iç içe yazılabilir. Başka bir deyişle,bir alt program içerisinden başka bir alt programı çağırmak mümkündür. İç içe alt program yazılırken 4 seviyeden daha fazla çağırma yapmaktan kaçınılmalıdır. Örnek: GOSUB saga_don saga_don alt programını çalıştır.

109 RETURN Dizilimi: RETURN Alt programdan ana programa dönüş komutudur. Alt program çağırma komutu olan GOSUB dan sonraki komuttan itibaren programın devam etmesini sağlar. A. Yürüyen Işık programı : Deneyin Yapılışı : 1. Yürüyen ışık programını editörünüzde yazdıktan sonra YURISK.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek YURISK.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda yürüyen ışık programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. Ledlerin hareketini izleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. Yürüyen ışık uygulamasını daha hızlı bir şekilde nasıl yaparız? 2. PORTA ya bir buton koyunuz. Butona bastığımızda ledin hangisi yanıyorsa orada o led yanık kalsın, diğerleri sönsün?

110 102 B. Binary Sayıcı: 1. Binary sayıcı programını editörünüzde yazdıktan sonra BINSAY.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek BINSAY.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda binary sayıcı programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. Ledlerin hareketini izleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. Binary sayıcı uygulamasını geri geri sayacak şekilde düzenleyiniz. C. Buton Kontrollü Binary Sayıcı: 1. Buton kontrollü binary sayıcı programını editörünüzde yazdıktan sonra BBINSAY.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek BBINSAY.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda buton kontrollü binary sayıcı programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. Butona basınız ve Ledlerin hareketini izleyi-niz. Deney ile ilgili sorular ve raporda istenenler : 1. Her butona bastığınızda Binary sayıcı programı geri geri saysın.

111 103 DENEY 3 KESME VE ÇEVRİM TABLOSU KULLANIMI Deneyin Amacı : Kesme ve çevrim tablosunu kullanarak PIC te programların yürütülmesini sağlamak. Program yazılımını öğrenmek. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 Arabirimi LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

112 104 Deney Hakkında Teorik Bilgiler : KESMELER (INTERRUPTS) Kesme (Interrupt) Nedir? Kesmeler, bir başka fonksiyonun gerçekleştirilmesi için programın normal akışını değiştirmede kullanılır. (Örneğin bir veri iletişimi sisteminde bir mesaj alınınca veri aktarımını durdurmak için) Kesmeler iki ayrı tip formda bulunurlar. Yazılım ve donanım. Yazılım kesmeleri mikrokontrolcünün yerleşik kesme kapasitesi bulunmadığı durumlarda kullanılır. Öte yandan donanım kesmeleri, mikrokontrolcüye yerleştirilmiş tüm kontrol mekanizmalarına sahiptir. Bir yazılım kesmesi, tüm yazmaçların statüsünden haberdar olma olanağı verdiğinden donanım kesmelerine göre daha avantajlıdır. Ancak port kullanılmadığında kesme yalnızca dış dünyaya erişebilir hale gelecektir. Öte yandan donanım kesmeleri, hızla hareket edebilirler. Kesme işlemini günlük hayattan bir örnek vererek açıklayalım: Diyelim ki televizyonda sevdiğiniz bir artistin filmini izliyorsunuz ve bu anda telefon çaldı. Ne yaparsınız? Eğer önemli bir telefon bekliyorsanız, televizyonun sesini keser, video playerin record butonuna basarak filmi kaydedersiniz. Telefon konuşması bittikten sonra da kaydettiğiniz filmi izlemeye başlarsınız. Eğer önemli bir telefon beklemiyorsanız kararınız bu defa telefona cevap vermeyerek arayanın telesekretere mesaj bırakması yönünde olur ve filmi izlemeye devam edersiniz. İşte günlük hayatta bir kesme ile karşılaştınız ama ne yaptınız? Bir yolunu bulup filmi izlemekten vazgeçmediniz. PIC te oluşan kesmeyi şöyle izah edebiliriz: PIC in port girişlerinden veya donanım içerisindeki bir sayıcıdan gelen sinyal nedeniyle belleğinde çalışmakta olan programın kesilmesi olayıdır. Programın kesildiği andan itibaren önceden hazırlanan bir alt program çalışır. Alt program işlevini bitirdikten sonra ana program kaldığı yerden itibaren tekrar çalışmasına

113 105 devam eder. Netice olarak bir kesme ana programının çalışmasını sadece duraklatır, ama hiçbir zaman işlevini devam ettirmesini engellemez. Kesme Alt Programı Ana Program m komutları İlk bakışta bir kesme meydana gelmesinin, alt program çağırma işleminden farklı olmadığı izlenimi verebilir. Ancak çok önemli bir fark vardır. Normal alt program çağırma, program içerisine yazılan komutlar (CALL) vasıtasıyla yapılır. Kesme alt programlarının çağrılmasını ise donanımda oluşan değişiklikler yapar. Bir kesme meydana geldiğinde o anda çalışmakta olan komutun çalışması tamamlanır. Daha sonra program akışı PIC program belleğin h 0004 adresine (PIC16F84 de) atlar ve bu adresteki komutu çalıştırır. Bu komut kesme servis programı veya kısaca kesme alt programı diyeceğimiz alt programını çağıran bir GOTO komutudur. PIC, kesme alt programı çalıştıktan sonra ana programın hangi adresine geri döneceğini unutmamalıdır.bu nedenle mikrodenetleyici kesme program işlevini tamamlayıp, program akışı ana programa geçince bu adresten itibaren devam eder. Kesme alt programından ana programa dönüş komutu RETFIE dir. INTCON REGİSTERİ INTCON (Interrupt control) registeri RAM bellekte h0b adresinde bulunan özel registerlerden bir tanesidir. Bu registerler içerisinde her bir kesme kaynağı için bir flag ve bir de global kesme bayrağı vardır. Tüm kesme işlemlerinin kontrolü bu kesme işlemi ile yapılır.

114 106 Bit bit 0 GIE EEIE T0IE INTE RBIE T0IF INTF RBIF GIE : Tüm kesme işlemlerini iptal etme bayrağı 0 = Tüm kesmeler geçersiz (Disable) 1 = aktif yapılmış olan tüm kesmeler geçerli (Enable) EEIE : EEPROM belleğe yazma işlemi tamamlama kesmesi 0 = Geçersiz 1 = Geçerli T0IE : TMR0 sayıcı kesmesini aktif yapma bayrağı 0 = Geçersiz 1 = Geçerli INTE : Harici kesmeyi aktif yapma bayrağı 0 = Geçersiz. Harici kesmeler kabul edilmez. 1 = Geçerli. harici kesmeler kabul edilir. RBIE : PORTB (4,5,6,7 bitleri) değişiklik kesmesini aktif yapma bayrağı 0 = Geçersiz. PORTB deki değişiklikler kesme oluşturur. 1 = Geçerli PORTB deki değişiklikler kesme oluşturmaz. T0IF : TMR0 sayıcısı zaman aşımı bayrağı 0 = Zaman aşımı yok 1 = Zaman aşımı var.(h FF den h 00 geçiş) INTF : Harici kesme bayrağı 0 = Harici kesme oluşmadığında 1 = Harici kesme oluştuğunda

115 107 RBIF : PORTB değişiklik bayrağı 0 = RB4-RB7 uçlarında değişiklik yok 1 = RB4-RB7 uçlarında en az birinde değişiklik var. KESME KAYNAKLARI PIC kesmeleri aşağıdaki 4 kaynaktan gelebilir. 1. Harici (External) kesme (PIC16F84 ün RB0/INT ucundan giren sinyal ) 2. TMR0 sayıcısında oluşan zaman aşımı kesmesi (TMR0 sayıcısının h FF den h 00 a gelmesi ) 3. POETB (4,5,6 ve 7 bitleri) lojik seviye değişikliğinden. 4. EEPROM belleğe yazma işleminin tamamlanmasında meydana gelen kesme Harici Kesmeler Harici kesmelerin kullanılması için iki şey gereklidir ; yazılım ve donanım yazılım aracılığı ile PORTB nin RB0/INT ucu dışardan gelebilecek kesmeyi alabilecek biçimde hazırlanmalıdır. Bu hazırlama işlemi için iki şey yapılır. 1. RB0/INT ucu giriş olarak yönlendirilmeli 2. INTCON registeri içerisindeki ilgili bayrak (INTE bayrağı) kullanılarak harici kesme işlemi aktif yapılmalıdır. Harici kesmenin kullanılabilmesi için bir de donanım gereksinimi vardır. Bu donanım, RB0 ucundan sinyal girmek için gerekli elektronik devredir. RB0/INT girişinden uygulanacak sinyalin kenar tetiklemesi önemlidir. OPTİON registerin 6. biti bu uçtan girilen sinyalin yükselen kenarda mı yoksa alçalan kenarda mı kesme oluşturulacağına karar vermekte kullanılır.

116 108 OPTİON 6 register INTEDG Kesme sinyali kenar seçimi 0 = Düşen kenarda kesme 1 = Yükselen kenarda kesme Kesme alt programının çalışması esnasında gelebilecek yeni kesmeleri engellemek için, kesme oluşacağı zaman INTCON registerindeki INTF bayrağı 1 olur.intf bayrağı Interrupt alt programı içerisinde tekrar 0 yapılmalıdır. Aksi halde tekrarlanan kesmelerle karşılaşır. Yukarıda söylediklerimizi kısaca özetlersek bir harici kesme oluştuğunda yapılacak işlemlerin sırası şöyledir. Sonraki kesmeleri pasif (geçersiz) yapmak için (INTE bayrağını 0 yap. ) Kesme alt programını çalıştır. INTF kesme bayrağını 0 yap. Yeni kesmeleri aktif (geçerli) yapmak için (INTE bayrağını 1 yap) PORTB Lojik Seviye (RB4-RB7) Değişiklik Kesmesi PORTB nin 4,5,6 ve 7. bitlerinde meydana gelen değişiklikte INTCON registerinin 0. biti (RBIF) 1 olur. Bu kesme INTCON registerinin 3. biti (RBIE) aracılığıyla aktif veya pasif olabilir. PORTB nin 0,1,2,3. bitlerindeki değişiklikler kesme oluşturmaz. PORTB deki değişikliği algılamak için bu porttaki en son değer RB4-RB7 uçlarından okunan veri ile karşılaştırılır. Eski ve yeni okunan veriler OR lanır. Farklılık varsa RBIF bayrağı 1 olur. PORTB kesmesi aşağıdaki şekillerde silinir. RBIE biti (INTCON registerinin 3. biti) silinmek suretiyle PORTB yi okuduktan sonra RBIF bitini silmek suretiyle

117 109 Tüm Kesme İşlemlerini Aktif Yapma Bayrağı (GIE) Bir kesme olayının meydana gelme esnasında INTCON registerinin 7. biti 0 olur. Bu işlem kesme alt programının çalışması esnasında yeni bir kesmenin program akışını bozmaması için PIC tarafından otomatik olarak yapılır. Kesme alt programı çalışmasını RETFIE komutu ile sona erdirip, ana programa dönüldüğü anda ise sonraki kesmelerin geçerli olabilmesi için tekrar otomatik olarak 1 yapılır. ÇEVRİM TABLOLARI Çevrim Tablosu (LOOKUP TABLE ) Nedir? Çevrim Tabloları bir kodu başka bir koda çevirmek için kullanılırlar. Örneğin PORTB ye bağladığımız 7 segment display ın üzerinde heksadesimal karakterleri görmek istediğimizi düşünelim. Çevrim tablosuna yerleştirdiğimiz heksadesimal koda karşılık gelen uygun kodu seçip, PORTB ye göndermemiz gerekir. Aşağıda 7 segment sürücünün 0-F arasındaki sayıları göstermesi için gereken kodlar verilmiştir. Çevrilecek Kod Hex sayı Çevrilen 7 segment Kodu (PORTB ye) 7 segment uçlarındaki veri 7 segmentte görülecek sayı h 00 h 3F h 01 h h 02 h 5B h 03 h 4F h 04 h h 05 h 6D h 06 h 7D

118 110 h 07 h h 08 h 7F h 09 h 6F h 0A h A h 0B h 7C B h 0C h C h 0D h 5E D h 0E h E h 0F h F Nokta h C. Harici Kesme İle PORTA daki ledlerin terslenmesi: 1. Harici kesme programını editörünüzde yazdıktan sonra KESME.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek KESME.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 7. Bilgisayarda harici kesme programını PIC e yükleyiniz. 8. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 9. PIC deney setine enerji veriniz. 10. Ledlerin hareketini izleyiniz. 11. Kesme işlemi için kullandığımız butona basınız. Sonucu gözleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. Kesme alt programları nereye yazılmalıdır.

119 Option registerin 6. Biti ne amaçla kullanılır. D. Çevrim Tablosu ile BCD Sayısı Buton Kontrolü: Deneyin yapılışı : 1. Öncelikle yapacağımız BCD sayıcısının çevrim tablosunu oluşturunuz. 2. Oluşturulan bu çevrim tablosuna göre programı yazınız. 3. BCD sayıcının programını editörünüzde yazdıktan sonra BCDSAY.BAS adıyla kaydediniz. 4. DOS ortamına geçip kaynak dosyayı derleyerek BCDSAY.HEX dosyasını elde ediniz. 5. Deneyin bağlantı şemasını kurunuz. 6. Bilgisayarda BCD sayıcı programını PIC e yükleyiniz. 7. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 8. Displayin hareketini izleyiniz. Çevrim Tablosu ile karşılaştırınız. Deney ile ilgili sorular ve raporda istenenler : 1. Çevrim tablosunu kullanarak geri geri BCD sayıcısını yapınız. 2. Çevrim tablosu ne amaçla kullanılıyor açıklayınız?

120 112 DENEY KULLANIMI Deneyin Amacı : 8255 yapısının incelenmesi, programlama yapısının incelenmesi ve PIC kullanarak 8255 i programlamanın sağlanılması. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

121 113 Deney Hakkında Teorik Bilgiler : Programlanabilir Çevre Birimi: tabanlı mikroişlemcili sistem ve diğer birçok mikroişlemcili sistem, dış dünya ile haberleşmede basit giriş/çıkış (I/O) portları kullanmaktadır. Fakat çok sayıda porta ihtiyaç duyulması durumunda yetersiz kalmaktadır, ayrıca bu birimler sadece basit veri transferi için uygundur. Bir mikroişlemcili sistemlerde bulunabilecek giriş/çıkış birimleri ile yapılabilecek işlerin yelpazesi oldukça geniştir. Bunlardan bazıları ve bu giriş/çıkış işlemlerinde kullanılabilecek Intel in genel amaçlı programlanabilir çevre birimlerinden bazıları şunlardır: Basit ve karşılıklı haberleşmeli paralel giriş/çıkış 8255,8256 Zamanlayıcı/sayıcı (8253 ve 8254) Kesme kontrol (8259) Seri/Paralel veri iletimi (8251 ve 8256) 1-bit veri giriş/çıkış (bit adresleme öz.) (8256) Esnek tuş/gösterge arabirimi (8279) Bu bölümde programlanabilir bir çevre arabirimi olan ve çok sıklıkla kullanılan 8255 hakkında kullanıcıya yönelik bilgiler verilecektir ile Giriş/Çıkış Bu entegre en basit manada saklayıcılardan (register) oluşan bir arabirimdir. Dış dünya ile haberleşmesi, her biri 8-bit olan A,B,C port ları yoluyla yapılır. Mikroişlemci ile haberleşmesi D 0 D 7 hatları ile olmaktadır in içinde bu üç

122 114 portun programlanması için kullanılan kontrol saklayıcısı adı verilen özel bir saklayıcı vardır. Bu kontrol saklayıcısı ile beraber 8255 toplam 4 saklayıcıya sahiptir. Bir 8255 üzerinde bir işlem yapılabilmesi için önce 8255 in CS girişine lojik 0 uygulanarak bu entegrenin seçilmesi gerekir. İçindeki 4 saklayıcıdan birinin seçimi ise A 0 A 1 adres girişleri ile belirlenir. Entegrenin seçilip içindeki saklayıcının da belirlenmesinden sonra, seçili saklayıcı üzerinde yapılacak işlemi RD veya WR girişlerinden birine uygulanan sinyal belirler geniş bir kullanım alanı olan, çoğu mikroişlemcili sistemlerde kullanılabilen programlanabilir, genel amaçlı ve önemli bir paralel I/O birimidir. Basit I/O dan kesmeli I/O ya kadar değişik durumlarda veri transferi için programlanabilir. Esnek ve çok yönlü olup birden fazla I/O portu gerektiğinde ekonomiktir I/O ucuna sahiptir. Bunlar temel olarak iki tane 8-bit paralel port A ve port B ve port C dir. Port C nin 8-biti bütün olarak veya 4-bitlik iki port olarak da kullanılabilir. Bu portların işlevi 8255 in dördüncü saklayıcısı olan kontrol saklayıcısına kontrol kelimesinin yazılmasıyla belirlenir.

123 Entegresi ve Blok Diyagramı Şekilde 8255 in uç yapısını ve entegredeki sinyallerin gruplandırılmış şeklini göstermektedir. Bir 8255 dış dünya ile haberleşmede kullanılan iki tane 8-bit porta ve iki tanede 4- bit porta, mikroişlemci ile haberleşmesini sağlayan 8-bit veri yoluna D 0 D 7 ve entegrenin seçimi, okuma/yazma,port seçimi ve resetleme kontrolüne ait uçlara sahiptir yukarıdaki tabloda bu uçlar ve görevleri verilmiştir.

124 116 Kontrol Girişleri: Bir 8255 i kontrol etmek için 6 giriş bulunur. Bunların görevleri şu şekildedir. RD: Bu kontrol sinyali okuma içindir. Bu sinyal düşük (lojik 0) olduğunda mikroişlemci 8255 in seçilmiş bir I/O potundan veriyi okur. WR: Bu Kontrol sinyali yazma içindir. Bu sinyal düşük (lojik 0) olduğunda mikroişlemci 8255 in seçilmiş I/O portuna veya kontrol saklayıcısına yazar. RESET: Bu aktif yüksek (lojik 1) bir sinyaldir. Kontrol saklayıcısını temizler ve giriş modunda bütün portları 1 ler. CS, A 0 A 1 : Bunlar entegre ve port seçim sinyalleridir. CS kodu çözülmüş bir adrese (bir kod çözücünün çıkışına) ve A 0 ve A 1 ise genellikle mikroişlemcinin A 0 ve A 1 adres hatlarına bağlanır. CS sinyali ana entegre seçin sinyalidir ve A 0 ve A 1 I/O portlarından birini veya kontrol saklayıcısını aşağıda gösterildiği gibi belirler. CS A 1 A 0 Seçilen Port A Port B Port C Kontrol Saklayıcısı 1 X X 8255 seçilmez... Kontrol Kelimesi: Aşağıdaki şekilde 8255 in kontrol saklayıcısına yazılan kontrol kelimesindeki D 7 bitine göre belirlenen BSR veya I/O modunda ki bir 8255 in bütün çalışma durumlarını gösterir.

125 117 Buradaki şekilde de 8255 in tüm fonksiyonları gözükmektedir. Bu fonksiyonlar iki moda göre sınıflandırılmıştır: Bit Set/Reset (BSR) modu ve I/O modu. BSR modu C portundaki bitleri 1 lemek veya 0 lamak için kullanılır. I/O modu ise Mod 0, Mod 1 ve Mod 2 olarak üçe ayrılır. Mod 0 da bütün portlar basit I/O portları olarak kullanılır. Mod 1 el sıkışmalı (Handshake) I/O modudur. Bu mod da Port A ve Port B, Port C nin bitlerini karşılıklı haberleşme sinyalleri olarak kullanır. Handshake I/O modunda iki çeşit veri transferi gerçekleştirilebilir: durum kontrolü ve kesmeli. Mod 2 de Port A, Port C den karşılıklı haberleşme sinyalleri kullanarak iki yönlü veri transferi yapacak şekilde ve Port B de Mod 0 veya Mod 1 de çalışmaya programlanabilir. Aşağıda ise 8255 in kontrol saklayıcısı görülmektedir. Bu saklayıcının içeriği kontrol kelimesi (control Word) olarak adlandırılır ve her port için bir I/O fonksiyonu belirler. CS hattı lojik 0 olup 8255 seçildikten sonra A 0 ve A 1 lojik 1 iken bir kontrol kelimesi yazmak için bu saklayıcı erişilebilir. Bu saklayıcı okuma işlemi için erişilemez.

126 118 Kontrol saklayıcısının D 7 biti hem I/O hem de BSR fonksiyonlarını belirler. D 7 =1 ise D 6 --D 0 bitleri çeşitli modlardaki I/O işlemlerini belirler. D 7 =0 ise Port C BSR modunda çalışır. Bir BSR kontrol kelimesi Port A ve Port B yi etkilemez. Bir mikroişlemcinin 8255 üzerinden harici birimlerle haberleşmesinde aşağıdaki üç adım uygulanır. 1. Entegre seçme lojiği ve A 0 A 1 adres hatlarına göre A,B,C portlarının ve kontrol saklayıcısının adresleri belirlenir. 2. Kontrol saklayıcısına bir kontrol kelimesi yazılır. 3. A,B,C portları üzerinden çevre birimlerle haberleşme için I/O komutları yazılır. Sonuç olarak burada devrede kullanılan programlanabilir bir çevre birimi olan 8255 hakkında gerekli bilgiler sunulmuştur. Bu bilgiler ışığında herhangi bir port çoğullama ihtiyacını 8255 aracılığı ile rahatlıkla gerçekleştirebiliriz. E de PORTA daki Bilginin PORTB ye Aktarılması : Deneyin Yapılışı : li PORTA daki bilginin PORTB ye aktarılması programını editörünüzde yazdıktan sonra 8255PORT.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek 8255PORT.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda 8255 li PORTA daki bilginin PORTB ye aktarılması programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. PORTB deki değişikliği izleyiniz.

127 119 Deney ile ilgili sorular ve raporda istenenler : in kontrol kelimesinde bilgisi var olduğunu varsayalım. Bu durumda 8255 hangi mod da çalışır F ile Yürüyen Işık Uygulaması: Deneyin yapılışı : 1.. Yürüyen ışık programını editörünüzde yazdıktan sonra YURISK.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek YURISK.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda yürüyen ışık programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. Ledlerin hareketini izleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. Yukarıda ki deneyi PIC16F877 ile gerçekleştiriniz. Frekansı 20MHz e ayarlayınız. Ledlerin durumunu karşılaştırınız.

128 120 DENEY 5 LCD MODÜLÜ Deneyin Amacı : Paralel LCD modülünün öğrenilmesinin sağlanılması. PIC ile LCD yi kontrol edilmesi ve çeşitli animasyonların yapılması. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 Arabirimi LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

129 121 Deney Hakkında Teorik Bilgiler : LCD Nedir? Avantajları Nelerdir? LCD'yi hemen hemen bilmeyenimiz yada görmeyenimiz yoktur. Bugün günlük yaşamda cep telefonlarında, beyaz eşyalarda, güvenlik sistemlerinde ve birçok elektronik sistemde kullanılan ve kendi karakter hafızaları bulunan modüller olarak tanımlamak sanırım yanlış olmaz. LCD'ler kendi içlerinde çeşitlilikler göstermesine rağmen çok temel bir sınıflandırma ile Dot Matrix ve Grafik Ekran olarak 2'ye ayırmak mümkündür. Kullanım olarak grafik ekran LCD'ler ile daha fazla işlem yapabilmemize rağmen kullanımda Dot Matrix LCD'ler kolaylık sağlamaktadır. Yazı dizimizde anlatılan HD44780 elektronik ile hobi olarak ilgilenenlerin dışında konu ile ciddi projeleri olan kişilerinde kullandığı karakter tabanlı bir modüldür. Tabi bu modüller son teknolojiler ile üretilen, renkli, arka plan renklendirmeli ve bazı teknik özellikleri daha olan Lap Top'larda kullanılan ekranlar kadar gelişmiş özelliklere sahip değildir. Ancak karakter tabanlı LCD'ler günümüzde halen endüstriyel ve ticari uygulamalarda yaygın olarak kullanılmaktadır. Bu modüller 7-Segment Display gibi sadece sayıları göstermeyip, harfleri, kelimeleri ve diğer karakterleri gösterme yetenekleri olduğundan dolayı 7-Segment Displaylerden daha uygun bir hale gelmiştir. Bu modüller basit bir ara yüze sahip olup, 780 veya 6502 gibi geleneksel işlemcilerle çok rahat sürülebilmektedir. Ayrıca hobi elektronikçileri tarafından en çok kullanılan PIC serisi mikrokontrolörlere de ideal olarak uyumlandırılabilirler. Bunun dışında PIC serisi mikrokontrolörler ile veya mikroişlemciler ile hiç uğraşmamış olsanız dahi, bir kaç anahtar kullanarak bir LCD'yi kontrol etmeniz mümkün. Şekil ve Boyutlar Karakter tabanlı modüllerin sınırlı olmasına rağmen, yine de çok miktarda değişik şekil ve boyutlarda LCD bulmak mümkündür. Satır uzunlukları 8,16,20,24,32 ve 40

130 122 karakter olarak standartlaşmıştır ve 1, 2 veya 4 satırlık versiyonlar vardır. Birkaç farklı sıvı kristal teknolojisi vardır. Örneğin "Super Turisted" tipleri, daha eski olan "Twisted Nematic" tiplerinin üzerine gelişmiş, kontrast ve görüş acısı sağlam tiplerdir. Bazı modüllerde arka aydınlatma vardır ve bu nedenle loş ışıktan da görülebilir. Arka aydınlatma yüksek gerilim çevirme devreleri gerektiren "Elektro- Luminescent" veya basit bir LED aydınlatma şeklinde olabilir. Ancak bu birkaç özellik deneysel amaçlar için önemlidir. Tüm tipler, aynı temel bilgileri görüntüleme yeteneğine sahiptir, bu nedenle belki de başlangıç için en ucuz olanı HD44780 bu iş için biçilmiş kaftandır. LCD Ayak Bağlantıları LCD modüllerinin çoğu, standart ana yüz özelliklerine uyar. 8 Veri Hattı, 3 kontrol hattı ve 3 güç hattı içeren 14-PIN'lik bir erişim sağlarlar. Bağlantılar, genelde iki yaygın şekil kullanılarak yapılmıştır. Bunlar ya 7-PIN lik iki sıra, yada 14-PIN lik tek bir sıra olarak dizayn edilmiştir. LCD GND Vdd V0 RS R/W E D0 D1 D2 D3 D4 D5 D6 D Şekil 1 : LCD nin Bacak Bağlantısı 2 adet güç kaynağı hattı vardır. Bunlar Vss ve Vdd' dir. Vdd pininin pozitif (+) gerilime, Vss'nin de 0v'a veya toprağa bağlanması gerekir. LCD modülleri veri

131 123 kitapçıklarının çoğunda kaynak/besleme gerilimi +5V gösterilmesine rağmen, 6V ve 4,5V'luk beslemelerde de oldukça iyi çalışmaktadır. Hatta bazı LCD modüllerinde besleme gerilimi 3V'a kadar düşmektedir.. Bu nedenle LCD modülleri etkin ve ekonomik olarak Pil/Batarya ile beslemek te mümkündür. PIN 3 yani V0, display ın kontrastını (parlaklıkta denilebilir...) ayarlamaya yarayan bir kontrol ucudur. Bu PIN değişken bir gerilim kaynağına veya besleme hatları arasına bağlanan bir Potansiyometrenin orta ucuna bağlanarak bu ayar yapılabilmektedir. Ancak bazı LCD modüllerinin -7V'a varan gerilimlere ihtiyaç duyduğu da göz önüne alınırsa, en basit ve kesin olarak bu PIN'in 0V'a bağlanması en uygunudur. PIN 4,5 ve 6 komut kontrol bitleri olarak isimlendirilebilirler. Bunlardan PIN 4 yani RS kayıt seçme (yazmaç seçme) bitidir ve bu komut kontrol pinlerinin ilkini oluşturur. Bu hat düşük (Lojik 0) yapıldığı durumda LCD'ye aktarılan veri bitleri komut olarak algılanır ve gerekli işlem yerine getirilir. Bu durumda LCD'den okunan veri bitleri ise, LCD'nin durumu hakkında bilgi verir. Bu hattın yüksek (Lojik 1) yapılması ile de, modüle karakter veri transferi veya alımı yapılacağı anlaşılır. Kısa ve basitçe özetlemek gerekirse, LCD'de bir karakter yazmak veya LCD'den bir karakter okumak için RS hattı yüksek, LCD'ye bir komut yollamak veya LCD'nin durumu hakkında bilgi almak istersek RS hattını düşük yapmamız gerekmektedir. PIN 5 yani R/W hattı, kısaca oku / yaz anlamına gelmektedir. Eğer LCD'ye karakter veri transferi yapılacaksa veya bir komut yollanacaksa düşük, karakter veri alımı yapılacaksa veya yazmaçlardan durum bilgisi okunacaksa yüksek yapılır. PIN 6 yani E ise komut kontrol bitlerinin sonuncusunu oluşturur ve yetki biti demek yeterlidir. Bu giriş, modül ve veri hatları arasında, komutların veya karakter verilerinin, gerçek anlamda aktarımını başlatmak için kullanılır. LCD'ye yazılırken, veri aktarımı sadece bu sinyalin düşen kenarında gerçekleşir. Bununla birlikte, display'den okuma yapılırken, veri yükselen kenar hemen kısa bir süre sonra hazır olur ve sinyal tekrar düşünceye kadar hatta kalır PIN 7 ile 14 arasıdaki uçlar sekiz adet veri hattıdır. (D0'dan D7'ye) Veri display'e, ya 8 bit'lik tek bir Byte olarak yada, içi 4 bit'lik nibble'lar olarak aktarılır veya

132 124 display'den okunur. Bu ikinci durumda, sadece üst dört veri hattı (D4' den D7' ye ) kullanılır. Bu 4-Bit modu, bir mikrokontrolör kullanıldığında, daha az giriş / çıkış hattına gerek olduğunda kullanışlıdır. G. LCD nin Temel Kullanımı : Deneyin Yapılışı : 1. LCD temel kullanım programını editörünüzde yazdıktan sonra YANSON.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek YANSON.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda kursörün yansön programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız.. 6. LCD ekranını izleyiniz. Kursör hareketini izleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. Kursör imlecinin hızını artırmaya çalışınız. H. LCD ye Bilgi Gönderilmesi : Deneyin yapılışı : 1. LCD ye bilgi gönderme programını editörünüzde yazdıktan sonra MERHABA.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek MERHABA.HEX dosyasını elde ediniz.

133 Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda LCD ye bilgi gönderme programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. LCD ekranını izleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. Ekranda yazan merhaba yazısı yerine selamlar yazısını yazın. 2. $FE, $C0 komutunun yaptığı işi açıklayınız? İ. LCD de Animasyon : Deneyin yapılışı : 1. LCD de animasyon programını editörünüzde yazdıktan sonra ANIMASYON.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek ANIMASYON.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda LCD de animasyon programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. LCD deki animasyonu izleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. Farklı animasyonlar üretiniz ve bunları işlem basamağına göre uygulayınız.

134 126 DENEY 6 EEPROM KULLANIMI Deneyin Amacı : 24CXXX EEPROM iç yapısının öğrenilmesi. PIC lerin içinde bulunan EEPROM lar hakkında bilgi verilmesi ve PIC ile EEPROM kontrolünün sağlanılması. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 Arabirimi LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

135 127 Deney Hakkında Teorik Bilgiler : SERİ EEPROMLAR Mikrokontrolör uygulamalarında dahili hafızaların yeterli olmadığı durumlarda harici seri hafızalara başvurulur. Amaç veri toplamak ve saklamak veya saklanmış verileri kullanmak olabilir. Veri erişim hızının yüksek olmadığı ve giriş/çıkış bacak sayısının önem kazandığı mikrokontrolör uygulamalarında çevre donanım elemanlarının (eeprom, RTC, sıcaklık ve nem sensörleri gibi) mikrokontrolöre bağlantı şekli önem kazanmış ve mümkün olan en az sayıda bağlantı olması arzulanmıştır. Bu şekilde data/clock (veri/saat pulsu) veya 1 wire (tek telli) gibi bağlantı standartları geliştirilmiştir. Tabiidir ki bu bağlantıları destekleyen protokoller de geliştirilmiştir (I2c, SPI, ) I2c protokolünü anlatmadan önce data/clock yapısının nasıl işlediğine bir göz atalım. Bilgi akışının mikrokontrolörden seri eeprom yönüne doğru olduğunu varsayalım. Seri eeproma gelen her bir saat sinyali, data hattında kendisi tarafından okunması gereken bir bilginin hazır olduğunu bildirir. Bu bilgi seri eeprom tarafından okunur. Mikrokontrolör tarafından üretilen clock (saat) sinyali seri eepromun adım adım kontrol edilmesini sağlar. Data/clock seri haberleşmesinde clock (saat) sinyali aktifleşmeden önce seri hale dönüştürülmekte olan bilginin sıradaki biti veri hattında hazır tutulur. Aktifleşen saat sinyali ile bu veri biti seri eeproma iletilmiş olur. Bilgi akışı ters yönde ise her bir saat sinyali aktifleşmesinde seri eeprom data hattına bilginin sıradaki bitini koyar. Mikrokontrollerde bu bilginin okunup paralel hale getirilmesi sağlanır. Seri eeproma bilginin gönderilmesi aşamasında bazı ilave bilgiler gönderilirken, bazı bilgiler de alınır. Bunlar, başla, okuma-yazma komutu, adres bilgisi, alındı bilgisi ve tamam-devam bilgisi, bitir komutu vs. dirler. 24CXX Serisi Seri Eepromlar 24 serisi EEPROMların bacak isimlendirmesi ve görevleri bakımından iki gruba ayrılmaktadır. Bazı üreticilerin ürünlerinde farklılık olmakla beraber genelde bu iki

136 128 grup yapı standartlaşmıştır. 24c01 den 24c16 ya kadar olanlara grup1 dersek, 24c32 den 24c512 ye kadar olanlara grup2 olarak tarif edebiliriz. 1 A0 Vcc A1 A2 WP SCL Vss SDA 5 Şekil 1 : 24LC01B Seri EEPROM un Bacak Bağlantısı [Vss: toprak, Vcc: besleme, WP: yazma koruması, SCL: clock (saat), SDA: data (veri), NC: boş (no connection), AO, A1, grup2 seri EEPROMlarda çipi seçmek için kullanılır.] Haberleşmenin başlatılması ve bitirilmesi (START/STOP) için kullanılan komut her iki grup için de aynıdır. Başla komutu, saat sinyali Vcc de iken, veri hattının 0 Volta çekilmesi ile aktifledir. Bitir komutu ise yine saat sinyali Vcc de iken, veri hattının 0 Volttan Vcc ye çekilmesi ile aktifledir. Verilerin hat üzerinde değiştirilmesi saat sinyali 0 volt düzeyinde iken gerçekleştirilir. 24c baytlık hafıza olduğu için bir baytlık adres bilgisi ile kolayca adreslenebilmektedir. 24c04-24c16 arası seri EEPROMlarda bir bayt çipin bütün adreslerine erişmek için yeterli olmadığından kontrol baytındaki boşta kalan 3 bit bu çip içerisindeki alanları adreslemekte kullanılır. Grup 1 çiplerini yazmaya karşı korumak için bir bacak ayrılmıştır. Çip üzerinde A0,A1,A2 olarak gösterilen bacakların bir görevi yoktur. Boşta bırakılabilir, yada toprak veya Vcc ye bağlanabilir.

137 129 Grup 2 seri EEPROMlarda kontrol baytından sonra iki tane adres baytı gönderilir. 2 bayt ile en fazla 64 Kbayt adreslenebildiği için 24c32 (4 Kbayt) den 24c512 (64Kbayt) ye kadar ki çipler bu iki adres baytı ile rahatlıkla adreslenebilmektedir. Kontrol baytı içerisinde kalan 3 bitlik boş alan ise çiplerin adreslenmesinde (chip select yada device select) kullanılır. Bu sayede aynı data/clock hattı üzerinde bu çiplerden en fazla 8 tanesi bağlanabilir hale getirilmiştir. Çip üzerinde A0,A1,A2 olarak gösterilen bacakların görevi çiplerin adreslenmesini sağlamaktır. Örnek olarak bir çipde bu bacaklar A0 toprağa, A1 Vcc ye, A2 toprağa bağlanmış ise, bu çipe bilgi yazmak yada bilgi okumak için kontrol baytı A2 biti 0, A1 biti 1, A0 biti 0 olarak hazırlanmalıdır. Yazmaya karşı koruma grup2 çiplerde bulunmamaktadır. Kontrol baytı hazırlanması da I2c protokolünde standartlaştırılmıştır. İlk 4 biti seri EEPROMlarda ve RAM'lerde hex (10) yada 0xA ile başlar. I2C protokolü kullanan bazı RTC lerde (real time clock) de kontrol baytı 0xA ile başlamaktadır. Seri eeprom haberleşmesinde kontrol baytı 0xA ile başlamazsa, geri kalan bilgiler ne kadar da standarta uysa haberleşme gerçekleşmez. Bu şekilde aynı veri / saat yolu üzerinde farklı kontrol baytı ile başlayan çipler de bağlanabilmektedir (bilgi kaybının ve harici gürültülerin azaltılması için haberleşme hızı düşürülmeli ve hat mümkün olduğunca kısa tutulmalıdır.) Kontrol baytında ikinci 4 bitlik alanda A2, A1, A0 ve okuma/yazma biti bulunmaktadır. 4. bit 0 (sıfır) ise yazma (mikrokontrolörden O ut), 1 (bir) ise okuma (mikrokontrolöre I nput) Haberleşme sırasında mikrokontrolörden gönderilen her bir bayt bilgi arkasından seri eeprom alındı bilgisi olarak bir bit cevap verir (acknowledge, 0 volt). Bunun tersi durumda da yani seri eepromdan bilgi okunurken de mikrokontrolör, gelen her bir bayt bilgi arkasından bir bitlik alındı bilgisi göndermesi gerekir. Haberleşmenin durdurulması alındı bilgisinin tersi (nack, Vcc) ve ardından stop komutunun gönderilmesiyle sağlanır. Haberleşmenin herhangi bir zamanda kesilmesi için başlat veya bitir komutu göndermek yeterlidir.

138 130 Grup 1 Ve Grup 2 Seri EEPROM larda Okuma Ve Yazdırma İşlemleri Grup1 Seri EEPROMlarda Okuma İşlemi Seri eeprom okuma komutunda doğrudan okunacak adres bilgisi gönderilemediği için seri eeprom önce o adrese yazdırma işlemi yapılacakmış gibi kandırılır fakat yazdırma işlemi yapılmadan tekrar start komutu gönderilir. Bu şekilde bilgi okunacak adresin seri eeprom içerinde saklanması sağlanır. Daha sonra okuma işlemi seri eeprom içerisinde saklanan bu adresten yapılır. Seri eeprom kendisinden istenen bilgiyi seri olarak gönderdikten sonra en son okunan adres değerini bir arttırır ve mikrokontrollerden gelecek tamam mı (nack) devam mı (ack) bilgisini bekler. Okuma işlemi istenirse kesintisiz olarak bu şekilde devam ettirilebilir. Yukarıda da belirttiğimiz gibi her okuma işlemi bittikten sonra seri eeprom içerisinde en son okunan adres değeri bir arttırılarak saklanır (stop komutu gönderilmiş olsa bile). Eğer en son okunan adresten sonraki adres okunmak istenirse bu adres tekrar gönderilmez ve Current Read adı verilen işlemle o adresteki bilgi okunmuş olur. Bu okuma işleminden sonra da seri eeprom içerisindeki en son okunan adres bilgisi tekrar bir arttırılarak saklanır. GRUP1 SERİ EEPROMLARDA BİLGİ YAZDIRMA Bu şekilde görünen işlem page write işlemidir ve isteğe bağlı sayıda (Grup 1 için en fazla 16 bayt, grup 2 için en fazla 8x8=64 bayt) bilgi aynı anda yazdırılabilir. Page write işlemi dikkatli yapılması gereken bir işlemdir ve mutlaka her bir tipin datasheetinden dikkatlice okunup uygulanması gerekir. Page sınırlarından sonra devem eden okuma yada yazma işlemleri tampon belleğin başına dönülüp, bilgilerin kaybolmasına neden olabilir!

139 131 GRUP2 SERİ EEPROMLARDA OKUMA İŞLEMİ Okuma işlemi için adres girmek Grup1 de anlatıldığı gibidir. NO ACK komutu yerine ACK komutu gönderilerek sonraki 1 bayt bilgide okunabilirdi. Bu şekilde tekrar tekrar start-kontrol-adres1-adres0-start-kontrol baytları gönderilmeden hafızanın tamamı okunabilir. GRUP2 SERİ EEPROMLARDA YAZMA İŞLEMİ Bu işlem page write işlemidir. Data n ile gösterilen bilgi seri eeproma gönderildikten sonra STOP komutu gönderilirse bir baytlık bilgi seri eeproma yazdırılmış olur. EEPROM VERİ BELLEĞİ EEPROM veri belleği normal işlem boyunca okunabilir ve yazılabilirdir. Bu bellek direkt olarak kayıt dosya boşluğuna planlanmamıştır. Bunun yerine bu bellek, özel fonksiyon kaydı üzerinden dolaylı olarak adreslenir. Burada bu belleği okuyan ve yazan 4 özel kaydedici (SFR) mevcuttur. Bu kayıtlar : EECON1 EECON2 EEDATA EEADR EEDATA yazma/okuma için 8 bitlik veri tutar ve EEADR erişilen EEPROM adreslerini saklar. PIC16C84 aygıtı 0H ile 3FH genişliğindeki adresli EEPROM belleğinin 64 bitine sahiptir. EEPROM veri belleği byte ları okuma ve yazmaya olanak verir. Byte lar otomatik olarak veri siler ve yeni veri yazar. (yazmadan önce siler). EEPROM veri belleği yüksek silme/yazma süreçlerine oranlanmıştır. Yazma zamanı chip üzeri

140 132 timer tarafından denetlenmektedir. Yazma zamanı chipten chipe göre değiştiği gibi, voltaj ve ısı değerlerine göre de değişebilir. Aygıt kod korumalı olduğu zaman, CPU EEPROM belleğini okumaya ve yazmaya devam edebilir. PIC programlayıcısı artık bu belleğe erişemeyebilir. EEADR EEADR kaydı EEPROM verisinin maksimum 256 byte ını adresleyebilir. Üstteki iki bit adresi decode edilmiştir. Bu şu anlama gelmektedir ki, 64 bitin bellek boşluğunda olduğundan emin olmak için bu iki bit her zaman 0 olmalıdır. EECON1 ve EECON2 kayıtları (registerleri) EECON1, fiziksel olarak yerine getirilen 5 düşük sıralı bitli kontrol kaydıdır. Üst üç biti mevcut değildir ve 0 olarak okunur. RD ve WR kontrol bitleri okuma ve yazmayı başlatırlar. Bu bitler silinemezler, yalnızca yazılıma kurulabilirler. Bu bitler, okuma ve yazım işlemlerinin tamamlanması olarak donanımdan silinirler. WR nin yazılımdan silinmesinin olanaksızlığı, yazım işleminin tesadüfi vaktinden evvel sona erdirilmesini önler. WREN biti, kurulduğunda yazım işlemine başlamaya izin verilir. Yüksek güçte, WREN biti temizlenir. Yazım işlemi normal işlem süresinde MCLR, RESET veya WDT- zaman aralığı reset tarafından kesildiğinde WRERR biti kurulur. Bu durumlarda, resetin ardından kullanıcı WRERR bitini kontrol edebilir ve yerleşimi yeniden yazabilir. EEDATA ve EEADR kayıtlarındaki veri ve adresler değişmeyecektir. Yazım tamamlandığında EEIF bayrak biti kesmesi kurulur. Bu kesme yazılımdan silinmelidir. EECON2 fiziksel kayıt değildir. EECON2 okuması tüm 0 ları okuyacaktır. EECON2 kaydı harici olarak data EEPROM yaz serisinde kullanılır.

141 133 EEPROM VERİ BELLEĞİNİN OKUNMASI Veri bellek yerleşimini okumak için, kullanıcı, adresi EEADR kaydına yazmalıdır ve RD kontrol bitini kurmalıdır. (EECON1<0>). Veri sıradaki devirde, EEDATA kaydında mevcuttur, bunun için bu sıradaki komutta okunabilmektedir. EEDATA bu değerleri diğerleri okununcaya kadar veya kullanıcı tarafından yazılıncaya kadar tutmaktadır. (yazım işlemi boyunca) EEPROM VERİ BELLEĞİNE YAZIM EEPROM veri yerleşimini yazmak için kullanıcı ilkin adresleri EEADR kaydına, verileri EEDATA kaydına yazmalıdır. Daha sonra kullanıcı her bit e yazımın başlatması için spesifik ardışıkları takip etmelidir. İlaveten EECON1 deki WREN biti aktif yazıma kurulmalıdır. Bu mekanizma beklenmeyen kod yürütülmesinden kaynaklanan tesadüfi EEPROM verilerin üzerine yazımı önler. Kullanıcı, EEPROM un güncelleştirilmesi hariç her zaman WREN bitini temiz tutmalıdır. WREN biti donanım tarafından silinmektedir. Yazım serisi başlatıldıktan,wren bitinin temizlenmesi bu yazım etkilemektedir. WREN biti kurulmadıkça, WR bitinin kurulması engellenir. şeklini Yazım şeklinin tamamlanmasından sonra, donanımdaki WR biti temizlenir ve EE yazım bitini bayrak biti (EEIF) kurulur. Kullanıcı bu kesmeyi aktifleştirebilir yada etkinleştirebilir. EEIF yazılım tarafından silinmelidir. NOT: EEPROM veri bellek E/W cycle zamanı 10ms aşabilmektedir. (tipik) Yazım şeklinin bitiminden emin olmak için EE kesmesi kullanılmalı veya WR biti seçilmelidir. (EECON<1>). Her iki durum şeklinin tamamlandığını ifade eder.

142 134 J. Programlama Esnasında Dahili EEPROM a Veri Girilmesi : Deneyin Yapılışı : 1. Programımızı editörünüzde yazalım, sonra DAHILI.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek DAHILI:HEX dosyasını elde ediniz. 3. Bilgisayarda programızı PIC e yükleyelim. 4. Simülatör- programlayıcı anahtarını programlayıcı konumuna alınız. 5. Editörümüzden yüklediğimiz programı okutalım. 6. EEPROM içerisindeki değerleri görmeye çalışalım. Deney ile ilgili sorular ve raporda istenenler : 1. PIC in dahili EEPROM una bilgi yazan komutunu ve yazılımını yazınız. 2. Dahili EEPROM değerlerini birkaç kez değiştiriniz. K. Dahili EEPROM un Okunup/ Yazılması : 1. Programımızı editörünüzde yazalım, sonra DAHILI.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek DAHILI:HEX dosyasını elde ediniz. 3. Bilgisayarda programızı PIC e yükleyelim. 4. Simülatör- programlayıcı anahtarını programlayıcı konumuna alınız. 5. Editörümüzden yüklediğimiz programı okutalım. 6. EEPROM içerisindeki değerleri görmeye çalışalım.

143 135 Deney ile ilgili sorular ve raporda istenenler : 1. PIC in dahili EEPROM una bilgi yazan komutunu ve yazılımını yazınız. L. Harici EEPROM un Okunup/ Yazılması: Deneyin yapılışı : 1. Harici EEPROM programını editörünüzde yazdıktan sonra EEPROM.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek EEPROM.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda harici EEPROM programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. EEPROM yüklenilen değerleri inceleyiniz. Deney ile ilgili sorular ve raporda istenenler : 1. EEPROM Belleği okuyan ve yazan kaç tane kaydedici vardır. Açıklayınız?

144 136 DENEY 7 STEP MOTOR KONTROLÜ Deneyin Amacı : Step motorun yapısının incelenmesi. Step motorun çalışma prensibinin saptanmasını sağlamak. Step motoru PIC yardımıyla kontrol etmenin sağlanması. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 Arabirimi LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

145 137 Deney Hakkında Teorik Bilgiler : STEP MOTOR Adım kontrollü motorlar dijital darbe frekanslarını harekete çeviren aygıtlardır. Genellikle bilgisayar kontrollü hassas ve kesin hareket denetimi gerektiren, yazıcılar, otomatik parça işleme tezgahları, disket sürücüler ve bunun gibi uygulamalarda yaygın olarak kullanılırlar. Adım kontrollü motorlar DC motorların aksine voltaj verilince serbestçe dönmeye başlamazlar, onları döndürebilmek için belirli bir sıra dahilinde akım darbeleri vermek gerekir. Bu darbelerin sırası ve veriliş sıklığı step motorun hızını ve dönme yönünü belirler. Her bir darbe geldiğinde step motor sabit bir açı birimi kadar hareket eder, bu açı 1.8 veya 7.5 derece olup motor tipine göre farklılık gösterir. Sabit adım açısı step motorları hareket kontrolünde DC motorlara üstün kılan özelliktir. Step motor karakteristiklerinde belirtilen torque ve hız değerleri aşılmadığı sürece bir bilgisayar sistemi yolladığı adım komutlarını sayarak step motorun kaç adım attığını bilir ve böylece pozisyon hakkında kesin bilgi sahibidir. Step Motorlar manyetik alanların karşılıklı etkileşimi (itme-çekme) prensibiyle çalışırlar. Sürücü durumdaki manyetik alan stratejik olarak yerleştirilmiş bobin gruplarının enerjilendirilip ardından enerjinin kesilmesi yoluyla döner. Bu dönen manyetik alan step motorun sabit mıknatıslı mil rotorunuda beraber çekerek döndürür ve hareket oluşur. Eğer bobinleri enerjilerken belirli bir sıraya uyarsak motor döner aksi takdirde motorda vızıldayan ve yerinde duran bir rotor mili elde ederiz. Piyasada en çok kullanılan step motor tipi 4 - bobinli Unipolar tiptir. Bu tip motorun kullanılması sadece bobin voltajını açıp, kapatmak yoluyla olduğundan oldukça kolaydır. Bipolar step motorlar ise her defasında bobin voltajının yönünün değiştirilmesini gerektirir ki bu daha karmaşık kontrol devreleri demektir.

146 138 Step motorların dönen kısmı (rotor) sabit mıknatıstan yapılmıştır. Duran kısmında (Stator) ise belirli aralıklarla yerleştirilmiş elektromıknatıslar bulunmaktadır. Elektromıknatısın içinden geçen akımın yönüne göre N-S kutuplarının yönü de değiştirilebilmektedir. Bir step motorun döndürülebilmesi için belli bir sırayla bu elektromıknatısların enerjilenmesini sağlayan gerilimler motor uçlarından uygulanır. Böylece rotordaki sabit mıknatıs statorun enerjileşen kutupları tarafından yönlendirilir.(n-s kutupları birbirini çeker, N-N veya S-S kutupları birbirini iter.) Step motor kontrolü uygulamalarında eski bir disket sürücüden sökeceğiniz bir step motoru kullanmak en uygun bir yoldur. Bu tür motorlarda genellikle 4 kablo çıkışı vardır ve bipolar step motor adı verilir. PIC in çıkış uçlarını bu uçlara direkt olarak bağlanması mümkün değildir. Çünkü PIC in vereceği akım 20 ma civarındadır. Step motor çok daha fazla akım çektiğinden, PIC çıkışı muhakkak bir transistor lü sürücü devresi kullanılarak motora bağlanmalıdır X N S N S N S Y Kullandığımız Step motor 2 faz, 20 Adımlıdır. Bu da 360o lik tam bir dönüş içerisinde 18o lik adımlarla ilerleyen motor demektir. X-X ve Y-Y uçlarına uygulanacak gerilimler elektromıknatıslarda oluşacak N-S kutuplarının yönünü

147 139 belirleyecektir. Step motorlarının diğer bir çeşidi de unipolar step motorlardır. Bu motorlarda 5 kablo çıkışı vardır. Bunlarda yine iki sarım olmakla birlikte, her sarımın ortasından bir uç daha çıkarılmıştır. Bu uçlar birbirine bağlanarak (COM) uç elde edilmiştir. Aşağıda bu tip motorun şematik gösterilişi verilmiştir. COM X X ROTOR Y Y Adım X X Y Y (1) Yukarıdaki gerilimler tablosundaki 1 ler, motorun uçlarına uygulanacak olan pozitif gerilimleri ifade etmektedir. Bu gerilim 5 V olabileceği gibi, motor sürücü devresi tarafından elde edilecek daha büyük bir gerilim de olabilir.

148 140 Biz uygulamamızı denemek için PORTB ye bağladığımız LED leri kullandığımız için tabloda ki değerleri PIC assembly programında kullandığımız çevrim tablosuna yazmamız yeterlidir. Ancak bir motor sürücü devresi yapıldıysa transistörleri sürmek için daha farklı bir devre gereklidir. Step motor kullanılan gerçek uygulama devresinde bu durum göz önüne alınmalıdır. PIC çıkışından step motora uygulanan sinyalin frekansı çok yüksek olduğundan step motor bu frekansta uygulanan gerilimlerle yeterli kutuplaşma sağlamayabilir. Bu nedenle çevrim tablosundaki adımlar arasında gecikme sağlayan alt program muhakkak kullanılmalıdır. M. Step Motorun Bir Yönde Kontrolü : Deneyin Yapılışı : 1. Step motorun bir yönde kontrolü programını editörünüzde yazdıktan sonra STEP_1.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek STEP_1.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda step motorun bir yönde kontrolü programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. Step motorun hareketini izleyin. Deney ile ilgili sorular ve raporda istenenler : 1. Step motoru kontrolünü PIC16F877 ile 20 MHz de bir daha deneyin farkları inceleyin. 2. Step motorun adım tablosunu yazınız.

149 141 N. Step Motorun Buton Kontrollü İki yön Kontrolü : Deneyin yapılışı : 1. Step motorun iki yönde kontrolü programını editörünüzde yazdıktan sonra STEP_2.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek STEP_2.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda step motorun iki yönde kontrolü programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. Step motorun hareketini izleyin. Deney ile ilgili sorular ve raporda istenenler : 1. Step motoru kontrolünü PIC16F877 ile 20 MHz de bir daha deneyin farkları inceleyin.

150 142 DENEY 8 LCD UYGULAMASI Deneyin Amacı : Klavyeden girilen binary ifadenin decimal karşılığının LCD ye yazılması sağlamak. Bunun uygulamasının yapılması. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 Arabirimi LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

151 143 Deney Hakkında Teorik Bilgiler : Klavyeden girilen binary ifadenin decimal karşılığının LCD ye yazılması : Deneyin Yapılışı : 1. LCD uygulaması programını editörünüzde yazdıktan sonra BINDEC.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek BINDEC.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda LCD uygulaması programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. PIC deney setine enerji veriniz. 7. Klavyeden bir binary sayı giriniz. Girilen değerin LCD de decimal karşılığı olup olmadığına bakınız. Deney ile ilgili sorular ve raporda istenenler : 1. Çevrim tablosu oluşturunuz.

152 144 DENEY 9 SAAT UYGULAMASI Deneyin Amacı : Saat uygulamasının yapısını öğrenmek ve bunu deney seti üzerinde gerçekleşmesini sağlamak. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 Arabirimi LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

153 145 Deney Hakkında Teorik Bilgiler : O. Dijital Saat Uygulaması: Deneyin Yapılışı : 1. Saat uygulaması programını editörünüzde yazdıktan sonra SAAT.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek SAAT.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda saat uygulaması programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. Saat için kullanılan displaylerdeki hareketleri izleyin Deney ile ilgili sorular ve raporda istenenler : 1. Dijital saat devresindeki döngü yapılarını açıklayın? 2. Saat programının algoritmasını çiziniz?

154 146 DENEY 10 PWM SİSTEMİNİN TANITILMASI VE KULLANILMASI Deneyin Amacı : PWM sistemin tanıtılması ve bu metodu kullanarak pals genişliğinin ayarlanmasının sağlanılması. PIC ile bu PWM sisteminin oluşmasının sağlanılması. Deneyin Bağlantı Şeması : Programlama Ve Simülatör Kartı 16F84 Anakart 8255 Arabirimi LCD Arabirimi LED Display Arabirimi Step Motor Arabirimi 16F877 Anakart LED Display Arabirimi EEPROM Arabirimi

155 147 Deney Hakkında Teorik Bilgiler : PWM (Pulse-Width-Modulation = Pals genişliğini ayarlama ) Bir mikroişlemci ile dijital bilgiye karşılık gelen voltajı üretmenin birkaç alternatif metodu vardır. Bunlardan ilki DAC0800 gibi bu iş için yapılmış bir entegreden yardım almaktır. Bir diğer yöntem ise entegre yerine 16 adet direnç kullanarak R-2R tipinde bir direnç merdiveni ile sorunu çözmektir ki bu metod yazılım olarak büyük kolaylıklar getirmesi yanında çok sayıda direnç kullanımını gerektirir En ucuz metod ise PWM - Pulse Width Modulation - Darbe Genişlik Modülasyonu tekniği ile dijital bilgiyi voltaja dönüştürmektir. Bu teknik temelde bir adet direnç ve kondansatörden oluşan bir integrator ile işi halletmesine rağmen bazı dezavantajlara sahiptir. En önemli dezavantajı kondansatör sürekli deşarj eğiliminde olacağından mikroişlemcinin yaptığı işe ara verip, dinamik RAM belleklerdeki refresh olayına benzer bir mantıkla kondansatörü PWM dalgasıyla sık sık şarj etmesi gerekir. Tabii voltaja karşılık gelecek PWM dalgasını yazılım içinde üretmekte, R-2R tekniğindeki den çok daha fazlasını gerektirir. PWM tekniği kullanan hardware portu içeren mikroişlemciler mevcuttur. PIC ailesinde PIC16C65A, 16C74A, 16F877 gibi işlemcilerde DAC amacına uygun PWM devresi ve portu entegre içinde yer alır. Bu tip işlemcilerde PWM registerini uygun biçimde ayarlayıp PWM dalgasını elde edebilirsiniz yani diğer bir deyişle % oranları ve süreklilik gibi programın sürekli ilgilenmesini gerektiren bir sürece gerek kalmaz. PWM metodu PIC in çıkış uçlarından birisinden kare dalga sinyali üretme işlemidir. Kare dalganın pals genişliğini ayarlama suretiyle elde edilen gerilimin DC voltmetre ile ölçülen değerini değiştirmiş olur. PIC ile ilgili herhangi bir devre kurduğumuzu varsayalım. PIC te PORTB nin bir nolu bacağına led bağladığımızı düşünelim. Devremize gerilim verdiğimizde yapılan program gereği ledimiz yanıp sönüyor. Eğer Led i çıkarıp yerine bir voltmetre bağlayacak olsaydık. 2.5 V civarında bir gerilim okuyacaktık. Şimdi PIC programı

156 148 aracılığıyla bu gerilimin nasıl değiştirileceği hakkında temel elektronik bilgisini verdiğinizde yapılacak programın hiç de zor olmadığını göreceksiniz. PWM Metodu : PWM metodunu anlayabilmek için eşit aralıklarla LED yakıp söndürme programlarında elde ettiğimiz çıkış eğrisini inceleyelim. Peryot Peryot 5V 0V Bekleme Süresi Duty saykıl (İş Süresi ) Yukarıdaki çıkış eğrisinde iş süresi LED in yanış süresi,bekleme süresi de sönük kalma süresidir. Eğer bir Peryot içerisindeki bu süreler birbirine eşitse çıkış gerilimin ortalama değeri 2.5 V olur. 5V %50 V 0V %50 VÇIKIŞ = 2.5 Bir Peryot içerisindeki iş süresi ve bekleme süresi oranları değiştirilirse çıkışta ölçülecek gerilimin değeri de değiştirilmiş olur.

157 149 %75 5V VÇIKIŞ 2.5 0V %25 Görüldüğü gibi iş süresi uzatıldığında çıkış gerilimin ortalama değeri 2.5 V tan büyük olmaktadır. Eğer iş süresi %100 olursa çıkış gerilimi 5V, iş süresi % 0 olursa çıkış gerilimi 0 V olur. Bu defa iş süresinin bekleme süresinden az olduğu duruma örnek verelim. %25 5V 0V %75 VÇIKIŞ < 2.5 V Çıkış gerilimin ortalama değeri bir Peryot içerisindeki iş süresi ve bekleme süresi oranıyla doğru orantılıdır. Örneğin ; İş süresi %50 ise çıkış gerilimi (5V) 2.5 V İş süresi %25 ise çıkış gerilimi (5V) 1.25 V İş süresi %75 ise çıkış gerilimi (5V) 3.75 V olur.

158 150 Deneyin yapılışı : 1. PWM programını editörünüzde yazdıktan sonra PWM.BAS adıyla kaydediniz. 2. DOS ortamına geçip kaynak dosyayı derleyerek PWM.HEX dosyasını elde ediniz. 3. Deneyin bağlantı şemasını kurunuz. 4. Bilgisayarda PWM programını PIC e yükleyiniz. 5. Simülatör- programlayıcı anahtarını simülatör konumuna alınız. 6. PIC deney setine enerji veriniz. 7. Çıkışa bağlı olan ledin durumunu inceleyin. Ledin parlaklığının değiştiğini görün. Deney ile ilgili sorular ve raporda istenenler : 1. PWM sistemi ne mantık üzerine kurulmuştur. Dalga şekli çizerek açıklayın?

159 EKLER 151

160 152 DENEY YAZILIMLARI deney1_a.bas bir ledin yakılması trisb=% portb çıkış portb.0 =1 portb nin 0.biti 1 end deney1_b.bas bir ledin yakıp söndürülmesi trisb=% loop: high portb.0 portb nin 0.biti 1 pause 500 0,5 sn bekle low portb.0 pause 500 goto loop end

161 deney1_c.bas porta daki bilginin portb ye aktarılması adcon1=7 16f877 için porta I/O trisa=% trisb=% loop: portb=porta goto loop end deney2_a.bas yürüyen ışık programı trisb=% i var byte loop: portb=$00 pause 500 portb=$01 pause 500 for i=1 to 7 portb=portb << 1 pause 500 next i for i=1 to 7 portb=portb >> 1 pause 500 next i

162 154 goto loop end deney2_b.bas binary sayıcı adcon1=7 trisa=% trisb=% sayac var byte i var byte loop: sayac=$00 portb=sayac pause 500 for i=1 to 255 sayac = sayac + $01 pause 500 portb= sayac next i goto loop end deney2_c.bas buton kontrollü binary sayıcı

163 155 adcon1=7 trisa=% trisb=% sayac var byte i var byte sayac=$00 portb=sayac loop: if porta.0==0 then sayac=sayac+$01 endif if porta.1==0 then sayac=sayac-1 endif portb=sayac pause 500 goto loop end deney3_a.bas kesme uygulaması on interupt goto kesme trisb=% trisa=% intcon=%

164 156 dongu goto dongu disable kesme: if porta.0=0 then porta.0=1 else porta.0=0 endif pause 500 resume enable end deney3_b.bas BCD sayıcı adcon1=7 trisa=% trisb=% sayac var byte sayac=$00 loop: if porta.0==0 then if sayac>=$09 then sayac=$00 else sayac=sayac+1

165 157 endif endif if porta.1==0 then if sayac=$00 then sayac=$09 else sayac=sayac-1 endif endif lookup sayac, [$3f, $06, $5b, $4f, $66, $6d, $7d, $07, $7f, $6f], portb pause 500 goto loop end deney4_a.bas 8255 kullanımı adcon1=7 trisa=% trisb=$00 cw var byte pa_d var byte _a0 var porta.0 _a1 var porta.1 _rd var porta.2 _wr var porta.3 _cs var porta proramlama pb çıkış pa giriş cw=$90

166 158 high _a0 high _a1 low _cs low _wr portb=cw high _wr high _cs loop: trisb=$ff low _a0 low _a1 low _cs low _rd pauseus 100 pa_d=portb high rd high _cs high _a0 trisb=$00 low _cs low _wr portb=pa_d high _wr high _cs pause 500 goto loop end

167 159 deney4_b.bas 8255 kullanımı adcon1=7 trisa=% trisb=$00 cw var byte pa_d var byte i var byte _a0 var porta.0 _a1 var porta.1 _rd var porta.2 _wr var porta.3 _cs var porta proramlama tüm portlar çıkış cw=$80 high _a0 high _a1 low _cs low _wr portb=cw high _wr high _cs loop: pa_d=$00 gosub pa_send pause 500 pa_d=$01 gosub pa_send pause 500 for i=1 to 7 pa_d=pa_d << 1

168 160 gosub pa_send pause 500 next i for i=1 to 7 pa_d=pa_d >> 1 gosub pa_send pause 500 next i goto loop pa_send low _a0 low _a1 low _cs low _wr portb=pa_d high _rd high _cs return end deney5_a.bas lcd uygulaması adcon1=7 trisa=% trisb=% trisc=% trisd=% 'Lcd tanımları define lcd_dreg portb

169 161 define lcd_rsreg porta define lcd_rsbit 1 define lcd_ereg porta define lcd_ebit 0 define lcd_bits 8 define lcd_lines 2 ' 'Ana program portd=$00 pause 500 lcdout $fe,1 lcdout $fe,$06 lcdout $fe,$0f end deney5_b.bas adcon1=7 trisa=% trisb=% trisc=% trisd=% 'Lcd tanımları define lcd_dreg portb define lcd_rsreg porta define lcd_rsbit 1 define lcd_ereg porta define lcd_ebit 0 define lcd_bits 8 define lcd_lines 2 '

170 162 'Ana program portd=$00 pause 500 lcdout $fe,1 lcdout $fe,$06 lcdout $fe,$0f lcdout Merhaba Dunya end deney5_c.bas adcon1=7 trisa=% trisb=% trisc=% trisd=% i var byte 'Lcd tanımları define lcd_dreg portb define lcd_rsreg porta define lcd_rsbit 1 define lcd_ereg porta define lcd_ebit 0 define lcd_bits 8 define lcd_lines 2 ' 'Ana program portd=$00 pause 500 lcdout $fe,1

171 163 lcdout $fe,$06 lcdout $fe,$0c loop: lcdout $fe, $80 lcdout Pamukkale UNV. Lcdout $fe, $c0 lcdout TEF for i=1 to 10 lcdout $fe, $08 pause 500 lcdout $fe, $c0 pause 500 next i for i=1 to 16 lcdout $fe, $1e pause 500 next i lcdout $fe, $80 lcdout Pamukkale UNV. Lcdout $fe, $c0 lcdout TEF for i=1 to 16 lcdout $fe, $18 pause 500 next i goto loop end deney6.bas

172 164 'LCD registerlerini ve bit'lerinin tanımlanması Define LCD_DREG PORTD Define LCD_DBIT 4 Define LCD_RSREG PORTE Define LCD_RSBIT 0 Define LCD_EREG PORTE Define LCD_EBIT SCL var PORTC.3 'clock pini SDA var PORTC.4 'data pini B0 var byte 'Adres B1 var byte 'Data1 B2 var byte 'Data2 ADCON = 7 'PORTA ve PORTE dijital Low PORTE.2 'LCD R/W pini low (W) Pause 100 'LCD'nin açılmaasını bekle For B0 = 0 to 15 ' 16 defa döngü B1 = B ' B1 EEPROM için datadır. I2CWRITE SDA,SCL,$A0,B0,[B1] 'datayı adrese yaz pause 10 ' Her yazmadan sonra 10 ms bekle Next B0 loop: oku For B0 = 0 To 15 Step 2 '8 defa döngü I2CWRITE SDA,SCL,$A0,B0,[B1,B2] ' Bir satırdaki 2 adresi birden Lcdout $fe,1,#b0,":",#b1,"",#b2,"" ' iki adrestekini LCD'de göster. pause 1000

173 165 Next B0 Goto loop End ' deney7_a.bas step motor kontrol (bir yönde) adcon1=7 trisa=% trisb=% portb=0 i var byte loop: for i =1 to 7 lookup i,[$01,$03,$02,$06,$04,$0c,$08,$09],portb pause 500 next i goto loop end deney7_b.bas 'Step Motor Kontrol Programı adcon1=7 trisa=% trisb=%

174 166 portb=0 durum var byte i var byte zaman var byte zaman=100 durum=$00 zaman=15 dongu for i=0 to 7 if porta.0==0 then durum.0=1 durum.1=0 endif if porta.1==0 then durum.0=0 durum.1=0 endif if porta.2==0 then durum.0=0 durum.1=1 endif if durum.1==1 then lookup i,[$01,$03,$02,$06,$04,$0c,$08,$09],portb endif if durum.0==1 then lookup i,[$09,$08,$0c,$04,$06,$02,$03,$01],portb endif pause zaman next i goto dongu end

175 deney8.bas klavyeden girilen binary ifadenin lcd de gösterilmesi adcon1=7 trisa=% trisb=% trisc=% 'Lcd tanımları define lcd_dreg portb define lcd_rsreg porta define lcd_rsbit 1 define lcd_ereg porta define lcd_ebit 0 define lcd_bits 8 define lcd_lines 2 i var byte temp var byte lcd_d1 var byte lcd_d2 var byte lcd_d3 var byte lcdout $fe,1 lcdout $fe,$06 lcdout $fe,$0c loop: temp=portc lcd_d1=$0 lcd_d2=$0 lcd_d3=$0 for i=1 to temp+1 if lcd_d1==$09 then

176 168 lcd_d1=$0 if lcd_d2==$09 then lcd_d2=$0 lcd_d3=lcd_d3+$01 else lcd_d2=lcd_d2+$01 endif else lcd_d1=lcd_d1+$01 endif next i lcdout $fe, $80 lcdout (lcd_d3+$30),(lcd_d2+$30),(lcd_d1+$30) goto loop end ' deney9.bas saat uygulaması Define LCD_DREG PORTA 'LCD Bağlantılarını tanımı Define LCD_DBIT 0 Define LCD_RSREG PORTA Define LCD_RSBIT 4 Define LCD_EREG PORTB Define LCD_EBIT 3 'Degişken Tanımlamaları saat var byte 'Saat değişkenini tanımlar dsaat var byte 'LCD'de görünecek saat değişkeni dakika var byte 'Dakika değişkenini tanımlar

177 169 saniye var byte 'Saniye değişkenini tanımlar ticks var byte 'Timer interrupt sayma değişkeni guncelle var byte 'LCD güncelleme değişkeni i var byte 'Ark söndürme döngüsü device WDT_OFF 'Watchdog timer geçersiz. pause 100 'LCD'nin açılmasını bekle saat = 0 dakika = 0 saniye = 0 ticks = 0 'Zamanı 00:00:00'a ayarla guncelle = 1 'Güncelle aktif 'TMR0'ı her ms de bir kesme üretecek şekilde kur. OPTION_REG = $55 'PORTB çıkışları pull-up ve TMR0'ı kur. INTCON = $a0 'TMR0 interrupt'ı etkin ON INTERRUPT Goto tickint 'Interrupt olduğunda tickint alt programına git PORTB = 0 'Buton pinleri(rb7,rb6) giriş ' ana_dongu : 'Ana program döngüsü - Bu döngüye gelindiğinde LCD'de görülen zaman güncellenir. ' Zaman ayarı butonlarına basıldı mı? if PORTB.7 = 0 Then dak_azalt if PORTB.6 = 0 Then dak_arttir kontrol : ' LCD güncellemesi zamanı geldi mi? Kontrol et if guncelle = 1 Then

178 170 Lcdout $fe, 1 'Ekranı sil ' Zamanı ss:dd:ss formatında göster dsaat = saat 'saat 0'sa 12'ye getir. if (saat // 12) = 0 Then dsaat = dsaat + 12 Endif endif 'PM mi AM mi kontrol et. If saat < 12 Then Lcdout dec2 dsaat,":",dec2 dakika, ":",dec2 saniye, "AM" Else Lcdout dec2 dsaat, ":", dec2 dakika, ":", dec2 saniye, "PM" Endif guncelle = 0 ' Ekran güncellendi Goto ana_dongu ' Ana programla sonsuz döngü sağla ' dak_arttir : 'Dakika arttırma bölümü dakika = dakika +1 If dakika >= 60 Then dakika = 0 saat = saat + 1 if saat >= 24 Then saat = 0 Endif Endif goto ark_sondur '

179 171 dak_azalt: 'Dakika azaltma bölümü dakika = dakika -1 If dakika >= 60 Then dakika = 59 saat = saat - 1 If saat >= 24 Then saat = 23 Endif Endif ' ark_sondur : ' Ark söndürme ve 250 ms gecikme bölümü For i = 1 to 25 Pause 10 'Her defasında 10 ms bekle,böylece hiçbir interrupt kaçırılmaz. Next i guncelle = 1 'Ekran güncellemesi aktif. Goto kontrol Disable ' Interrupt alt programı süresince gelecek İnterupt'ları iptal et ' tickint : 'Her TMR0 kesmesinde işleyen alt program ticks = ticks + 1 ' TMR0 interrupt'larını say If ticks < 61 Then tiexit '61x ms =1 Sn dolmadıysa alt programdan çık 'Bir saniye geçti, zamanı güncelle ticks = 0 saniye = saniye + 1 If saniye >= 60 Then saniye = 0

180 172 dakika = dakika + 1 If dakika >= 60 Then dakika =0 saat = saat +1 If saat >= 24 Then saat = 0 Endif Endif Endif guncelle = 1 ' LCD güncellemesi aktif. ' tiexit : 'Timer interrupt alt programından çıkış bölümü INTCON.2 = 0 ' Timer interrupt bayrağını sıfırla Resume ' Alt programdan çık End deney10.bas pwm uygulaması trisb=$00 portb=0 i var byte loop: for i=1 to 255 pwm portb.0, i, 100 pause 50 next i goto loop: end

181 173 KAYNAKLAR Altınbaşak, Orhan. Mikrodenetleyiciler ve PIC Programlama, Atlaş Yayınları, İstanbul, 2001 Altınbaşak, Orhan. Pic Basic Pro ile PIC Programlama, Atlaş Yayınları, İstanbul, 2001 PICmicro Mid-Range MCU Family Reference Manual Mikrochip firması internet sitesi internmet sitesi Antrak Gazetesi internet sitesi internet sitesi

PIC 16F877 nin kullanılması

PIC 16F877 nin kullanılması PIC 16F877 nin kullanılması, dünyada kullanıma sunulmasıyla eş zamanlı olarak Türkiye de de uygulama geliştirenlerin kullanımına sunuldu., belki de en popüler PIC işlemcisi olan 16F84 ten sonra kullanıcılara

Detaylı

PIC Mikrodenetleyicileri

PIC Mikrodenetleyicileri PIC Mikrodenetleyicileri Intel 1976 da 8031/51 ailesini piyasaya sürdüğünde dünyanın en popüler mikroişlemcisi olmuştu. Bu işlemci dünya üzerinde 12 den fazla firma tarafından (İntel, Phillips, Dallas,

Detaylı

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak XIII İçİndekİler 1. Bölüm - Mİkro Denetleyİcİ Nedİr? Mikrodenetleyici Tanımı Mikrodenetleyicilerin Tarihçesi Mikroişlemci- Mikrodenetleyici 1. İki Kavram Arasındaki Farklar 2. Tasarım Felsefesi ve Mimari

Detaylı

BÖLÜM 1: MİKRODENETLEYİCİLER

BÖLÜM 1: MİKRODENETLEYİCİLER V İÇİNDEKİLER BÖLÜM 1: MİKRODENETLEYİCİLER ve PIC16F877A... 13 1.1 Giriş... 13 1.2 Mikrochip Mikrodenetleyici Ailesi... 14 1.2.1 PIC12CXXX/PIC12FXXX Ailesi... 15 1.2.2 PIC16C5X Ailesi... 15 1.2.3 PIC16CXXX/PIC16FXXX

Detaylı

BÖLÜM 2 8051 Mikrodenetleyicisine Giriş

BÖLÜM 2 8051 Mikrodenetleyicisine Giriş C ile 8051 Mikrodenetleyici Uygulamaları BÖLÜM 2 8051 Mikrodenetleyicisine Giriş Amaçlar 8051 mikrodenetleyicisinin tarihi gelişimini açıklamak 8051 mikrodenetleyicisinin mimari yapısını kavramak 8051

Detaylı

Adres Yolu (Address Bus) Bellek Birimi. Veri Yolu (Databus) Kontrol Yolu (Control bus) Şekil xxx. Mikrodenetleyici genel blok şeması

Adres Yolu (Address Bus) Bellek Birimi. Veri Yolu (Databus) Kontrol Yolu (Control bus) Şekil xxx. Mikrodenetleyici genel blok şeması MİKRODENETLEYİCİLER MCU Micro Controller Unit Mikrodenetleyici Birimi İşlemci ile birlikte I/O ve bellek birimlerinin tek bir entegre olarak paketlendiği elektronik birime mikrodenetleyici (microcontroller)

Detaylı

1. Ders Giriş. Mikroişlemcili Sistem Uygulamaları

1. Ders Giriş. Mikroişlemcili Sistem Uygulamaları 1. Ders Giriş Hazırlayan: Arş. Gör. Hakan ÜÇGÜN Mikroişlemcili Sistem Uygulamaları Dikkat ettiniz mi: Etrafımızdaki akıllı cihazların sayısı ne kadar da arttı. Cep telefonlarımız artık sadece iletişim

Detaylı

İÇİNDEKİLER 1. KLAVYE... 11 2. KLAVYE RB0... 19 3. KLAVYE RBHIGH... 27 4. 4 DİSPLAY... 31

İÇİNDEKİLER 1. KLAVYE... 11 2. KLAVYE RB0... 19 3. KLAVYE RBHIGH... 27 4. 4 DİSPLAY... 31 İÇİNDEKİLER 1. KLAVYE... 11 Satır ve Sütunlar...11 Devre Şeması...14 Program...15 PIC 16F84 ile 4x4 klavye tasarımını gösterir. PORTA ya bağlı 4 adet LED ile tuş bilgisi gözlenir. Kendiniz Uygulayınız...18

Detaylı

Mikroişlemci Nedir? Mikrodenetleyici Nedir? Mikroişlemci iç yapısı Ders Giriş. Mikroişlemcili Sistem Uygulamaları

Mikroişlemci Nedir? Mikrodenetleyici Nedir? Mikroişlemci iç yapısı Ders Giriş. Mikroişlemcili Sistem Uygulamaları Mikroişlemcili Sistem Uygulamaları 1. Ders Giriş Dikkat ettiniz mi: Etrafımızdaki akıllı cihazların sayısı ne kadar da arttı. Cep telefonlarımız artık sadece iletişim sağlamakla kalmıyor, müzik çalıyor,

Detaylı

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür. İŞLEMCİLER (CPU) Mikroişlemci Nedir? Mikroişlemci, hafıza ve giriş/çıkış birimlerini bulunduran yapının geneline mikrobilgisayar; CPU' yu bulunduran entegre devre çipine ise mikroişlemci denir. İşlemciler

Detaylı

B.Ç. / E.B. MİKROİŞLEMCİLER

B.Ç. / E.B. MİKROİŞLEMCİLER 1 MİKROİŞLEMCİLER RESET Girişi ve DEVRESİ Program herhangi bir nedenle kilitlenirse ya da program yeniden (baştan) çalıştırılmak istenirse dışarıdan PIC i reset yapmak gerekir. Aslında PIC in içinde besleme

Detaylı

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir: 8051 Ailesi 8051 MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur. 8051 çekirdeğinin temel özellikkleri aşağıda verilmiştir: 1. Kontrol uygulamaları için en uygun hale getirilmiş

Detaylı

27.10.2011 HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

27.10.2011 HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK Mikroişlemci HAFTA 1 HAFIZA BİRİMLERİ Program Kodları ve verinin saklandığı bölüm Kalıcı Hafıza ROM PROM EPROM EEPROM FLASH UÇUCU SRAM DRAM DRRAM... ALU Saklayıcılar Kod Çözücüler... GİRİŞ/ÇIKIŞ G/Ç I/O

Detaylı

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir: 8051 Ailesi 8051 MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur. 8051 çekirdeğinin temel özellikkleri aşağıda verilmiştir: 1. Kontrol uygulamaları için en uygun hale getirilmiş

Detaylı

5.Eğitim E205. PIC16F628 ve PIC16F877 Hakkında Genel Bilgi IF THEN ELSE ENDIF HIGH-LOW GOTO-END- PAUSE Komutları Tanıtımı ve Kullanımı PIC16F628:

5.Eğitim E205. PIC16F628 ve PIC16F877 Hakkında Genel Bilgi IF THEN ELSE ENDIF HIGH-LOW GOTO-END- PAUSE Komutları Tanıtımı ve Kullanımı PIC16F628: 5.Eğitim E205 PIC16F628 ve PIC16F877 Hakkında Genel Bilgi IF THEN ELSE ENDIF HIGH-LOW GOTO-END- PAUSE Komutları Tanıtımı ve Kullanımı PIC16F628: PIC16F628 18 pine sahiptir.bu pinlerin 16 sı giriş / çıkış

Detaylı

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN Bilgisayar Mühendisliğine Giriş Yrd.Doç.Dr.Hacer KARACAN Mikroişlemci Nedir? Bir bilgisayarın en önemli parçası Mikroişlemcisidir. Hiçbir bilgisayar mikroişlemci olmadan çalışamaz. Bu nedenle Mikroişlemci

Detaylı

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201... 3.1 AMAÇ: Assembly programlama dili kullanarak mikrodenetleyici portlarını giriş olarak kullanmak. GİRİŞ: Bir portun giriş olarak mı yoksa çıkış olarak mı kullanılacağını belirten TRIS kaydedicileridir.

Detaylı

EEM 419-Mikroişlemciler Güz 2017

EEM 419-Mikroişlemciler Güz 2017 EEM 419-Mikroişlemciler Güz 2017 Katalog Bilgisi : EEM 419 Mikroişlemciler (3+2) 4 Bir mikroişlemci kullanarak mikrobilgisayar tasarımı. Giriş/Çıkış ve direk hafıza erişimi. Paralel ve seri iletişim ve

Detaylı

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI Bazı pinler çevre birimleri ile çoklanmıştır. Peki bu ne demek? Mesela C portundaki RC6 ve RC7 pinleri seri iletişim için kullanılır. Eğer seri iletişimi

Detaylı

Embedded(Gömülü)Sistem Nedir?

Embedded(Gömülü)Sistem Nedir? Embedded(Gömülü)Sistem Nedir? Embedded Computing System de amaç; elektronik cihaza bir işlevi sürekli tekrar ettirmektir. Sistem içindeki program buna göre hazırlanmıştır. PC lerde (Desktop veya Laptop)

Detaylı

Hacettepe Robot Topluluğu

Hacettepe Robot Topluluğu Hacettepe Robot Topluluğu PIC Assembly Dersleri 1. Ders: PIC Programlamaya Giriş HUNRobotX - PIC Assembly Dersleri 1. Ders: PIC Programlamaya Giriş Yazan: Kutluhan Akman, Düzenleyen: Canol Gökel - 4 Haziran

Detaylı

PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI

PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Bilgisayar Mühendisliği Bölümü, Lefkoşa, KKTC E-mail: [email protected], Tel: (90) 392 2236464 ÖZET Bilgisayarlara

Detaylı

Eğitim - Öğretim Yöntemleri Başlıca öğrenme faaliyetleri Kullanılan Araçlar Dinleme ve anlamlandırma

Eğitim - Öğretim Yöntemleri Başlıca öğrenme faaliyetleri Kullanılan Araçlar Dinleme ve anlamlandırma Eğitim - Öğretim Yöntemleri Başlıca öğrenme faaliyetleri Kullanılan Araçlar Ders Dinleme ve anlamlandırma Standart derslik teknolojileri, çoklu ortam araçları, projektör, bilgisayar DERS BİLGİLERİ Ders

Detaylı

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ. 1. Tipik bir mikrobilgisayar sistemin yapısı ve çalışması hakkında bilgi sahibi olabilme

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ. 1. Tipik bir mikrobilgisayar sistemin yapısı ve çalışması hakkında bilgi sahibi olabilme PROGRAMIN ADI DERSIN KODU VE ADI DERSIN ISLENECEGI DÖNEM HAFTALIK DERS SAATİ DERSİN SÜRESİ ENDÜSTRİYEL ELEKTRONİK MİK.İŞLEMCİLER/MİK.DENETLEYİCİLER-1 2. Yıl, III. Yarıyıl (Güz) 4 (Teori: 3, Uygulama: 1,

Detaylı

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1 Von Neumann Mimarisi Mikroişlemciler ve Mikrobilgisayarlar 1 Sayısal Bilgisayarın Tarihsel Gelişim Süreci Babage in analitik makinası (1833) Vakumlu lambanın bulunuşu (1910) İlk elektronik sayısal bilgisayar

Detaylı

Haftalık Ders Saati Okul Eğitimi Süresi

Haftalık Ders Saati Okul Eğitimi Süresi DERSİN ADI BÖLÜM PROGRAM DÖNEMİ DERSİN DİLİ DERS KATEGORİSİ ÖN ŞARTLAR SÜRE VE DAĞILIMI KREDİ DERSİN AMACI ÖĞRENME ÇIKTILARI VE YETERLİKLER DERSİN İÇERİĞİ VE DAĞILIMI (MODÜLLER VE HAFTALARA GÖRE DAĞILIMI)

Detaylı

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir. Kesmeler çağırılma kaynaklarına göre 3 kısma ayrılırlar: Yazılım kesmeleri Donanım

Detaylı

B.Ç. / E.B. MİKROİŞLEMCİLER

B.Ç. / E.B. MİKROİŞLEMCİLER 1 MİKROİŞLEMCİLER Mikroişlemci (Mikroprocessor) Nedir? Merkezi İşlem Birimi, (CPU Central Processing Unit) olarak adlandırılır. Bilgisayar programının yapmak istediği işlemleri yürütür. CPU belleğinde

Detaylı

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar x86 Ailesi 1 8085A,8088 ve 8086 2 Temel Mikroişlemci Özellikleri Mikroişlemcinin bir defade işleyebileceği kelime uzunluğu Mikroişlemcinin tek bir komutu işleme hızı Mikroişlemcinin doğrudan adresleyebileceği

Detaylı

Bir mikroişlemci temel olarak üç kısımdan oluşur. Bunlar merkezi işlem birimi (CPU), giriş çıkış birimi (G/Ç) ve bellektir.

Bir mikroişlemci temel olarak üç kısımdan oluşur. Bunlar merkezi işlem birimi (CPU), giriş çıkış birimi (G/Ç) ve bellektir. 1 1.GİRİŞ 1.1 Mikroişlemciler Mikroişlemci herhangi bir sistemde merkezi işlem birimidir ve bulunduğu sistemde aritmetik ve mantıksal işlemleri yürütür. Merkezi İşlem Birimi (Central Processing Unit: CPU),

Detaylı

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ İçerik Mikroişlemci Sistem Mimarisi Mikroişlemcinin yürüttüğü işlemler Mikroişlemci Yol (Bus) Yapısı Mikroişlemci İç Veri İşlemleri Çevresel Cihazlarca Yürütülen İşlemler

Detaylı

EasyPic 6 Deney Seti Tanıtımı

EasyPic 6 Deney Seti Tanıtımı EasyPic 6 Deney Seti Tanıtımı Power supply voltage regulator J6 ile power supply seçimi yapılır. USB seçilirse USB kablosu üzerinden +5V gönderilir, EXT seçilirse DC connector üzerinden harici bir power

Detaylı

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu MİKROBİLGİSAYAR SİSTEMLERİ Teknik Bilimler Meslek Yüksekokulu Dersin Amacı Mikroişlemciler Mikrodenetleyiciler PIC Mikrodenetleyiciler Micro BASIC Programlama Kullanılacak Programlar MSDOS DEBUG PROTEUS

Detaylı

Dr. Feza BUZLUCA İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü

Dr. Feza BUZLUCA İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü 1 BİLGİSAYAR MİMARİSİ Dr. Feza BUZLUCA İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü http:// http:// Ders Notlarının Creative Commons lisansı Feza BUZLUCA ya aittir. Lisans: http://creativecommons.org/licenses/by-nc-nd/3.0/

Detaylı

http://nptel.ac.in/courses/webcourse-contents/iit KANPUR/microcontrollers/micro/ui/Course_home3_16.htm Yrd.Doç. Dr.

http://nptel.ac.in/courses/webcourse-contents/iit KANPUR/microcontrollers/micro/ui/Course_home3_16.htm Yrd.Doç. Dr. http://nptel.ac.in/courses/webcourse-contents/iit KANPUR/microcontrollers/micro/ui/Course_home3_16.htm B Yrd.Doç. Dr. Bülent ÇOBANOĞLU PIC MİKRODENETLEYİCİ VE AİLESİ PIC, Microchip firması tarafından üretilen,

Detaylı

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar Ders 5, Slayt 2 1 BACAK BAĞLANTILARI Ders 5, Slayt 3 PIC

Detaylı

PIC Programlama. Devrim Çamoğlu

PIC Programlama. Devrim Çamoğlu PIC Programlama Devrim Çamoğlu İçİndekİler XIII İçİndekİler 1. Bölüm - Temel Kavramlar Mikrodenetleyici Tanımı Mikroişlemci-Mikrodenetleyici 1. Mikro İşlemcili Bir Sistemde Kavramlar 2. Tasarım Felsefesi

Detaylı

DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü

DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü Ders 7, Slayt 2 1 PROGRAM 1 RAM bellekte 0x0C ve 0x0D hücrelerinde tutulan iki 8-bit sayının toplamını hesaplayıp

Detaylı

Mikroişlemci: Merkezi işlem biriminin fonksiyonlarını tek bir yarı iletken tümleşik devrede birleştiren programlanabilir sayısal elektronik devre

Mikroişlemci: Merkezi işlem biriminin fonksiyonlarını tek bir yarı iletken tümleşik devrede birleştiren programlanabilir sayısal elektronik devre MİKRODENETLEYİCİLER Mikroişlemci: Merkezi işlem biriminin fonksiyonlarını tek bir yarı iletken tümleşik devrede birleştiren programlanabilir sayısal elektronik devre Mikrodenetleyici: Bir mikroişlemcinin

Detaylı

İşletim Sistemleri (Operating Systems)

İşletim Sistemleri (Operating Systems) İşletim Sistemleri (Operating Systems) 1 İşletim Sistemleri (Operating Systems) Genel bilgiler Ders kitabı: Tanenbaum & Bo, Modern Operating Systems:4th ed., Prentice-Hall, Inc. 2013 Operating System Concepts,

Detaylı

PIC TABANLI, 4 BASAMAKLI VE SER

PIC TABANLI, 4 BASAMAKLI VE SER PIC TABANLI, 4 BASAMAKLI VE SERİ BAĞLANTILI 7 SEGMENT LED PROJESİ Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Mühendislik Fakültesi, Bilgisayar Mühendisliği Bölümü, Lefkoşa E-mail: [email protected],

Detaylı

Mikroişlemcili Sistemler ve Laboratuvarı

Mikroişlemcili Sistemler ve Laboratuvarı SAKARYA ÜNİVERSİTESİ Bilgisayar ve Bilişim Bilimleri Fakültesi Bilgisayar Mühendisliği Bölümü Mikroişlemcili Sistemler ve Laboratuvarı Hafta04 : 8255 ve Bellek Organizasyonu Doç.Dr. Ahmet Turan ÖZCERİT

Detaylı

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI S1. Aşağıdaki eleman ya da birimlerden hangisi genel bir bilgisayar sisteminin donanımsal yapısında yer almaz? a) Mikroişlemci (CPU) b) Bellek

Detaylı

Bellekler. Mikroişlemciler ve Mikrobilgisayarlar

Bellekler. Mikroişlemciler ve Mikrobilgisayarlar Bellekler 1 Bellekler Ortak giriş/çıkışlara, yazma ve okuma kontrol sinyallerine sahip eşit uzunluktaki saklayıcıların bir tümdevre içerisinde sıralanmasıyla hafıza (bellek) yapısı elde edilir. Çeşitli

Detaylı

Mikrobilgisayarlar. Mikroişlemciler ve. Mikrobilgisayarlar

Mikrobilgisayarlar. Mikroişlemciler ve. Mikrobilgisayarlar 1 Sayısal Bilgisayarın Tarihsel Gelişim Süreci Babage in analitik makinası (1833) Vakumlu lambanın bulunuşu (1910) İlk elektronik sayısal bilgisayar (1946) Transistörün bulunuşu (1947) İlk transistörlü

Detaylı

Mikroişlemciler Ara Sınav---Sınav Süresi 90 Dk.

Mikroişlemciler Ara Sınav---Sınav Süresi 90 Dk. HARRAN ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ Mikroişlemciler Ara Sınav---Sınav Süresi 90 Dk. 15 Nisan 2014 1) (10p) Mikroişlemcilerle Mikrodenetleyiceleri yapısal olarak ve işlevsel olarak karşılaştırarak

Detaylı

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK KESME NEDİR KESME ÇEŞİTLERİ INTCON SAKLAYICISI RBO/INT KESMESİ PORTB (RB4-RB7) LOJİK SEVİYE DEĞİŞİKLİK KESMESİ Ders 12, Slayt 2 1 KESME PIC in bazı

Detaylı

William Stallings Computer Organization and Architecture 9 th Edition

William Stallings Computer Organization and Architecture 9 th Edition William Stallings Computer Organization and Architecture 9 th Edition Bölüm 5 İç Hafıza Bir Hafıza Hücresinin Çalışması Bütün hafıza hücrelerinin ortak özellikleri vardır: 0 ve 1 durumundan birini gösterirler

Detaylı

PIC16F877A nın Genel Özellikleri

PIC16F877A nın Genel Özellikleri BÖLÜM 3 PIC16F877A nın Genel Özellikleri 3.1 Mikrodenetleyici Mimarisi 3.2 PIC16Fxxx Komut Seti 3.3 PIC16F877A Bellek Organizasyonu 3.4 Giriş/Çıkış Portları 3.5 STATUS ve TRIS Kaydedicileri 3.6 Kesme ve

Detaylı

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü BM-311 Bilgisayar Mimarisi Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Bilgisayar Bileşenleri Bilgisayarın Fonksiyonu Instruction Cycle Kesmeler (Interrupt lar) Bus

Detaylı

MC6800. Veri yolu D3 A11. Adres yolu A7 A6 NMI HALT DBE +5V 1 2. adres onaltılık onluk 0000 0. 8 bit 07FF 2047 0800 2048. kullanıcının program alanı

MC6800. Veri yolu D3 A11. Adres yolu A7 A6 NMI HALT DBE +5V 1 2. adres onaltılık onluk 0000 0. 8 bit 07FF 2047 0800 2048. kullanıcının program alanı GİRİŞ Günümüzde kullanılan bilgisayarların özelliklerinden bahsedilirken duyduğumuz 80386, 80486 Pentium-III birer mikroişlemcidir. Mikroişlemciler bilgisayar programlarının yapmak istediği tüm işlerin

Detaylı

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi 1 BM-311 Bilgisayar Mimarisi Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Bilgisayar Bileşenleri Bilgisayarın Fonksiyonu Instruction Cycle Kesmeler (Interrupt lar)

Detaylı

TIMER. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

TIMER. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ TIMER SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ PIC16F877A mikrodenetleyicisinde üç adet zamanlayıcı/sayıcı birimi bulunmaktadır. o Timer0 8 bitlik

Detaylı

T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ GRAFİK SIVI KRİSTAL EKRANLI SAYISAL TERMOMETRE

T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ GRAFİK SIVI KRİSTAL EKRANLI SAYISAL TERMOMETRE T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ GRAFİK SIVI KRİSTAL EKRANLI SAYISAL TERMOMETRE BİTİRME ÇALIŞMASI Hazırlayanlar: Gürhan YILMAZ 077488 Hacı

Detaylı

LCD (Liquid Crystal Display)

LCD (Liquid Crystal Display) LCD (Liquid Crystal Display) LCD ekranlar bize birçok harfi, sayıları, sembolleri hatta Güney Asya ülkelerin kullandıkları Kana alfabesindeki karakterleri de görüntüleme imkanını verirler. LCD lerde hane

Detaylı

T.C Niğde Üniversitesi Mühendislik Mimarlık Fakültesi Elektrik Elektronik Mühendisliği Bölümü

T.C Niğde Üniversitesi Mühendislik Mimarlık Fakültesi Elektrik Elektronik Mühendisliği Bölümü T.C Niğde Üniversitesi Mühendislik Mimarlık Fakültesi Elektrik Elektronik Mühendisliği Bölümü BİR ÇAMAŞIR MAKİNASI SİMÜLATÖRÜNÜN BİR PIC MİKRODENETLEYİCİSİ KULLANARAK KONTROLÜ Hazırlayan Durmuş GÖKÇEBAY

Detaylı

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta SAKARYA ÜNİVERSİTESİ Bilgisayar ve Bilişim Bilimleri Fakültesi Bilgisayar Mühendisliği Bölümü Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta Doç.Dr. Ahmet Turan ÖZCERİT Doç.Dr. Cüneyt BAYILMIŞ Yrd.Doç.Dr.

Detaylı

Bilgisayar Donanım 2010 BİLGİSAYAR

Bilgisayar Donanım 2010 BİLGİSAYAR BİLGİSAYAR CPU, bellek ve diğer sistem bileşenlerinin bir baskı devre (pcb) üzerine yerleştirildiği platforma Anakart adı verilmektedir. Anakart üzerinde CPU, bellek, genişleme yuvaları, BIOS, çipsetler,

Detaylı

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI PIC16F87X te ADC MODÜLÜNÜN KULLANIMI Emre YAVUZ Temmuz 2009 PIC16F87X te ADC MODÜLÜ Ü KULLA IMI Bu makalemizde PIC16F87X serisi mikrodenetleyicilerde ADC modülünün temel düzeyde kullanımını anlatacağım.

Detaylı

Bilgisayarların Gelişimi

Bilgisayarların Gelişimi Bilgisayarların Gelişimi Joseph Jacquard (1810) Bilgisayar tabanlı halı dokuma makinesi Delikli Kart (Punch Card) Algoritma ve Programlama 6 Bilgisayar Sistemi 1. Donanım fiziksel aygıtlardır. 2. Yazılım

Detaylı

CUMHURİYET MESLEKİ VE TEKNİK ANADOLU LİSESİ BİLİŞİM TEKNOLOJİLERİNİN TEMELLERİ DERSİ DERS NOTLARI BELLEKLER

CUMHURİYET MESLEKİ VE TEKNİK ANADOLU LİSESİ BİLİŞİM TEKNOLOJİLERİNİN TEMELLERİ DERSİ DERS NOTLARI BELLEKLER BELLEKLER Genel olarak bellekler, elektronik bilgi depolama üniteleridir. Bilgisayarlarda kullanılan bellekler, işlemcinin istediği bilgi ve komutları maksimum hızda işlemciye ulaştıran ve üzerindeki bilgileri

Detaylı

BİLGİSAYAR MİMARİSİ. << Bus Yapısı >> Özer Çelik Matematik-Bilgisayar Bölümü

BİLGİSAYAR MİMARİSİ. << Bus Yapısı >> Özer Çelik Matematik-Bilgisayar Bölümü BİLGİSAYAR MİMARİSİ > Özer Çelik Matematik-Bilgisayar Bölümü Veri yolu (BUS), anakarttaki tüm aygıtlar arası veri iletişimini sağlayan devrelerdir. Yani bilgisayarın bir bileşeninden diğerine

Detaylı

4-Deney seti modüler yapıya sahiptir ve kabin içerisine tek bir board halinde monte edilmiştir.

4-Deney seti modüler yapıya sahiptir ve kabin içerisine tek bir board halinde monte edilmiştir. MDS 8051 8051 AİLESİ DENEY SETİ 8051 Ailesi Deney Seti ile piyasada yaygın olarak bulunan 8051 ailesi mikro denetleyicileri çok kolay ve hızlı bir şekilde PC nizin USB veya Seri portundan gönderdiğiniz

Detaylı

Mikrobilgisayarlar ve Assembler. Bahar Dönemi. Vedat Marttin

Mikrobilgisayarlar ve Assembler. Bahar Dönemi. Vedat Marttin Mikrobilgisayarlar ve Assembler Bahar Dönemi Vedat Marttin Bellek Haritası Mikroişlemcili örnek bir RAM, ROM ve G/Ç adres sahalarının da dahil olduğu toplam adres uzayının gösterilmesinde kullanılan sisteme

Detaylı

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ Dersin Adı Kodu Sınıf / Y.Y. Mikroişlemciler ve Assembly Dili Ders Saati (T+U+L) Kredi AKTS 4

Detaylı

Donanımlar Hafta 1 Donanım

Donanımlar Hafta 1 Donanım Donanımlar Hafta 1 Donanım Donanım Birimleri Ana Donanım Birimleri (Anakart, CPU, RAM, Ekran Kartı, Sabit Disk gibi aygıtlar, ) Ek Donanım Birimleri (Yazıcı, Tarayıcı, CD-ROM, Ses Kartı, vb ) Anakart (motherboard,

Detaylı

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş İşletim Sistemlerine Giriş İşletim Sistemleri ve Donanım İşletim Sistemlerine Giriş/ Ders01 1 İşletim Sistemi? Yazılım olmadan bir bilgisayar METAL yığınıdır. Yazılım bilgiyi saklayabilir, işleyebilir

Detaylı

T.C Niğde Üniversitesi Mühendislik Mimarlık Fakültesi Elektrik Elektronik Mühendisliği Bölümü

T.C Niğde Üniversitesi Mühendislik Mimarlık Fakültesi Elektrik Elektronik Mühendisliği Bölümü T.C Niğde Üniversitesi Mühendislik Mimarlık Fakültesi Elektrik Elektronik Mühendisliği Bölümü BİR ÇAMAŞIR MAKİNASI SİMÜLATÖRÜNÜN BİR PIC MİKRODENETLEYİCİSİ KULLANARAK KONTROLÜ Hazırlayan Durmuş GÖKÇEBAY

Detaylı

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN Bahar Dönemi Öğr.Gör. Vedat MARTTİN 8086/8088 MİKROİŞLEMCİSİ İÇ MİMARİSİ Şekilde x86 ailesinin 16-bit çekirdek mimarisinin basitleştirilmiş bir gösterimi verilmiştir. Mikroişlemci temel iki ayrı çalışma

Detaylı

Günümüz. Intel Core i nm teknolojisi 1.86 Milyar tranzistör. Intel Core i nm teknolojisi 1.4 Milyar tranzistör

Günümüz. Intel Core i nm teknolojisi 1.86 Milyar tranzistör. Intel Core i nm teknolojisi 1.4 Milyar tranzistör Gömülü Sistemler Tarihçe 1943-1946 yıllarında Mauchly ve Eckert tarafından ilk modern bilgisayar ENIAC ismiyle yapılmıştır. 17468 elektronik tüp, 1500 röle, 30 ton ağırlık, 0.2ms toplama ve 2.8ms çarpma

Detaylı

Mikroişlemciler. Alper Bayrak Abant İzzet Baysal Üniversitesi Bolu

Mikroişlemciler. Alper Bayrak Abant İzzet Baysal Üniversitesi Bolu Mikroişlemciler Alper Bayrak Abant İzzet Baysal Üniversitesi Bolu 2014 Sunuma Genel Bakış Sunuma Genel Bakış I 1 Mikroişlemci Mikroişlemci Nedir? Mikroişlemci İç Yapısı 2 Mikrodenetleyici Mikrodenetleyici

Detaylı

Assembler program yazımında direkt olarak çizgi ile gösterilmemesine rağmen ekranınız ya da kağıdınız 4 ayrı sütunmuş gibi düşünülür.

Assembler program yazımında direkt olarak çizgi ile gösterilmemesine rağmen ekranınız ya da kağıdınız 4 ayrı sütunmuş gibi düşünülür. BÖLÜM 4 4. PIC PROGRAMLAMA Herhangi bir dilde program yazarken, öncelikle kullanılacak dil ve bu dilin editörünü kullanabilmek önemlidir. Biz bu işlem için Mplab programını kullanacağız. Bu sebeple aslında

Detaylı

Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Mühendislik Fakültesi, Biyomedikal Mühendisliği, Bölümü E-mail: dogan @neu.edu.tr Tel: 90 3922236464

Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Mühendislik Fakültesi, Biyomedikal Mühendisliği, Bölümü E-mail: dogan @neu.edu.tr Tel: 90 3922236464 GERÇEK ZAMAN ENTEGRE DESTEKLİ PIC MİKROKONTROLÖR PROJESİ Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Mühendislik Fakültesi, Biyomedikal Mühendisliği, Bölümü E-mail: dogan @neu.edu.tr Tel: 90 3922236464

Detaylı

GAZİANTEP ÜNİVERSİTESİ

GAZİANTEP ÜNİVERSİTESİ GAZİANTEP ÜNİVERSİTESİ Fizik Mühendisliği Bölümü Pic Basic Pro ile PIC Programlama Ders Notları Hazırlayan: Kamil KAYA 2012 Mikrodenetleyiciler: Mikrodenetleyicilerin tanımına girmeden önce kısaca mikroişlemcilere

Detaylı

Mikroişlemciler ve Assembler Programlama. Teknoloji Fakültesi / Bilgisayar Mühendisliği Öğr.Gör. Günay TEMÜR

Mikroişlemciler ve Assembler Programlama. Teknoloji Fakültesi / Bilgisayar Mühendisliği Öğr.Gör. Günay TEMÜR Mikroişlemciler ve Assembler Programlama Teknoloji Fakültesi / Bilgisayar Mühendisliği Öğr.Gör. Günay TEMÜR Mikroişlemciler Mikroişlemciler bilgisayar teknolojilerinin gerçek sürükleyicisi olan donanımsal

Detaylı

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş 29.11.2016 İÇERİK Arduino Nedir? Arduino IDE Yazılımı Arduino Donanım Yapısı Elektronik Bilgisi

Detaylı

Mikroişlemcili Sistemler ve Laboratuvarı 5.HAFTA:BÖLÜM-1

Mikroişlemcili Sistemler ve Laboratuvarı 5.HAFTA:BÖLÜM-1 SAKARYA ÜNİVERSİTESİ Bilgisayar ve Bilişim Bilimleri Fakültesi Bilgisayar Mühendisliği Bölümü Mikroişlemcili Sistemler ve Laboratuvarı 5.HAFTA:BÖLÜM-1 Doç.Dr. Ahmet Turan ÖZCERİT Doç.Dr. Cüneyt BAYILMIŞ

Detaylı

LCD (Liquid Crystal Display )

LCD (Liquid Crystal Display ) LCD (Liquid Crystal Display ) Hafif olmaları,az yer kaplamaları gibi avantajları yüzünden günlük hayatta birçok cihazda tercih edilen Standart LCD paneller +5 V ile çalışır ve genellikle 14 konnektor lü

Detaylı

BÖLÜM in Bellek Organizasyonu

BÖLÜM in Bellek Organizasyonu 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

Detaylı

1 GİRİŞ 1 Bu Kitap Kimlere Hitap Eder 1 Kitabın İşleyişi 2 Kitabın Konuları 3 Kitabı Takip Etmek İçin Gerekenler 6 Kaynak Kodu ve Simülasyonlar 6

1 GİRİŞ 1 Bu Kitap Kimlere Hitap Eder 1 Kitabın İşleyişi 2 Kitabın Konuları 3 Kitabı Takip Etmek İçin Gerekenler 6 Kaynak Kodu ve Simülasyonlar 6 İÇİNDEKİLER VII İÇİNDEKİLER 1 GİRİŞ 1 Bu Kitap Kimlere Hitap Eder 1 Kitabın İşleyişi 2 Kitabın Konuları 3 Kitabı Takip Etmek İçin Gerekenler 6 Kaynak Kodu ve Simülasyonlar 6 2 KİTAPTA KULLANILAN PROGRAMLAR

Detaylı

DOKUMANLAR

DOKUMANLAR DOKUMANLAR https://www.pickat.org Bu belgeyi yukarıdaki karekodu telefonunuza taratarak veya aşağıdaki linkten indirebilirsiniz. Link sürekli güncellenmektedir. https://drive.google.com/file/d/1wyi3ejzvge9vbu0ujklajnsjukbfldv/view?usp=sharing

Detaylı

Çizgi İzleyen Robot Yapımı

Çizgi İzleyen Robot Yapımı Çizgi İzleyen Robot Yapımı Elektronik Elektronik tasarım için yapılması gerek en önemli şey kullanılacak malzemelerin doğru seçilmesidir. Robotun elektronik aksamı 4 maddeden oluşur. Bunlar; 1. Sensörler

Detaylı

MİKROİŞLEMCİLER. Mikroişlemcilerin Tarihsel Gelişimi

MİKROİŞLEMCİLER. Mikroişlemcilerin Tarihsel Gelişimi MİKROİŞLEMCİLER Mikroişlemcilerin Tarihsel Gelişimi Mikroişlemcilerin Tarihi Gelişimi Mikroişlemcilerin tarihi gelişimlerini bir kerede işleyebildikleri bit sayısı referans alınarak dört grupta incelemek

Detaylı

8. MİKROİŞLEMCİ MİMARİSİ

8. MİKROİŞLEMCİ MİMARİSİ 1 8. MİKROİŞLEMCİ MİMARİSİ Gelişen donanım ve yazılım teknolojilerine ve yonga üreticisine bağlı olarak mikroişlemcilerin farklı komut tipleri, çalışma hızı ve şekilleri vb. gibi donanım ve yazılım özellikleri

Detaylı

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü BİLGİSAYAR MİMARİSİ Bilgisayar Bileşenleri Ve Programların Yürütülmesi Özer Çelik Matematik-Bilgisayar Bölümü Program Kavramı Bilgisayardan istenilen işlerin gerçekleştirilebilmesi için gereken işlem dizisi

Detaylı

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz.

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz. Ders-2: ---------- Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz. Hazırlanan programlarda pic in zaman zaman dış ortamdan bilgi

Detaylı

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ TASARIM PROJESİ ÇALIŞMASI PİC PROGRAMLAMA İLE BASİT UÇAK OYUNU MEHMET HALİT İNAN BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BAHAR 2014 KARADENİZ TEKNİK ÜNİVERSİTESİ

Detaylı

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ Sayısal Sistemler ASIC (Application Specific Integrated Circuits) Belirli bir işlev için tasarlanırlar Performansları yüksektir Maliyetleri yüksektir

Detaylı

(Random-Access Memory)

(Random-Access Memory) BELLEK (Memory) Ardışıl devreler bellek elemanının varlığı üzerine kuruludur Bir flip-flop sadece bir bitlik bir bilgi tutabilir Bir saklayıcı (register) bir sözcük (word) tutabilir (genellikle 32-64 bit)

Detaylı

MİKRODENETLEYİCİLER. Yrd.Doç.Dr. İlker ÜNAL

MİKRODENETLEYİCİLER. Yrd.Doç.Dr. İlker ÜNAL MİKRODENETLEYİCİLER Yrd.Doç.Dr. İlker ÜNAL DERSİN AMACI Mikroişlemciler Mikroişlemcilerin Yapısı Mikrodenetleyiciler PIC mikrodenetleyiciler KULLANILACAK PROGRAMLAR PROTEUS ISIS 7 PROF Micro BASIC EDITOR

Detaylı

Bu yürütme, Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

Bu yürütme, Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur) MİKROİŞLEMCİ (MİKROPROSESÖR - CPU) NEDİR? Mikroişlemci bir programının yapmak istediği işlemleri, (hafızada bulunan komutları) sırasıyla ile işleyerek icra eder (yürütür). Bu yürütme, 1. Komutun Program

Detaylı

Temel Bilgi Teknolojileri -1

Temel Bilgi Teknolojileri -1 Temel Bilgi Teknolojileri -1 Dr. Öğr. Üyesi Aslı Eyecioğlu Özmutlu [email protected] 1 Konu Başlıkları Donanım Bileşenleri Harici Donanım Dahili Donanım 2 Donanım Bileşenleri Bilgisayarın fiziksel

Detaylı

BELLEKLER. Kelime anlamı olarak RAM Random Access Memory yani Rastgele Erişilebilir Bellek cümlesinin kısaltılması ile oluşmuş bir tanımdır.

BELLEKLER. Kelime anlamı olarak RAM Random Access Memory yani Rastgele Erişilebilir Bellek cümlesinin kısaltılması ile oluşmuş bir tanımdır. BELLEKLER 1- RAM (Random Access Memory) Nedir? Kelime anlamı olarak RAM Random Access Memory yani Rastgele Erişilebilir Bellek cümlesinin kısaltılması ile oluşmuş bir tanımdır. Kısaca: RAM bilgisayar için

Detaylı

ESM-361 Mikroişlemciler. 1. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

ESM-361 Mikroişlemciler. 1. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN ESM-361 Mikroişlemciler 1. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN Ders Bilgileri 24 Eylül 2018 GÜZ YARIYILI DERSLERİNİN BAŞLAMASI Ara Sınav 31 Aralık 2018 GÜZ YARIYILI DERSLERİNİN SON GÜNÜ

Detaylı

Bilgisayar Mimarisi Nedir?

Bilgisayar Mimarisi Nedir? BİLGİSAYAR MİMARİSİ Bilgisayar Mimarisi Nedir? Bilgisayar mimarisi, diğer mimariler gibi, bir yapı kullanıcısının ihtiyaçlarını belirleme ve bu ihtiyaçları ekonomik ve teknolojik kısıtlamalar dahilinde

Detaylı

Yrd.Doç.Dr. Celal Murat KANDEMİR

Yrd.Doç.Dr. Celal Murat KANDEMİR Bilgisayar Mimarisi Ara Bağlantı Yapıları ve Bus Kavramı Yrd.Doç.Dr. Celal Murat KANDEMİR ESOGÜ Eğitim Fakültesi - BÖTE twitter.com/cmkandemir Ara Bağlantı Yapıları Bir bilgisayar sistemi MİB, bellek ve

Detaylı

Mikroişlemciler Dersi. PIC Mikro denetleyiciler ve Programlama

Mikroişlemciler Dersi. PIC Mikro denetleyiciler ve Programlama Mikroişlemciler Dersi PIC Mikro denetleyiciler ve Programlama Kaynaklar ile ilgili iki web sitesi: - http://www.mikroe.com - http://www.microchip.com/ - Ders sunuları - Sakarya üniversitesi e-kütüphane

Detaylı

Çalışma Açısından Bilgisayarlar

Çalışma Açısından Bilgisayarlar Çalışma Açısından Bilgisayarlar Ölçme sistemi ile hesaplama sistemi birbiriyle ilgili olmasına rağmen aynı değillerdir. Suyun sıcaklığı ve gürültünün şiddeti ile evdeki lambaların ölçülmesi aynı değillerdir.

Detaylı

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER BÖLÜM 2 INTEL AİLESİNİN 8 BİTLİK MİKROİŞLEMCİLERİ 2.1 8080 MİKROİŞLEMCİSİ Intel 8080, I4004, I4040 ve I8008 in ardından üretilmiştir ve 8 bitlik mikroişlemcilerin ilkidir ve 1974 te kullanıma sunulmuştur.

Detaylı

Ünite-2 Bilgisayar Organizasyonu. www.cengizcetin.net

Ünite-2 Bilgisayar Organizasyonu. www.cengizcetin.net Ünite-2 Bilgisayar Organizasyonu Bilgisayar Nedir? Belirli bir sonuç üretmek amacıyla; mantıksal kıyaslamalardan sonuç çıkarabilen, büyük miktarlarda bilgiyi depolayabilen ve gerektiğinde bu bilgileri

Detaylı