PIC 16F84 MİKRODENETLEYİCİ TEMEL BİLGİLERİ, PROGRAMLANMASI VE UYGULAMALARI

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

Download "PIC 16F84 MİKRODENETLEYİCİ TEMEL BİLGİLERİ, PROGRAMLANMASI VE UYGULAMALARI"

Transkript

1 PIC 16F84 MİKRODENETLEYİCİ TEMEL BİLGİLERİ, PROGRAMLANMASI VE UYGULAMALARI

2 Sunuş Kişisel bilgisayarları kullandığımızda genellikle onun donanımı hakkında fazlaca düşünmeyiz. Sadece kullanma yöntemlerini öğrenmeye çalışırız. Çünkü bilgisayarlarla interneti kullanmayı veya word, excel, powerpoint programları bizler için daha önem taşırlar. Biz burada mikrodenetleyicileri daha sonra öğrenmeye çalışacağız. Mikrodenetleyicileri anlayıp öğrenebilmek için aşağıdaki basamakları takip etmemiz gerekmektedir. (1) İfade değerinin şekli ( Binary sayı, Hexadecimal sayı, Decimal sayı ) (2) Mikrodenetleyicileri kullanabilmek için Assembler dili (3) Elektronik malzemeler ve karakteristikleri hakkında bilgi ( IC, LED, diyot, direnç, transistör, vb.) Endüstriyel matematik dersinde bu sayısal değerlerin ve bunların birbirlerine dönüşümleri ile çarpma, toplama, bölme ve çıkarma gibi işlemlerin nasıl olduğunu öğrendik. Bu ders kitabında bu değerleri kullanmayı dahada ileri seviyelere ulaştıracağız. Assembler dili mikrodenetleyici programları için kullanılmaktadır. Ancak assembler dili oldukça zor olmasına rağmen temel oluşturduğundan dolayı pek çok insan tarafından kullanılmaktadır. Çünkü assembler dilini kullanabilmek için donanım bilgisine ihtiyaç vardır. Makine dilini anlayabilirsek bu mikrodenetleyici dilini anlayabiliriz. Assembler dili makine diline benzerlik gösterir. Bu dilde sık sık register, adres, byte, flag, vb. gibi terimler kullanmaktayız. Üstelik program hatasız olmalı ve sonunda derlememiz gerekmektedir. Bu program dili fazla esnek değildir. Program yazarken mikrodenetleyici işlemcisinin data bilgilerini kullanırız. Bu nedenle hata yapmamamız gerekir. Assembler dilinde bir program yazacağımızda komutlarının görevlerini iyi anlamamız gerekmektedir. Assembler veya makine dilinin bu kadar zor ve dikkat edilmesi gereken bir programlama yöntemi olmasına rağmen neden bu dil günümüzde de tercih edilmekte olduğunu aşağıdaki maddelerle sıralayabiliriz.. (1) İşlem hızı çok hızlıdır. (2) Assembler dili fazla hafıza kullanmaz. (3) Makine dili ile direk bağlantılı olduğundan kontrol için uygundur. Mikrodenetleyici teknolojisi aracılığı ile PIC in Assembler dilini öğreneceğiz. Her nekadar PIC programlama gelecekte C dili ile kontrol edilip yazılsada assembler dili temel bilgi olarak çok önem taşımaktadır. Bununla birlikte elektronik parçaların özelliklerini ve çalışma prensiplerini eğitim setiyle daha iyi öğrenmiş olacağız. Buna sensörlerde dahil olmaktadır. Mikrodenetleyici teknolojisini Otomasyon teknolojisine geçişte bir adım olarak kullanmaktayız.

3 PIC mikrodenetleyicileri PIC mikrodenetleyici eğitim seti PIC çizgi takip eden robot

4 İ Ç İ N D E K İ L E R Bölüm 1 Mikrodenetleyicinin temeli Mikrodenetleyici (1) Bilgisayarın temel donanımı 2 (2) Mikrodenetleyici işletimi 3 (3) Hafızası ve fonksiyonları 3 2 PIC mikrodenetleyici (1) PIC in yapısı 5 (2) PIC çeşitleri 6 (3) PIC in yapısı 6 (4) PIC programının geliştirilmesi 7 3 Sayıların ifadesi (1) Sayıların tipi 9 (2) Binary dijit nedir? 10 (3) Hexedesimal dijit nedir? 11 (4) Binary, desimal, hexedesimal sayıların dönüşümleri 11 Bölüm 2 PIC yazıcısı ve eğitim seti yapmak Elektronik elemanların anlatımı (1) Transistör 14 (2) LED ( light emitting diode )( Işık yayan diyot ) 15 (3) Diyot ( anahtar diyot ) 15 (4) Seri regülatör ( Gerilim düzenleyici ) 16 (5) Kristal osilatör 17 (6) Transistor düzeni ( ULN2803 ) 17 2 PIC eğitim setinin yapılışı (1) Elektronik devre üzerinde deliklerin delinmesi 18 (2) Alt taban ( Şeffaf ) deliklerinin açılması 19 (3) Lehimleme yöntemi 19 (4) Elektronik parça elemanlarının yerleştirilmesi 20 (5) PIC yazıcısının devre diagramı 21 (6) PIC yazıcı parçalarının düzenini gösteren şema 21 (7) PIC eğitim seti devre diyagramı 22 (8) PIC eğitim seti parça düzeni şeması 22 (9) Parça listesi 23 (10) Bağlama aparatının yapımı 24 (11) Bilgisayar bağlantı kablosunun yapımı 25

5 Bölüm 3 PIC in yapısı PIC16F84 (1) PIC16F84 26 (2) PIC16F84 ün yapısı 27 (3) Clock düzeni / Komut süresi 28 (4) Komut akışı / Bilgi iletim kanalı 28 (5) W yazmacı ( register ) 29 (6) Program belleği ( memory ) 30 2 Veri belleği ( DATA memory ) (1) Veri belleği 31 (2) Yığın hafıza ( Stack Memory ) 32 (3) Program sayıcı ( Program counter ) 32 (4) STATUS Yazmacı ( Register ) 33 3 I / O port ( input / output ) (1) Giriş İşlemi 34 (2) Çıkış işlemi 35 4 Reset Devresi (1) Resetleme İşlemi ( Power on Reset ) ( POR ) 36 (2) Butonla Reset 37 5 Osilatör özellikleri (1) osilatör modelleri 38 (2) Kristal / seramik resonator işlemi 38 (3) RC Osilatör 39 Bölüm 4 PIC Programlamının temeli MPLAB (MPASM) ı nasıl Kullanırız? (1) Basit bir program 40 (2) Sayıların ifade edilmesi 40 (3) Programın temel ifade şekli 41 (4) Program yazmanın yöntemi 42 (5) MPLAB nasıl kullanılır? 43 (6) MPASM 56 2 PIC yazıcı setini nasıl kullanırız? (1) PIC yazıcının ( writer ) kullanılması 57 (2) Bağlantısı kablosunu PC ye bağlayınız. 57 (3) PICWW ( PIC yazıcı programı ) nasıl kullanılır? 58 (4) Bu programın sonuç ifadesi 65 3 Programın açıklanması (1) Program Listesi ve akış diyagramı 66 (2) Yöntem şartnamesi ( Specification of processor ) 67 (3) Port un kurulumu 68

6 (4) LED lerin yakılması 71 Alıştırma Alıştırma İki veya daha fazla LED in yakılması (1) Program (2) Include dosyası 73 (3) MOV komutu 75 Alıştırma Alıştırma Timer Programı (DECFSZ) (1) Zamanlayıcı ( timer ) program 77 Alıştırma (2) Program Alıştırma Alıştırma LED lerin ardışık olarak yanması ( Dönüş uygulaması ) (1) Dönüş programı 1 1) Dönüş uygulaması 84 2) Program ) Akış diyagramı 86 Alıştırma (2) Dönüş programı 2 1) BTFSC komutun uygulaması 87 2) Program ) Akış diyagramı 89 Alıştırma Alıştırma İncrement and decrement uygulaması ( INC, DEC ) (1) Program 4-5 1) Akış diyagramı 91 2) Program yazılışı 92 Alıştırma Anahtarlama arabirimi (1) Anahtarlama devresi 93 (2) Programın açıklanması 93 (3) Program (4) Akış diyagramı 95 Alıştırma Alıştırma RETLW komutunun uygulaması (1) Retlw işlem sırası 97 (2) Program Alıştırma

7 10 Buton arabirimi 2 (1) chattering 100 (2) Alıcı ile buton uygulaması 1) Klasik tip buton devresi 100 2) Kondansatörlü buton devresi 100 3) Schmidt Trigger ters çeviricili devre 101 Alıştırma 4-14 (1) Alıştırmanın açıklanması 101 (2) Alıştırma 4-14 ( akış diyagramı ) 102 (3) Buton uygulama devresi 103 (4) Buton uygulama devresinin üstten görünüşü 103 (5) Deneyin sonucu Uygulanabilir buton programı (1) Uygulanabilir buton programında izlenecek yol 105 Alıştırma Mantıksal işlemler (AND,OR,XOR) (1) AND işlemi 1) ANDLW 107 2) ANDWF 107 3) Program ) Akış diyagramı 108 5) Program 4-8 listesi 109 (2) IOR işlevi 1) IORLW 110 2) IORWF 110 3) Program ) Akış diyagramı 111 5) Program 4-9 listesi 112 (3) XOR işlevi 1) XORLW 113 2) XORWF 113 3) Program ) Akış diyagramı 114 5) Program 4-10 listesi 115 Alıştırma Aritmetik komutlar ( ADD, SUB komutları) (1) ADD komutları 1) Program ) Akış diyagramı 116 3) Program 4-11 listesi 117 Alıştırma Alıştırma (2) İki bit bilginin toplanması 1) Düşünme yöntemi 118 2) Akış diyagramı 118 3) Program 4-12 listesi 120 (3) Çıkartma komutları 1) SUBLW 121

8 2) SUBWF 121 3) Çıkarma yöntemi 122 4) Program ) Program 4-13 listesi 123 Alıştırma Alıştırma ) SUB komutunu çeşitli şekillerde karşılaştırması 124 Alıştırma Bölüm 5 PIC Program Uygulamaları Yedi Segment kod çözücü ( Segment decoder ) (1) Yedi segment kod çözücüler 125 (2) Programın planlanması 126 (3) Yedi segment programın akış diyagramı 128 (4) Programın yapılması ve uygulanması Röle kontrol (Relay control ) (1) Mekanik röle 130 1) Röle deney devresi 131 2) İletken bağlantısı 132 3) Program yapımı 133 Alıştırma 5-1, 5-2, (2) SSR ( Solid State Relay ) 1) SSR 134 2) İletken bağlantısı 134 3) Program yapımı 135 Alıştırma 5-4, 5-5, 5-6, İşlemsel Yükselteçler ( Operational amplifier Op-amp) (1) İşlemsel yükselteçler 136 (2) Tersleyen yükselteç devresi 137 (3) Tersleyen yükselteç devresi 1) Tersleyen yükseltecin yükseltme faktörü 137 2) Tersleyen yükselteç devresine uygulama 138 (4) Terslemeyen yükselteç devresi 1) Terslemeyen yükselteçlerin yükseltme faktörü 141 2) Terslemeyen yükselteç devresine uygulama 141 (5) Karşılaştırıcı ( Comparator ) olarak kullanılması 1) Karşılaştırıcı 144 2) Karşılaştırıcı uygulaması 144 Alıştırma Alıştırma (6) Voltaj takip devresi DA konvertör (1) DA konvertör prensibi 148 Alıştırma 5-10, (2) DENEY 1 1) DA konverterin çıkışı 150 2) DA konvertörün deneyi 150 (3) Testere dişli dalga yapımı 154

9 Alıştırma AD konvertör (1) AD konvertör prensibi 157 (2) AD konvertör tipinin ardarda tahmin prensibi 159 (3) Program yapımı 161 Alıştırma 5-13, Seri iletişim (RS-232C) (1) Bilgi iletişiminin ana hatları 164 1) Bilgi iletişim sistemi 164 2) Transmisyon sinyal sistemi 165 3) RS232C 165 4) Seri komünikasyonun formatı 166 5) Seri komünikasyon uygulama devresi 168 (2) Seri komünikasyon programı 1 1) Program ) Program mantığı 170 3) Programın akış diyagramı 170 4) Program1 örneği 172 5) Teraterm programını nasıl kullanırız? 173 6) Programın uygulanması 175 Alıştırma (3) Seri komünikasyon programı 2 1) Program 2 hakkında 176 2) Program mantığı 176 3) Program2 örneği 176 4) Program uygulaması 180 Alıştırma 5-16, 5-17, Step Motor kontrolü (1) Step motorlar hakkında genel bilgiler 1) Her adımın derecesi 183 2) Uçlarının tesbiti 184 3) Step motorların temel özellikleri 184 4) Çalışma prensibi 185 5) Unipolar Step motor ( 1 fazlı sürme metodu ) 186 6) Unipolar Step motorun 2 fazlı olarak sürülmesi 187 7) Unipolar Step motorların 1-2 fazlı olarak sürülmesi 188 (2) Step motor uygulaması1 1) Step motor uygulama devresi 189 2) Step motorun programı 191 3) Programın akış diyagramı 191 4) Program listesi 192 Alıştırma 5-19, 5-20, 5-21, (3) Step motor uygulaması 2 ( Pozisyon kotrol ) 1) Foto interrupter 195 2) Program 195 3) Programın akış diyagramı ( Alıştırma 5-23 ) 196

10 8 DA motor kontrolü (1) DA motorları hakkında genel bilgi 1) Transistör ve FET ile DA motor kontrolü yapabiliriz ) H köprü devresi 199 3) Motor sürücü 199 4) DA motorlarında hız kontrolü (a) Gerilim kontrolü 200 (b) PWM kontrol (Faz genişlik kontrollü ) 201 5) DA motor ders eğitim setinin devre şeması 202 (2) Eğitim malzemesi 1) Motor eğitim malzemesi 203 2) DA motor eğitim seti 203 (3) DA motor programı 1) Program1 ( FET ile ) ( Uygulama 5-24 ) 204 2) Program2 ( TA7257 ile ) ( Uygulama 5-25 ) 204 3) Program 3 ( PWM programı ) 205 (a) PWM Dalgası ( PB1 ) 205 (b) PWM dalgasını nasıl oluşturuz. 205 (c) Program3 ün akış diyagramı 206 (d) Program3 listesi 207 (e) Program3 ün uygulama sonucu 209 Uygulama Uygulama Kesme ( İnterrupt ) (1) Kesme 1) Kesme kavramı 212 2) TMR0 kesme 213 3) Dış kesme RB0/INT ucu 213 (2) INTCON Yazmacı ( register ) ( Adres 0Bh,8Bh ) 214 (3) OPTION_REG REGISTER ( ADRES 81h ) 215 (4) RB0/INT kesme 1) RB0/INT kesme programı 217 2) programın akış diyagramı 218 3) RB0 / INT kesmesi için program 219 Uygulama Uygulama (5) TMR0 (Timer0 zaman aşımı kesme) 1) Timer0 zaman aşımı kesme hakkında 223 2) Zaman aşımı frekans nasıl elde edilir? 225 3) Interval zamanlayıcı ( timer ) 226 (6) Timer0 program1 1) Akış diyagramı 227 2) Timer0 program1 228 (7) Timer0 program2 ( TMR0 ın Initial değeri setleme ) 1) Timer0 program2 230 Uygulama 5-30,

11 10 Çizgi takip eden Robot ( Line trace robot control ) (1) Çizgi takip eden robot anlatımı 1) Çizgi sensörü 233 2) Foto transistor uygulaması 235 3) Foto IC ( Hamamatsu S7136 ) 238 (2) Çizgi takip eden robot 1) Çizgi takip eden robot devre şeması 239 2) Çizgi takip eden robotun programı 240 (a) Çizgi takip eden robotun temel çalışma prensibi a) PIC ucu ( PORT ) 240 b) TA7257P ( Toshiba ) 240 c) Temel program 1 ( İleri hareket ) 241 d) Temel program ) Çizgi takip eden program 1 ( Uygulama 5-33 ) 244 4) Program 1 in akış diyagramı 245 Uygulama Müzik programı (1) Müzik programı 247 (2) Müzik programı 1) Program çerçevesi 248 2) Program listesi 249 Uygulama (3) Müzik program 250 Uygulama Eki PIC komutlarının açıklanması Include dosyalar Bilgi sayfaları Öğrenim seti 310

12 Mikrodenetleyicinin temelleri Bölüm 1 Mikrodenetleyicinin temeli İlk mikrodenetleyici seti (NEC TK-85) Mikrodenetleyici chipleri 1

13 Mikrodenetleyicinin temelleri 1 Mikrodenetleyici Mikrodenetleyici gerçekte küçük bir bilgisayardır. Çevremizde o kadar çok mikrodenetleyici kontrollü elektronik cihaz vardır ki bunlara örnek televizyon, radyo, fax-modem, oyuncaklarda, VCR, kamera vb. verebiliriz. Bunları aşağıda ( Şekil 1-1 ) de görmektesiniz. micro computer Şekil 1-1 Çevremizde kullanılan aktif Microdenetleyici örnekleri (1) Bilgisayarın temel donanımı Bütün bilgisayarlar verilen programla çalışmaktadır. Buna sistem programının kayıt edilmesi denir. Genel mikrodenetleyici sistemleri şekil 1-2 de görülmektedir. Bu mikrodenetleyiciler CPU ( Merkezi işlem birimi ), ROM ( Sadece okunabilen bellek ), RAM ( Rastgele erişilebilen bellek ) ve LSI ( Arabirim ) den oluşmaktadır. Clock CPU Adress BUS Interface LSI input/output ROM RAM Data BUS Şekil 1-2 Genel mikrodenetleyici sistemleri 2

14 Mikrodenetleyicinin temelleri 8-bitlik bir mikrodenetleyici dizayn etmek istediğimizde ilkönce CPU seçmemiz gerekmektedir. Günümüzde popüler CPU lar i8085(intel), Z80, M6809(Motorola) dır. En popüleri Z80dir. Z80 i8085 in tüm özelliklerini kullanmakta bu nedenle çok sayıda komuta sahip olmaktadır. Ancak mikrodenetleyicilar sadece CPU ile çalışmamaktadır. Mikrodenetleyici sistemlerinin oluşabilmesi için I/O ( Giriş Çıkış ) birimlerinin yanı sıra adres tanımlama devresine ( burada RAM ve ROM bellek adreslerini ve arabirimi seçebiliriz ), işlem hızını sağlayan clock devresine ve LSI ( 8255,Z-80PIO ) arabirimine ihtiyaç bulunmaktadır Bu nedenle LSI ve bellek mutlaka mikrodenetleyici sistemleri için gereklidir. (2) Mikrodenetleyici işletimi Mikrodenetleyiciler üç birimi sürekli tekrar ederler. a) Alma ( Fetch ) Fetch Hafızaya yüklenmiş olan program komutlarını alır. b) Kod çözme ( Decode ) Decode Yazmaçtaki komutları kod çözücü ( decoder ) yardımıyla çözer. Execution c) Uygulama ( Execution ) Çözülen komutları uygular ve bu işlemi sürekli tekrar eder. Şekil 1-3 Mikrodenetleyici devresi (3) Hafızası ve fonksiyonları Mikrodenetleyicinin ana hafızası olarak genellikle IC hafıza ( RAM or ROM ) kullanmaktadır. a) ROM (Sadece okunabilir bellek) ROM sadece dış verileri okumak üzere tasarlanmıştır, CPU ve IC ile buna veri yazılımı gerçekleştirilemez. Bilgileri üzerinde düzenli bir şekilde saklamaya yarar ve elektrik kaynağı kesilse bile üzerindeki bilgiler silinmez, ROM bellek içeriği kalıcı olarak saklanır ROM üç ana çeşitten oluşmaktadır. 3

15 Mask ROM IC işleminin içeriğini düzenleyebildiğimiz bellek çeşididir. Yeniden yazılması mümkün değildir. PROM (Programlanabilir ROM) Kullanıcı tarafından yazılabilen bellektir. Yeniden yazılması mümkün değildir EPROM (Silinebilir PROM) Kullanıcı tarafından tekrar tekrar yazılabilmekte veya silinebilmektedir. Mikrodenetleyicinin temelleri b) RAM ( Rastgele erişilebilen bellek ) RAM kullanıcıların belleği özgürce okuyup yazabilmesi için bir IC belleğidir. Fakat elektrik kaynağı kesildiğinde bütün bilgiler bellekten silinir. Bu nedenle RAM aritmetik işlemlerin sonucunu geçici süreler içerisinde bellekte depolama işlemine yarar Mask ROM Üretim işleminde yazılmıştır, içerikler silinemez. PROM PROM yazıcısı ile yazılmıştır silinemez. ROM UV-EPROM PROM yazıcısı ile yazılmıştır ultraviole ışınları ile silinebilir. EEPROM PROM yazıcısı ile yazılmıştır, elektrik sinyalleri ile silinebilir. Statik RAM Kullanışı basit ve kolaydır ancak pahalıdır. RAM Dinamik RAM Kullanışı zordur ancak pahalı değildir. Tablo 1-1 Bellek Çeşitleri 4

16 Mikrodenetleyicinin temelleri 2 PIC mikrodenetleyici (1) PIC in yapısı PIC Mikrodenetleyici İngilizce ( Peripheral Interface Controller ) kelimesinin başharflerinden oluşmaktadır. Anlamı ise dış üniteleri denetleyen arabirimdir. Bunun aracılığı ile çeşitli alıcıları ( lamba, role, motor vb. ) kolaylıkla kontrol edebiliriz. ROM CPU I/Oport RAM PIC Şekil 1-4 PIC paketi PIC mikrodenetleyici bir entegre şeklinde olup I/O giriş ve çıkış kontrollerini çok kolay ve hızlı bir şekilde yapabilmekteyiz Bu nedenle robot gibi ufak sistemleri kontrol edebiliriz. PIC mikrodenetleyici aşağıdaki özelliklere sahiptir. (a) Komut sayısı diğer CPU lardan daha azdır. PIC ler RISC( Reduced Instruction Set Computer ) denilen bir sistem mantığı ile üretildiklerinden komut sayıları azdır ( sedece 35 Adet ) ve basittir. Bunun yanısıra Z-80 CPU da 158 adet komut sayısı mevcuttur. (b) Küçük gerilim altında işlem yapmak mümkündür. PIC ler piyasada bulunan kuru pil olarak tabir ettiğimiz bataryalarla çalışabilmektedir. Çünkü çalışma gerilimleri 2 ila 6 Volt arasındadır. (c) Çıkış pininden yüksek akım alınabilir. PIC in uçlarına direk olarak LED sürebiliriz çünkü PIC yaklaşık 20mA çıkışı güvenli bir şekilde sağlayabilir. (d) Fiyatı oldukça ucuzdur. PIC16F84 normal bir PIC mikrodenetleyici olup CPU lardan çok daha ucuza satın alabiliriz. Şekil 1-5 PIC16F84 ve diğer PIC ler. 5

17 Mikrodenetleyicinin temelleri (2) PIC çeşitleri PIC yaklaşık 3 ayrı katagoride inceleyebiliriz. 1) Düşük seri 12 Bit kelime boyuna sahip eski kuşak PIC lerdir. ( model numarası: 12C5xx,16C5x ) 2) Orta seri 14 Bit kelime boyuna sahip PIC lerdir. Bu seri oldukça kullanışlı ve tercih edilen bir seridir. Analoğu digitale çeviren ve seri porta sahip PIC tir. Aşağıdaki PIC ler bu serinin elemanlarıdır. ( model numarası:12c6xx,16c55x,16c62x,16c6xx,16c7xx,16f8xx,16c92x ) 3) Yüksek son seri 16 Bit kelime boyuna sahip PIC lerdir. Yüksek performanslı olan bu PIC lerin kullanımı zordur. ( model numarası:17cxxx,18cxxx ) PIC çeşitleri İsmi bilgi biti Hafıza kapasitesi Hafıza tipi A/D I/O port paketi PIC16C E 12 18P DIP PIC16C E 12 18P DIP PIC16C E 20 28P DIP PIC16C64A 14 2 E 33 40P DIP PIC16C E 4CH 13 18P DIP PIC16C E 8CH 33 40P DIP PIC16F EE 13 18P DIP PIC16F EE 5CH 22 28P DIP PIC16F EE 8CH 33 40P DIP PIC16F EE 8CH 33 40P DIP * Hafıza tipi E: EPROM EE:EEPRPM U:UVEPROM Tablo 1-2 Orta seri PIC çeşitleri (3) PIC in yapısı Genel mikrodenetleyicilerin yapısı 'Von Neumann mimarisi ' olarak adlandırılır. Bilgi çıkışları birlikte bir hafızadadır ve ALU bir data bus ile hafıza ( memories ) arasındadır. ( Şekil 1-6 ) Alışılagelmiş mikrodenetleyiciler bu 'Von Neumann mimarisindedir. ( bus: Sinyal hattı bus olarak adlandırılır. Örneğin 8 bitlik bilgisayar data bus 8 sinyal hattına sahiptir. ) 6

18 Mikrodenetleyicinin temelleri DATA bus peripheral circuit main memory instruction decode & control register peripheral circuit ALU ALU:Arithmetic Logic Unit Şekil 1-6 Von Neumann mimarisi PIC Harvard mimarisine sahiptir ve data hafızası ile program hafızası vardır. (Şekil 1-7) Data hafızası bilgi yoluna ( bus ), program hafızası ise program yoluna ( bus ) sahiptir. Bu iki yol ( bus ) birbirlerinden tamamen bağımsızdırlar. İç yapısı basittir ve işletimi hızlıdır. Program hafızası bağımsız olduğundan dolayı kapladığı alanda bağımsızdır. Ve bu tanımlar birtek kelimeylede ifade edilebilir. DATA bus Program bus peripheral circuit Program Memory instruction DATA memory decode & control register ALU Şekil 1-7 Harvard mimarisi (4) PIC programının geliştirilmesi PIC programının geliştirilmesi Şekil 1 8 gösterilmiştir. 1) Kişisel bilgisayar OS(operating system)( işletim sistemi ): Windows 95,98,Me Specification ( Özellikleri ): Pentium 75MHz ve üstü, paralel port, seri port 2) PIC programlama yazılımı (MPLAB - IDE) MPLAB PIC i programlamak için windows altında çalışan bir yardımcı yazılımdır. MPLAB IDE (Integrated Development Environment) olarak da adlandırılır. Microchip Technology 7

19 Mikrodenetleyicinin temelleri Co. (United States) firması tarafından geliştirilmiştir Bu program internetten ücretsiz indirilebilir. Web adresi 3) PIC e windows da yazdırma programı ( Ic prog ) PIC e programı yazdırmak için özel bir elektronik devreye ihtiyaç vardır. Bu devreyle PIC e program yazdırma işlemini ic - prog yazılımı gerçekleştirir. Bu program internetten ücretsiz indirilebilir. Web adresi Programı ilk defa çalıştırılacağında bazı ayarları yapmanız gerekmektedir. Bu ayarlar Bölüm 4 de açıklanmıştır. 4) PIC yazıcı ve PIC Eğitim seti PIC yazıcısı elektronik bir devre olup PIC e yazılmış programı yükleme işine yarar. PIC eğitim seti ise yazılan programın doğru olup olmadığını kontrol etmek için yapılmış elektronik bir devredir. MPLAB * Kaynak dosya * Derleme * HEX Dosya Windows için PIC yazıcı * Program Yazımı Yükleme MPLAB Windows için PIC yazıcı PIC YAZICI PIC Eğitim seti Şekil 1-8 PIC programının geliştirilmesi 8

20 Mikrodenetleyicinin temelleri 3 Sayıların ifadesi (1) Sayıların tipi Microdenetleyiciler binary, decimal ve hexedesimal sayı sistemlerini kullanırlar. Binary sayı sistemi mikrodenetleyicilerin anlayabildiği bir sayı kod sistemidir. Desimal sayı sistemi bize yabancı olmayan bir sayı sistemidir. Hexedesimal sayı sistemi ise bizim binary sayı sistemimizi kolayca anlamamıza yardımcı olan bir sistemdir. Bunun yanısıra kullanıcının ( programlayıcının ) bu üç sayı sistemi arasındaki ilişkiyi çok iyği bilmesi gerekir ve bunlar arasında dönüştürmeleri kolayca yapabilme bilgisine sahip olmaları gerekmektedir. Desimal sayılar Binary sayılar Hexadecimal sayılar A B C D E F Tablo 1-3 Desimal, binary ve hexedesimal karşılıkları tablosu Binary ve decimal sayı sitemlerini öğrendikten sonra bunların birbirlerine dönüşüm metodlarını öğrenmemiz gerekmektedir. 9

21 Mikrodenetleyicinin temelleri dijital sayı maksimum kısaltma dijital sayı maksimum kısaltma K K K M M M M M M K M K M K M K M K G K G K G Tablo 1-4 Digital numara ve onların maksimum değerleri (2) Binary dijit nedir? 0 ve 1 den meydana gelen özel bir sayı sistemidir. Gerçekte desimal sayı sistemlerinde 9 ve 1 toplandığında 10 elde edilir ancak binary sayı sistemlerinde 1 ve 1 toplandığında 2 olmaz. ( 1 ve 0 ) 10 olur. Mikrodenetleyicilerin sinyal seviyeleri yalnızca iki çeşittir. Ya yüksek ( 1 ) yada alçak ( 0 ) dır. Bu mikrodenetleyici komutları için çok uygundur. Fakat mikrodenetleyiciler için çok kolay ve anlaşılır olan bu binary sayı sitemi gerçekte insanlar için çok zor anlaşılmaktadır. Binary sayı sitemi kolayca hexedesimal sayı siteminede dönüştürülebilemektedir. Sonunda B harfi olan tüm sayılar binary sayı anlamını taşımaktadır. Örneğin 21 olan desimal sayısı binaride 10101B olarak ifade edilir. 21 = 1x x x x x2 0 = 10101B 10

22 Mikrodenetleyicinin temelleri (3) Hexedesimal dijit nedir? Hexedesimal sayı sistemi 16 tabanlı bir sayı sistemi olup 0 15 arasında sayılarla ifade edilmektedir. Ancak arası rakamla değil; A F gibi harflerle ifade edilir. Örneğin F ( 15 ) sayısına 1 eklediğimizde 10B binary sayısını elde ederiz. 8-bit binary sayıyı 4 er bitlik iki kısıma böleriz ve Hexedesimal sayıya karşılık gelir. Hexedesimal sayıları ifade ederken sonuna H (Hexedesimal) harfini ilave ederiz. 10 = 0AH (4) Binary, desimal, hexedesimal sayıların dönüşümleri 1) DESİMALİN BİNARY E DÖNÜŞTÜRÜLMESİ Desimal sayıyı 2 e böleriz. Kalanı yan tarafa yazarız. Buda binary sayıyı verir. Örneğin decimal 19 olan sayıyı binary sayı sistemine dönüştürelim. 2 ) 19 2 ) Lowest bit(lsb) En düşük bit 2 ) ) = 10011B Highest bit(msb) En yüksek bit Desimal sayı sisteminden hexedesimale dönüştürme işlemi aynı yolla gerçekleştirilir. 2) BİNARY SAYILARIN DESİMAL E DÖNÜŞTÜRÜLMESİ Her binary sayısının biti karesi ile çarpılır. ( 2 0, 2 1, 2 2, 2 3, ), ve çıkan toplam decimal sayıyı verir. Örneğin, 1001 binary sayısının decimal sayıya dönüştürülmesi = 1x x x x2 0 = = 9 11

23 Mikrodenetleyicinin temelleri 3) DECİMAL SAYININ HEXEDESİMALE DÖNÜŞTÜRÜLMESİ Desimal sayıyı 16 ve 16 n nın üstüyle böl kalanı 16 n-1 ile böl tekrar kalanı 16 n-2 ile böl bu işlemi 16 0 olana kadar tekrarla. Örneğin 677 in hexedesimale dönüştürülmesi. 677 / 16 2 = 2 Bölüm : 165 ( 677 / 16*16 = Tam kısmı 2 alınır * 16 * 16 = 165 ) 165 / 16 1 = 10(0AH) Bölüm : 5 ( 165 / 16 = Tam kısmı 10=A alınır * 16 = 5 ) 5 / 16 0 = 5 ( 5 / 1 = 5 Tam kısmı alınır. ) SONUÇ 677 = 2A5H Desimal sayı sisteminden binariye dönüşme metodu da kullanılabilir. 4) HEXEDESİMALİN DESİMALE DÖNÜŞTÜRÜLMESİ Her hexedesimalin sayısı karesi ile çarpılır ( 16 0,16 1,16 2, ----), çıkan sonuç toplanır buda desimal sayıyı verir. Örneğin A4H in decimal sayıya dönüştürülmesi. A4H = 10x x16 0 = = 164 5) BİNARİNİN HEXEDESİMALE DÖNÜŞTÜRÜLMESİ Binary sayıları her biri 4 er bitlik gruplara ayırırız ve bunları hexedesimale dönüştürüz. sonra bunları bir düzene koyarız. Bu hexedesimal sayıdır. Örneğin B nin hexedesimal sayıya dönüştürülmesi B = 2EH 2 E 6) HEXADESİMAL İN BİNARY SAYI SİSTEMİNE DÖNÜŞTÜRÜLMESİ Her bir Hexedesimal sayıyı 4 er bitlik binary sayılara dönüştürürüz ve bunları bieleştirdiğimizde Binary karşılığını bulmuş oluruz. Örneğin B2H hexedesimal sayıyı binarye dönüştürelim. B B2H = B 12

24 PIC yazıcısı ve eğitim seti yapmak Bölüm 2 PIC yazıcısı ve eğitim seti yapmak PIC Yazıcısı ve Eğitim seti 13

25 PIC yazıcısı ve eğitim seti yapmak PIC mikrodenetleyiciyi göreceğiz. Mikrodenetleyiciye program yazmayı ve yazılan programı denemek için gerekli olan deney setini burada hazırlayacağız. 1 Elektronik elemanların anlatımı Temel endstriyel elektronik dersinde ana elektronik parçaların özelliklerini öğrendik. Burada PIC yazıcı ve deney setini öğrenmiş olacağız. (1) Transistör 1) 2SC1815 ( npn transistör ) 2SC1815 npn tipi küçük sinyal transistörü 2SC1815 B C E E : emitter C : kolektör B : beyz E C B Şekil 2-1 2SC1815 2) 2SA1015 ( pnp transistör ) 2SA1015 pnp tipi küçük küçük sinyal transistörü 2SA1015 B E E : emitter C : Kollektör C B : beyz E C B Şekil 2-2 2SA

26 PIC yazıcısı ve eğitim seti yapmak (2) LED ( light emitting diode ) ( Işık yayan diyot ) Güç kaynağında enerjinin olup olmadığını öğrenmek için ve eğitim setinde yazılan programa gore işevini yapıp yapmadığını kontrol amacıyla LED kullanacağız. Görünen ışığın dalga boyu LED( Light Emitting Diode ) nm. arasındadır. K A Uzun uç anadu göstermektedir. ( + ) LED aşağıdaki özellliklere sahiptir.. LED chip lead frame lens bonding wire a) Uzun ömürlüdür b) Düşük güç harcarlar c) Sahip oldukları ısı çok azdır. d) Yüksek hızda çalışma gösterirler e) Çizimi kolaydır f) Işıklandırma kontrolü kolaydır. Şekil 2-3 LED in yapısı Mavi LED 1993 de japonyada bir şirket tarafından geliştirildi. Günümüzde bir çok alanda kullanılmaktadır çünkü 3 ana renge sahiptir. ( kırmızı, yeşil ve mavi. ) ( örneğin : dot matrix ekran tam renkli ekrandır. ) (3) Diyot ( anahtar diyot ) 1S1588 küçük bir anahtar diyottur. Düz polarma durumunda 0,6 V. gerilime sahiptir. Şekil 2-4 Diyot 15

27 PIC yazıcısı ve eğitim seti yapmak (4) Seri regülatör ( Gerilim düzenleyici ) Sabit bir gerilim elde etmek seri regülatör ile çok kolaydır. Örneğin, eğer 7805 seri regülatör şekil 2-5 deki gibi kullanılırsa 5V. düzenli ve sabit bir gerilim elde edilmiş olur. Şayet 7812 de aynı şekilde kullanılacak olursa bu defada 12 volt sabit gerilim elde edilmiş olur. in out G N D Giriş Çıkı ş D C 8 V D C 5 V 7805 Şekil seri regülatör PIC programını yazma devresi için gerekli olan voltaj 12,5 volttur. 12,5 Voltu elde edebilmek için 7812 seri regülatörün toprak ( GND ) kısmına diyot elde etmemiz yeterli olacaktır. Şekil 2-6 Giriş D C 15 V in G N D out Çıkı ş D C V 3 Çıkış gerilim 12,5 volt değerindedir ve diyotun her iki ucunda da 0,5 volt luk gerilim oluşmuş olur. Şekil ,5 Volt elde edilmesi Kutup Model numarası Çıkış akımı Uçların karşılıkları pozitif 78M serisi 500mA Giriş GND Çıkış 78 serisi 1A Giriş GND Çıkış negatif 79M serisi 500mA GND Giriş Çıkış 79 serisi 1A GND Giriş Çıkış Tablo 2-1 Seri regülatör 16

28 PIC yazıcısı ve eğitim seti yapmak (5) Kristal osilatör Kristal osilatör mikrodenetleyicilere pals üreterek çalışmalarını sağlayan elemandır. 4MHz. lik kristal osilatörler kullanmaktayız. PIC e göre en doğru kristali seçmemiz gerekmektedir. Eğer uygun kristal seçersek en doğru pals elde etmiş oluruz. PIC ler MHZ gibi hızlara sahiptir ve kristali yüksek hızda da seçsek PIC in en yüksek hızına göre çalışma sağlanır. Şekil 2-7 Kristal osilatör (6) Transistor düzeni ( ULN2803 ) Transistor düzeninde 8 adet darlington transistor kullanılmıştır. Diyotlarda bu transistor düzeni içinde bulunmaktadır ve röle veya benzerleri elemanları kontrol edilebilme özelliği vardır. ULN Volt ve 500 ma yükü kontrol edebilir. Mikrodenetleyici kontrolleri için transistor düzeneği çok kullanışlıdır. + ULN2803 GND LED röle U L N2803 ULN2803 Şekil 2-8 Transistor düzeneği ( ULN2803 ) 17

29 PIC yazıcısı ve eğitim seti yapmak 2 PIC eğitim setinin yapılışı (1) Elektronik devre üzerinde deliklerin delinmesi Delik delme işlemi her iki devre içinde yapılır. 0.8mm lik matkap ucu kullanılmalıdır. Şekil 2-9 ve Şekil de gösterildiği gibi de 1mm, 1.5mm, 3mm, and 6mm çaplarındada deliklerde mevcuttur. 1mm JICA mm 1mm 1mm 1mm 2.5mm Şekil 2-9 PIC Yazıcı 3mm 3mm 1mm 1mm 3mm 1mm 3mm Şekil 2-10 PIC deney seti 18

30 PIC yazıcısı ve eğitim seti yapmak (2) Alt taban ( Şeffaf ) deliklerinin açılması Alt taban yapılan elektronik devrenin biraz havada kalmasını sağlayan ve yerle temasını gerçekleştiren bölümdür. Şeffaf malzeme üzerindeki koruma yapışkanı delikler açıldıktan sonra çıkartılmalıdır. Bütün delikler 3 mm olmalıdır. Bu deliklerin yerlerini elektronik devrenize göre işaretleyiniz. 120mm 150mm 170mm 200mm Şekil 2-11 Şeffaf alt taban delikleri (3) Lehimleme yöntemi 1) Lehimleme Elektronik devrelerin montajında lehimleme çok önemli bir aşamadır. (a) Havyanın ucunu lehimlenecek olan yere tut. ( yaklaşık 1 saniye ) (b) Sonra lehimi tut ve lehim erir. (c) Daha sonra lehim ve havya ucunu aynı zamanda lehim yapılan yerden uzaklaştır. havya lehim havya lehim havya (a) (b) (c) Şekil 2-12 Lehimleme yöntemi 19

31 PIC yazıcısı ve eğitim seti yapmak 2) Lehimlemeyi kontrol et. İYİ KÖTÜ Şekil 2-13 Lehimleme 3) Kalan fazla kablo başlarının kesilmesi Kalan fazlalı ğı ' nasıl keseriz Ucu eğip bükmeyiniz kes kes Şekil 2-14 Kablo fazlalıkları nasıl kesilir. (4) Elektronik parça elemanlarının yerleştirilmesi Direnç ve kondansatörler şekilde gösterildiği gibi montajı yapılır. İYİ KÖTÜ U cu eğip bükmeyiniz 104K 1mm 104K Şekil 2-15 Elektronik parça elemanlarının yerleştirilmesi 20

32 PIC yazıcısı ve eğitim seti yapmak (5) PIC yazıcısının devre diagramı 12.5V 5.0V DC15V V PIC 14P 2.2k 1k uF 0.1uF 1S uF 0.1uF 0.1uF 2.2k LED 2SA1015 2SC1815 MCLR PIC 4P D3 2.2k 2200pF 6 1 D4 2.2k 1S1588 2SC GND BUSY D0 D2 74LS244 GND PIC 5P DATA(RB7) PIC 13P D5 Dsub (9P)male D1 74LS244 CLOCK(RB6) PIC 12P 74HC00 1k LED Şekil 2-16 PIC yazıcısının devresi (7) PIC yazıcı parçalarının düzenini gösteren şema Şekil 2-17 Yerleşim şeması 21

33 PIC yazıcısı ve eğitim seti yapmak (7) PIC eğitim seti devre diyagramı BZ 22 1k 22k +5V 10k X 4 GND +5V MCLR PIC16F84 RA0 RB0 RA1 RB1 RA2 RB2 RA3 RB3 RB4 10k RB5 RB6 1S1588 MCLR RB7 22pF OSC1 OSC2 22pF 4MHz ULN X 8 LED X 8 a b C d e f g P e f + d g a C P b 7segment LED anode common CLOCK DATA ULN2803 GND (8) PIC eğitim seti yerleşim şeması Şekil 2-18 PIC eğitim seti devresi Şekil 2-19 Yerleşim şeması 22

34 PIC yazıcısı ve eğitim seti yapmak (9) Parça listesi Parça Listesi Sıra No Parçanın ismi Özelliği Adedi 1 Baskı devre Yazıcı ve Eğitim seti için 1 2 IC soket 14pin 1 3 IC soket 18pin 3 4 IC soket 20pin 1 5 IC 74HC IC 74LS PIC microdenetleyici PIC16F84A 1 8 Transistör düzenleyici ULN Regülatör IC Regülatör IC LED kırmızı 9 12 LED yeşil 2 13 Transistör 2SA Transistör 2SC Diyot 1N Direnç 300Ω 1/4W 9 17 Direnç 2.2kΩ 1/4W 4 18 Direnç 1kΩ 1/4W 3 19 Direnç 10kΩ 1/4W 5 20 Direnç 22Ω 1/4W 1 21 Direnç 22kΩ 1/4W 1 22 Kondansatör 0.1uF 4 23 Kondansatör 2200pF 1 24 Kondansatör 22pF 2 25 Elektrolitik kondansatör 220uF 16V 1 26 Anahtar 3P üç uçlu 2 27 Konnektör ( PC için ) D sub 25P erkek 1 28 Kablo konnektörü Dsub 25P 1 29 Konnektör D sub 9P dişi 1 30 Kablo konnektörü Dsub 9P 1 31 Konnektör ( set için ) D sub 9P erkek 1 32 Konnektör 5P erkek devre için 2 33 Konnektör 5P dişi 2 34 Konnektör 10P erkek devre için 2 35 Güç giriş soketi 2P 1 36 AC adaptör 15V 300mA 1 37 Kablo 8 li 1.2m 1 38 Kristal 4MHz 1 39 Basmalı buton 5 40 Piezoelektrik hoparlör segment LED 1 42 Şeffaf alt taban 100* Vida M3* Vida somunu M Yükselti elemanı 20mm 8 23

35 PIC yazıcısı ve eğitim seti yapmak (10) Bağlama aparatının yapımı 5 1 TUNIK 5 TUNIK 1 20cm Şekil 2-20 PIC devrelerinin birbirine bağlanma aparatı Şekil 2-21 Açık pinleri kapatma aleti Şekil 2-22 Aletin kullanılması Şekil 2-23 Uçları plastiğe geçir 24

36 PIC yazıcısı ve eğitim seti yapmak (11) Bilgisayar bağlantı kablosunun yapımı cm D s u b 2 5 P ( Erkek) ( D0 ) ( D1 ) ( D2 ) ( D3 ) ( D4 ) ( D5 ) ( ACK ) ( GND ) D sub 9 P (Diş i ) 2-24 Kişisel bilgisayar için kablo 25

37 PIC in yapısı Bölüm 3 PIC in yapısı 1 PIC16F84 (1) PIC16F84 RA2 RA3 RA1 RA0 RA4/T0CLKI MCLR GND RB0,INT RB1 PIC16F84 OSC1/CLOCKIN OSC2/CLOCKOUT +Vcc RB7 RB6 RB2 RB3 RB5 RB4 Şekil 3-1 PIC16F84 Her bir ucun açıklanması : OSC1/CLOCKIN OSC2/CLKOUT MCLR ( inv ) RA0 RA3 RA4/T0CKI RB0/INT RB1-RB7 GND Vcc : Osilatör girişi / External oscillator input : Osilatör girişi / OSC1 frekansının ¼ değerindeki çıkış clock ucu : Reset girişi : Giriş Çıkış uçları : Giriş Çıkış ucu / TMR0 için clock puls giriş ucu : Giriş Çıkış ucu / Dış kesmeler için giriş ucu : Giriş Çıkış ucu : Güç kaynağının eksi ( - ) ucu : Güç kaynağının artı ( + ) ucu Yazılan bir programı PIC e kayıt ederken ise RB6 ucuna clock pulse, RB7 ucuna data bilgilerini vermemiz gerekir. Ayrıca MCLR ucuna 12,5 Volt, GND ucuna ( - ) eksi, Vcc ucuna da +5 Voltu vermeyi unutmamalıyız. 26

38 PIC in yapısı PIC16F84 18 uçlu 1 Kbyte flaş program belleği, 68 bayt RAM bellek, 64 Byte EEPROM belleğe sahiptir. PIC16F84 e program elektrik sinyalleri ile kolayca tekrar tekrar yazılabilir veya silinebilir. Ancak ROM bellek olanlarda ise tekrar yazabilmek için ültraviyole ışınlara ihtiyaç vardır. (2) PIC16F84 ün yapısı Flash Program Belleği EEPROM(1Kbyte) 000 RESET 80 Bank 1 INDIRECT ADDR RAM 00 INDIRECT ADDR 81 OPTION 01 TMR0 82 PCL 02 PCL INTERRUPT POINT STATUS FSR STATUS FSR PORTA 5bit PROGRAM AREA 85 TRISA 05 PORTA TRISB PORTB PORTB 8bit 3FF 88 EECON1 08 EEDATA EEPROM program counter 89 8A 8B EECON2 PCLATH INTCON 09 0A 0B 0C EEADR PCLATH INTCON workmemory DATAMEMORY 64byte 4F 36byte stack 8 lebel watch dog timer reset clock Fetch/Decode ALU Working resistor W Şekil 3-2 PIC16F84 ün blok diyagramı PIC RISC ( Reduced Intruction Set Computer ) denilen azaltılmış komut sistemini kullanmaktadır. Bu sistem sayesinde komutlar daha sade ve daha azdır. Bir PIC i programlamak için 35 komut kullanılır. PIC de yöntem bir komutu genellikle bir clock ile gerçekleştirmesidir. Program belleği ( memory ) ( ROM ) ve data belleği ( memory ) birbirinden bağımsızdır. ( Harward mimarisine göre ) Bu hafıza yapısı ile her iki hafızada 27

39 PIC in yapısı aynı anda çalıştırılabilmekte ve böylece işletim çok daha hızlı olmaktadır. Data belleğinin genişliği yapıya göre değişiklik gösterir. ( Program belleği 14 bit, data belleği 8 bittir.) Çünkü 1 kelimenin makineye tanıtımı 14 bit ile gerçekleştirilir. Örneğin MOVLW B ' ' komutunu makine olarak tanır. Bunun 6 biti olan MOVLW komutunu ifade eder, ise data bölümünü tanımlar. (3) Clock düzeni / Komut süresi Clock girişi (OSC1 den) içten dörde bölünmüştür. Bunlar Q1, Q2, Q3, Q4 olan bu bölümler kare dalga şeklindedir. Program sayacı ( PC ) her Q1 de bir artırılmakta ve komutlar program belleğinde işleme sokularak Q4 de sona ermektedir. Komutlar Q1 den Q4 e kadar çözülerek işleminin gerçekleşmesi sağlanır. Clock pulse ve bunun düzeni Şekil 3-3 de görülmektedir. ( Microchip technology inc. Manual) Şekil 3-3 Clock / Komut örneği (4) Komut akışı / Bilgi iletim kanalı Komut süreci Instruction Cycle dört Q den oluşmaktadır. Bunlar (Q1,Q2,Q3 ve Q4). Komutun aktarılması ve işleyişi şu şekilde olmaktadır. Devir bir komut sürecini üstlenirken iletim 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 bir program sayacının değişmesine neden olmuşsa ( Örneğin GOTO ) komutu kullanılmışsa o zaman komutun tamamlanması için iki süreç gereklidir. (Şekil 3-4) 28

40 PIC in yapısı 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,Q4 süreçleri boyunca çözülür ve işlem gerçekleştirilir. Veri belleği Q2 boyunca okunur ( Bilgi okuması ) ve Q4 boyunca yazılır ( Yazılacak hedef ) ( Bilgi iletim kanalı (Pipeline) : PIC; komutları uygularken bir sonraki komutu da alır. Onu çözüp uygulamaya geçerken aynı anda bir sonraki komutu alır. Bu işlem sürekli devam eder. clock execution clock execution execution execution No operation execution jum p instruction fetch fetch fetch fetch fetch Şekil 3-4 Bilgi iletim kanalının yapısı (5) W yazmacı ( register ) W ( working ) yazmacı bilgilerin geçici olarak depolandığı ve bilgilerin aktarılmasında kullanılan bir kısımdır. Direk olarak ulaşamayız. PIC te yapılan tüm işlemler ve atamalar bunun üzerinden yapılmak zorundadır. memory Örneğin M1 deki data bilgilerini M2 ye W register M1 M2 aktarmak istersek once M1 deki bilgileri W yazmacına ( register ) aktarırız daha sonrada geçici alanda bulunan ( w registeri ) bu bilgileri M2 kısmına aktarırız. M1 deki bilgiler M2 ye direk olarak aktarılamaz mutlaka W yazmacını kullanmak zorundayız. Şekil 3-5 W yazmacı ( register ) 29

41 PIC in yapısı (6) Program belleği ( memory ) Assembly de kullanılan komutlarla yazılmış programın yüklendiği alandır. Program belleği ( memory ) (ROM). Bu alan PIC16F84 de EEPROM şeklindedir. Program yazıcısı kullanarak ROM a programımızı rahatlıkla yazabiliriz. Çünkü elektrik dalgasıyla yazılıp silinebilme özelliği vardır. Mikrodenetleyici uygulayacağı komutları ve işlem sırasını bunun ilgili adreslerine bakarak uygular. İlgili adresler ise PC ( Program Counter ) program sayıcıda saklanır. Bir PIC te ROM belleğe program yaklaşık 1000 defa yazılabilir. ( Program belleğinin genişliği 14 bittir. PIC16F84 program belleğinin 1024 ( 1K ) alanı 000 dan 3FF kadar olan adrestedir ve 3FF de 1024 demektir. ( Bölüm 1 deki Tablo 1-2 de daha detaylı bilgi verilmiştir. ) program memory 000 RESET 004 INTERRUPT POINT 005 PROGRAM AREA 3FF Şekil 3-6 ROM belleğin haritası ( program memory ) 30

42 PIC in yapısı 2 Veri belleği ( DATA memory ) (1) Veri belleği ( Ram Bellek ) Veri belleği iki kısımdan meydana gelmektedir. Bunların her birine Bank adı verilir. Bank 0 ve Bank 1 dir. Bank 1 dediğimiz ilk bölüm özel fonksiyon ( Special Function Register ) ( SFR ) yazmaç alanıdır. Bank 0 ise ikinci bölümdür ve buna da genel amaçlı yazmaç ( General Purpose Register ) ( GPR ) denir. GPR alanı genel amaçlı RAM ın 16 baytından daha fazlasına olanak sağlamak amacıyla bölünmüştür. SFR ise özel fonksiyonları kontrol eden kayıtlara aittir. Bunların seçimleri için kontrol bitleri gerekmektedir. İşte bu kontrol bitleri de STATUS yazmacında bulunmaktadır. Şekil 3-7 de veri belleğinin harita organizasyonu göstermektedir. Veri belleği genel amaçlı kayıt ve özel fonksiyon kaydını içeren iki bölümü vardır. Bank0 ı seçmek için RP0 bitini ( ki bu STATUS un 5. biti oluyor ) temizlemek gerekir. Aynı bitin kurulması ( set ) ile de BANK1 seçilmiş olur. Her iki bankın ilk onikisinin yerleşimi özel fonksiyon kaydı için ayrılmıştır. Kalanı ise statik RAM olarak genel amaçlı kayıtları yürütmektedir. Bank 0 Bank 1 00 INDIRECT ADDR 80 INDIRECT ADDR 01 TMR0 81 OPTION 02 PCL 82 PCL 03 STATUS 83 STATUS 04 FSR 84 FSR 05 PORTA 85 TRISA 06 PORTB 86 TRISB A 0B 0C EEDATA EEADR PCLATH INTCON GPR Work memory 4F 68byte A 8B EECON1 EECON2 PCLATH INTCON bit 5 ' 1 ' bit7 bit6 bit5 RP1 RP0 STATUS regi ster bit 5 ' 0 ' Şekil 3-7 PIC16F84 ün Kayıt dosya haritası 31

43 PIC in yapısı 1) Genel amaçlı kayıt dosyası Bütün cihazlar belli bir miktar genel amaçlı kayıt alanlarına sahiptirler. Bu PIC 16F84 de 68 byte dır. Her bir GPR 8 bit genişliğindedir ve dolaylı yada doğrudan SFR üzerinden erişilmektedir. 2) Özel Fonksiyon Kayıtları Özel fonksiyon kayıtları aygıtın işlemini kontrol etmek için CPU ve özel fonksiyonlar tarafından kullanılmaktadır. Bu kayıtlar statik olan RAM dadır. (2) Yığın hafıza ( Stack Memory ) PIC16F84 8 derinliğinde ve 13 bit genişliğinde yığına ( stack ) sahiptir. ( Şekil 3-2 ). Bu yığın alanı program veya bilgi ( data ) yeri değildir ve direk olarak okunamaz veya yazılamazlar. CALL komutu veya kesme ile 13 bitlik ( PC ) program sayıcı yığının üzerine konur bu işleme pushed denir.. Yığındaki bu adres alt programlar çalışıp bittikten sonra en sonunda bulunan RETLW, RETFIE komutları ile yığından atılır bu işlemede popped denir. Burada dikkat edilecek iç içe en fazla 8 altprogram veya kesme kullanabiliriz. Fazla kullandığımız takdirde yığın taşması dediğimiz ( stack overflow ) hatası belirir. (3) Program sayıcı ( Program counter ) ( Adres 02h, PCLATH Adres 0Ah) Program Sayıcı ( Program Counter ) (PC) 13-bit genişliğindedir. Yürütülecek komutun program belleğindeki adresini tutar. Bu nedenle kendisi bir gösterge olarak görev yapar. Program sayıcının alt 8 bitine PCL düşük byte denir PCL okunabilen - yazılabilen bir yazmaçtır. Üst 5 bitine ise PCH yüksek byte denir ki bu ( PC <12:8> ) arasındadır ve direk olarak okunup yazılamaz. RAM bellekte H 0A adresinde bulunan özel PCLATH ( PC latch high ) yazmacından okunup yazılabilirler. PCLATH ın içeriği program sayıcının üst bitlerine transfer olur ve PC yeni bir değerle yüklenmiş olur. Bunu şekil 3-8 de görebilirsiniz. CALL, GOTO gibi komutlar PCL ye yazılırlar çünkü 256 byte dan küçüktürler. RESET durumunda ise üst bitler temizlenir. Program Sayıcı 12 PCH 8 7 PCL 0 Adres 02 de 5 8 P C L A T H ALU sonuç Şekil 3-8 Program sayıcı 32

44 PIC in yapısı (4) STATUS Yazmacı ( Register ) ( Adresi 03h,83h ) STATUS yazmacı ( register ) aritmetik mantık ünitesine ( Arithmetic Logic Unit ) ALU sahiptir. RESET durumu içeren veriler ve bank seçimi sağlayan bilgilerde mevcuttur. b7 b6 b5 b4 b3 b2 b1 b0 R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x IRP RP1 RP0 TO PD Z DC C R=Okunabilir bit W=Yazılabilir bit -n=reset değeri İlk değer ( enerji verildiği andaki değeri ) x x x bit7: IRP: Bank seçme bit i ( Register Bank Select bit ) IRP bit i PIC 16F84A larda kullanılmaz..irp sıfır olarak kalmalıdır. bit 6-5: RP1:RP0: Bank seçme bit i ( Register Bank Select bit ) 00 = Bank 0(00h-7Fh) 01 = Bank 1(80h-FFh) Her bir bank 128 byte dır. PIC16F84A da sadece RP0 kullanılır. RP1 sıfır olmalıdır. bit 4: TO: Zaman aşım bit i ( Time-out bit ) 1= PIC e enerji verildiğinde ve CLRWDT ve SLEEP komutu çalışınca 0 = WDT zamanlayıcısında zaman dolduğunda bit 3: PD: Enerji kesilme bit i ( Power-down bit ) 1 = PIC e enerji verildiğinde ve CLRWDT komutu çalışınca 0 = SLEEP modu çalışınca bit 2: Z: Zero bit ( Sıfır bit i ) 1 = Bir aritmetik işlem veya mantıksal işlem sonucu 0 ( sıfır ) olduğunda 0 = Bir aritmetik işlem veya mantıksal işlem sonucu 0 ( sıfır ) olmadığında. bit 1: DC: Taşma ve Ödünç bit i ( Digit carry/borrow bit )( ADDWF ve ADDLW komutları için ) 1 = Alt dört bitin 4. bitinde taşma meydana geldiğinde 0 = Alt dört bitin 4. bitinde taşma meydana gelmediğinde bit 0: C: Taşma ve Ödünç bit i ( Carry/borrow bit )( ADDWF ve ADDLW komutları için ) 1 = En soldaki 7.bitte taşma olduğunda 0 = En soldaki 7.bitte taşma olmadığında Not: RLF ve RRF komutları çalıştığında en sol bit veya en sağ bitin değeri carry bitine yüklenir. 33

45 PIC in yapısı 3 I / O port ( input / output ) RA2 RA3 RA4 RB0 RB1 RB2 RB3 PIC16F84 RA1 RA0 RB7 RB6 RB5 RB4 Şekil 3-9 I/O portları I/O portları sinyalin giriş ve çıkışlarıdır. PIC16F84 e ait I/O portlar şekil 3-9 da görülmektedir. Buradan da anlaşılacağı gibi PIC16F84 ün en fazla uçları I/O için ayrılmış olup program kontrolü için kullanılmaktadır. A portu 5 Adettir ( RA0,RA1,RA2,RA3,RA4 ) B portu 8 Adettir.( RB0,RB1,RB2,RB3,RB4,RB5,RB6,RB7 ) Toplam 13 Adet giriş veya çıkış olarak kullanılmak üzere uçları vardır. (1) Giriş İşlemi Eğer PIC giriş ( input ) modunda olursa, FET çıkışları kapatır Giriş sinyali tampona doğru akar. ( Şekil 3-10 ) VDD input mode > OFF PIC R I/OPIN input mode > OFF VSS VSS DATA read Şekil 3-10 Giriş işlemi 34

46 PIC in yapısı (2) Çıkış işlemi PIC in çıkışı FET lidir. Eğer akım gerilim kaynağından çıkış portuna doğru ise buna SİNK akım( Şekil 3-11 ), I/O pininden GND ye doğru ise buna da KAYNAK ( Source ) akımı denir. ( Şekil 3-12 ) Kaynak akımı en fazla 20 ma. iken sink akımı ise en fazla 25mA.dir. VDD R '0'orinputmode>OFF P PIC LED etc MAX=25mA I/OPIN ' 0 ' > ON N VSS Şekil 3-11 Sink akımı VDD '1' > ON P PIC MAX=20mA I/OPIN ' 1 ' or input mode > OFF N R LED etc Şekil 3-12 Kaynak ( source ) akımı 35

47 PIC in yapısı 4 Reset Devresi (1) Resetleme İşlemi ( Power on Reset ) ( POR ) MCLR ( Memory Clear ) ucuna düşük gerilim ( 0V ) uyguladığımızda, PIC16F84 reset edilmiş olur ve program başlangıçtaki adresine geri döner. MCLR ucu tekrar yüksek gerilim 5V olduğunda PIC16F84 programın çalışmasına ilk adresten itibaren devam eder. Kısaca MCLR ucu 0V. olduğunda program çalışmaz sadece ilk adrese gider. Programın çalışabilmesi için MCLR ucunun tekrar 5V. olması gerekir. 1) VDD ye direk olarak resetleme VDD yüksek gerilimi bulduğunda ( 1.2V 1.7V ) reset çalışmaya başlar. PIC in resetinden yararlanabilmek için MCLR ucunu direk olarak VDD ye bağlayınız. Buna dirençte eklenebilir. VDD 10K MCLR PIC Şekil 3-13 VDD ye direk olarak resetleme 2) PIC in dışarıdan resetlenmesi Eğer VDD ile resetleme yavaş oluyor ve bunun hızlı gerçekleşmesini istiyorsak dış reset yapmamız gerekir. VDD gerilimini hızlı bir şekilde 0 yapmak için LED ve kondansatör kullanmamız gerekir. LED kondansatörü hızlı bir şekilde boşaltır ( deşarj ) ve işlem hızlanmış olur. (C : 1 10 uf) VDD D 10K MCLR C PIC Şekil 3-14 PIC in dışarıdan resetlenmesi 36

48 PIC in yapısı (3) Butonla Reset Şekil3-15 de görüldüğü gibi MCLR ucunu düşük gerilime ulaştırmak için reset butonu vardır. Bu buton basılıp çekilir ve program ilk adresten itibaren çalışmaya başlar. VDD VDD D 10K 10K MCLR MCLR button Switch C PIC button Switch PIC Şekil 3-15 Butonla Reset 37

49 PIC in yapısı 5 Osilatör özellikleri (1) osilatör modelleri PIC16F84 dört değişik osilatörleme ile çalışabilir. Bunlar LP : Düşük güç kristal ile Low Power crystal ( yaklaşık 40KHz) XT : Kristal / Rezanatör ile Crystal / Resonator (0 10MHz) HS : Yüksek hız kristali / Resonatör High Speed Crystal / Resonator (4 10MHz) RC : Direnç / Kondansatör ile Resistor / Capacitor (0 4MHz) (2) Kristal / seramik resonator işlemi Seramik rezanatör Kristal osilatör Düşük güç kristali Şekil 3-16 Kristal Çeşitleri XT, LP veya HS modeller kristal veya seramik rezanatör ile OSC1/CLKIN ve OSC2/CLKOUT uçlarına bağlanırlar. Böylece osilatör sağlanmış olur. ( Şekil 3-17 ) rezanatör OSC1 OSC2 PIC C1 XTAL OSC1 OSC2 PIC C2 Şekil

50 PIC in yapısı Mod Frekans OSC1 / C1 OSC2 / C2 LP XT HS 32kHz pF pF 200kHz 15-33pF 15-33pF 100kHz pF pF 2.0MHz 15-33pF 15-33pF 4.0MHz 15-33pF 15-33pF 4.0MHz 15-33pF 15-33pF 10.0MHz 15-33pF 15-33pF Tablo 3-1 Kristal osilatör için Kondansatör seçimi (3) RC Osilatör Zamanın çok hassas olmadığı durumlarda RC osilatör kullanılarak maliyet düşürülür. RC osilatör frekansı gerilim kaynağının özelliğine, direncin değerine, kondansatörün değerine ve işlem ortamının sıcaklığına bağlıdır. Buna ek olarak osilatör frekansı normal işlem parametrelerine göre sapmalar gösterir. Bu sapma % 20 civarındadır. Şekil 3-18 de bu osilatör tipinin PIC16F84 e nasıl bağlandığı görülmektedir. Direnç değeri 4k-ohm un altında olan osilatör işlemlerinde osilasyon sabit olmayabilir veya tamamen durabilir. Çok yüksek değerde dirençler ise ( yaklaşık 1M-ohm ), gürültüye, neme ve sızmaya çok hassaslaşır. Bu nedenle direnç değerini 5 k-ohm ve 100k-ohm arasında kullanılmalıdır. VDD Her ne kadar osilatör dış bir kondansatörle çalışmıyor olsa bile biz gürültü ve sabitliliği Rext OSC1 sağlamak için 20pF değerinin üzerindeki değerde bir kondansatörün kullanılmasını tavsiye ederiz. Cext OSC2 PIC Tavsiye edilen değerler 5k < Direnç < 100k Kondansatör > 20pF Şekil 3-18 RC Osilatör 39

51 PIC programlamanın temelleri Bölüm 4 PIC Programlamının temeli 1 MPLAB ( MPASM ) ı nasıl Kullanırız? (1) Basit bir program INCLUDE P16F84.INC ;Adresleri belirten dosyayı yükle (1) LIST P=16F84 ;16F84 ün tanıtımını yap (2) BSF STATUS,5 ;Bank 1 e geç (3) CLRF TIRSB ;PORTB nin hepsini çıkış yap (4) BCF STATUS,5 ;Bank 0 a geç (5) CLRF PORTB ;PORTB nin hepsini 0 yap (6) BSF PORTB,0 ;PortB nin 0.bitini 1 yap ( LED yak ) (7) DEVAM GOTO DEVAM ;Sonsuz döngü ile programı sonlandır (8) END (9) Bu program eğitim setindeki 8 ledden bir tanesini ( ilk led ) yakan diğerlerinin sönük kalmasını ( sıfır olduğu için ) sağlayan bir programdır. Bu programı daha ayrıntılı inceleyecek olursak, (1) TRISB, PORTB, STATUS gibi değişkenlerin adreslerini içerisinde bulundurur. Bunu PIC e yükleme işlemini gerçekleştirir. ( Ayrıntılı bilgi sayfa 73 dedir. ) (2) Hangi pic çeşidinin kullanılacağını tanımlar Programın (3) - (6) satırları arasında ise PIC in portlarının çıkış veya giriş olacağı tanımlanır. Bu işlemin nasıl olduğu sayfa 69 da ayrıntılı olarak açıklanmıştır. (6) Belirlenen bir LED in yanması sağlanır. (7) Sonsuz döngüye girerek programda başka bir işlem yapmamasını sağlanır. (8) END komutu ile programın bittiğini belirtiriz. (2) Sayıların ifade edilmesi Form Format Örnek Desimal D < digit > D 100. < digit >. 100 Heksadesimal H < hex_digit> H 9F 0x<hex_digit> 0 x 9F Oktal O <oktal_digit> O 67 Binary B <binary_digit> B ASCII Kod A <karakter> A C <karakter> C Tablo 4-1 MPASM için sayıların ifade edilmeleri 40

52 PIC programlamanın temelleri (3) Programın temel ifade şekli Etiket Komut Belleteç Tanımlama PROGRAMDA DİKKAT EDİLECEK NOKTALAR 1: Etiket en başta olmalıdır. İki alt çizgi ile başlamamalıdır. Bir alt çizgi ve sonrasında rakam _2 olmamalıdır. Assembly komutları ve kullandığı kelimeler etiket olamaz. Bir etiket en fazla 32 karakter olmalıdır. Etikette büyük küçük harf ayrımı mevcut olup büyük ve Türkçe olmayan harflerin kullanılması tavsiye edilir. 2: Etiket yazılması gerekmediği zaman komut yazılacağında bir veya daha fazla boşluk bırakılması gerekmektedir. 3: Açıklama yazılacaksa (;) noktalı virgül den sonra yazılmalıdır. 4: Bir satırda en fazla 200 karakter olmalıdır. 5: Her paragraf bir veya daha fazla boşlukla ayrılmalıdır. Etiket Komut Belleteç Tanımlama DEVAM INCLUDE LIST BSF CLRF BCF CLRF BSF GOTO END P16F84.INC P=16F84 STATUS,5 TIRSB STATUS,5 PORTB PORTB,0 DEVAM ;Adresleri belirten dosyayı yükle ;16F84 ün tanıtımını yap ;Bank 1 e geç ;PORTB nin hepsini çıkış yap ;Bank 0 a geç ;PORTB nin hepsini 0 yap ;PortB nin 0.bitini 1 yap ( LED yak ) ;Sonsuz döngü ile programı sonlandır 41

53 PIC programlamanın temelleri (4) Program yazmanın yöntemi Başla Editör ile program yazma MPASM ile dosyayı HEX dosya haline derleme Evet Hata var mı? Hayır Yazılan program PIC e transfer edilir ve doğruluğu kontrol edilir. Evet Hata Var mı? Hayır SON Şekil 4-1 Program yazmanın yöntemi 42

54 PIC programlamanın temelleri (5) MPLAB nasıl kullanılır? 1) MPLAB PROGRAMININ BAŞLATILMASI Windows start program Microchip MPLAB IDE MPLAB IDE MPLAB programını başlattığımızda aşağıdaki ekran görünür. Şekil 4-2 MPLAB başlama penceresi 2) MPLAB IDE YAZI EDİTÖRÜNE PROGRAM YAZILMASI Şekil 4-3 Program girişi Programın sonuna END adlı komutu mutlaka yazmamız gerekmektedir. 43

55 PIC programlamanın temelleri 3) DOSYANIN SAKLANMASI Şekil 4-4 Dosyanın saklanması Yeni yapılan dosyanın hangi klasöre ve hangi isimde kayıt edilip saklanacağına kendin karar vererek Save as type bölümünde Assembly Source Files kısmını seçtiğimizde dosya adından sonra asm yazmamıza gerek yoktur. Program otomatik olarak atama yapar. Eski versiyonlarda bu olmadığından dolayı dosya adından sonra nokta koyup mutlaka asm uzantısını da yazmamız gerekir. Örnekte dosyamız "PROG1" adı altında saklanmıştır ve bu dosya bizim kaynak dosyamız olmaktadır. Şekil 4-5 Dosyanın adı 44

56 PIC programlamanın temelleri 4) YAZILAN DOSYANIN DERLENMESİ ( Hex dosya haline getirilmesi ) Program yazılıp saklandıktan sonra bunun derlenmesi gerekmektedir. Derleme işlemini iki yoldan yapmamız mümkündür. Kısa tuş kullanımını tercih edersek ALT + F10 tuşuna basmamız yeterlidir. Menülerden yapmak istediğimizde ise; Project / Quickbuild kısmını takip etmeliyiz. Program yazılıp saklandıktan sonra o program içerisinde ufak değişiklikler yapıldığında tekrar saklamak için save etmemize gerek yoktur. Derleme; işlemine başlamadan son değişiklikleri otomatik olarak kayıt etmektedir. Şekil 4-6 Assembly nin başarılı olma penceresi Şekil 4-7 Assembly nin başarısız olma penceresi Başarılı olması demek program doğru çalışır anlamına gelmemelidir. Derleme esnasında sadece komut yazılım hatası olup olmadığı kontrol edilir, mantık hatası kontrolü yapılmaz. 45

57 PIC programlamanın temelleri Program yazılırken iki tür dosya vardır. Giriş dosyalarından olan kaynak dosyayı kendimiz oluştururuz. Yükleme dosyasını ise hazır olandan kullanırız. ( P16F84.INC gibi.) Bu tür dosyalar MPLAB programı yüklenirken otomatik olarak gelmektedir. ( Geniş bilgi sayfa 73 dedir. ) Çıktı dosyaları ise derleme sonucunda oluşan dosyalardır ve kaynak dosyanın bulunduğu klasörün içerisindedirler. 1. GİRİŞ DOSYALARI a. Kaynak dosya ( dosya adı.asm ) b. Yükleme ( Include ) dosya ( dosya adı.inc ) 2. ÇIKTI DOSYALARI ( Derleme esnasında assembler tarafından üretilir ) a. Liste dosyası ( dosya adı.lst ) b. Hata dosyası ( dosya adı.err ) c. Sembol ve debug dosyası ( dosya adı.cod ) d. Hex formatında dosya ( dosya adı.hex, dosya adı.hxl, dosya adı.hxh ) LİSTE DOSYASI Dosyanın hangi yazılım tarafından üretildiği, versiyonu, tarih ve saati, sayfa numarasından sonra; birinci kolonda komutların hafızadaki adreslerini, ( LOC ) ikinci kolonda set, equ, variable gibi emirlerin ve komutların oluşturduğu 32 bitte hex karşılıklarını, ( OBJECT CODE ) üçüncü kolonda kaynak program ve bunun satır numaraları ve varsa açıklamalar (LINE SOURCE TEXT) Programda kullanılan etiketler (SYMBOL TABLE) ve adresleri (VALUE) Hafıza kullanım haritası (MEMORY USAGE MAP) X Kullanılan kısım - Kullanılmayan kısmı gösterir PROG1.ASM örnek programında kullanılan alan 6 kullanılmayan alan 1018 dir. Hata (Error) sayısı ve Uyarı (Warning) sayısı da verilmektedir. Bu uyarı ve hataların nerelerde olduğu ise açıkça komutların altlarına yazılmıştır. 46

58 PIC programlamanın temelleri ÖRNEK PROG1.LST DOSYASI : Şekil 4-8 PROG1.LST Dosyası HATA ( ERROR ) DOSYASI MPASM assembler derleme sonunda hata çıktısı olarak OUTPUT penceresinde gösterdiği kısmı ERR uzantılı bir dosyada oluşturur. Bu dosya içerisinde; programda hata varsa bunun hangi satırda olduğu ve açıklamasını buluruz. Hata yok ise bu dosyanın içeriği boştur. Örneğin hata var ise aşağıdaki gibi bir dosya oluşmuştur. Burada hatanın bulunduğu satır numarası ve ne gibi hata olduğu açıkça görünmektedir. Hata satır no Hata Şekil 4-9 PROG1.ERR Dosyası LİSTE dosyasında hata olan satırın hemen üstünde ne gibi hata olduğu açıkça yazdığından dolayı hatayı bulmak LİSTE dosyasında daha kolaydır. 47

59 PIC programlamanın temelleri HEX FORMATINDA DOSYA MPASM assembler derleme sonunda başarılı oldu ise kaynak dosya adında fakat uzantısı HEX olan bir dosya meydana getirir. Bu dosya bizim PIC e kayıt edeceğimiz dosyadır. Değişik formatlarda derleme yapılabilmektedir. Bunlar; Intel Hex Format INHX8M.hex 8 bit Intel Split Hex Format INHX8S.hxl.hxh tek çift Intel Hex 32 Format INHX32.hex 16 bit Intel HEX Format ( INHX8M ) Şekil 4-10 PROG1.HEX Dosyası Intel HEX Format (INHX8M) aşağıdaki gibidir.. :BBAAAATTHHHH..HHCC BB : İki heksedesimal sayı digiti ile bir satırdaki data sayısını gösterir. AAAA: Dört heksedesimal sayı digiti ile ilk datanın kayıt edildiği adresi gösterir. TT : Kayıt şeklidir 00 = Data kayıt 01 = Data kayıt sonu HH : İki heksedesimal sayı digiti ile 1 byte datayı gösterir. CC : Toplam kodu kontrol eder ( Bütün baytların toplamının ikili complementi ) Örnek ( PROG1.ASM Programı ) 0C C >> ( data numaraları 12 = 0Ch ) 0000 >> İlk adres 0000h. dır. 00 >> Bu satır data kayıt satırıdır >> 83 16(BSF STATUS,5), 86 01(CLRF PORTB) ( Bu hexdesimal sayı karşılıklarını PROG1.LST dosyasında Şekil 4 8 de görebilirsiniz. ) 71 >> 0Ch+83h+16h+86h+01h+83h+12h+86h+01h+06h+14h+05h+28h = (2)8Fh (2)8Fh nin ikili complementi >> (1)71h 48

60 PIC programlamanın temelleri 5) EDİTÖR AYARLARI Taralı bölgede ( Gutter ) Mouse sağ tuşa basılır Açılan yandaki menüden Properties seçilir Şekil 4-11 Editör ayarları penceresinin açılması Yazı ayarları için Text Seçiniz Satır numaralarını göster Şekil 4-12 Editör ayarları 49

61 PIC programlamanın temelleri Yazı büyüklüğünü ve tipini seçebiliriz. Kod sayfasının dilini seçebiliriz. Editörde kullanılan renk ayarlarını değiştirebiliriz. İlk renk değerlerine geri dönmemizi sağlar. Şekil 4-13 Yazı ( Text ) ayarları penceresinin kullanımı Sekme ( Tab ) tuşuna basıldığında gitmesi istenen miktar Program ilk açıldığındaki editör sayfa boyutu Şekil 4-11 de taralı bölge olarak tanımlanan alan genişlik miktarı Şekil 4-14 Ölçümlendirme ( Size ) ayarları penceresi 50

62 PIC programlamanın temelleri 6) SİMULATÖR KULLANIMI Yazılan programı elektronik ortamlarda denemek yerine yazılım olarak ta adım adım çalıştırarak kontrol edebiliriz. Böylece mantık hatamız var ise daha kolay bulma imkanımız olur. Bu işleme similasyon denmektedir. Burada bunun nasıl yapılacağını öğreneceğiz. Şekil 4-15 Similatör için Device seçimi penceresi Configure / Select Device seçiminden sonra açılan pencerede kullanacağımız pic çeşidi seçilir. Seçilen PIC e göre programın neleri desteklediğini görebiliriz. MPLAB SIM desteği varsa similatör yapabiliriz anlamına gelmektedir. Daha sonra bunu aktif hale geçirebilmek için Debugger / Select Tool menüsünü takip ederek 3. satırdaki MPLAB SIM i seçmemiz gerekir. Şekil 4-16 Similatörü aktif hale getirilmesi 51

63 PIC programlamanın temelleri Son olarak yazdığımız programı derlediğimizde artık similatör çalışmaya hazır hale gelecektir. Derleme işlemi yapılmadan similatör çalışmaz Şekil 4-17 Similatör doğrulama penceresi Similatörün aktifleştiğini yukarıda görüldüğü gibi üç şekilde anlayabiliriz. Similatör aktif olmadığında 3 numaralı kutucuk içindekiler görünmez. Similatörün çalışması esnasında bir takım değerleri görmemiz gerekmektedir. Bunlardan Özel fonksiyon registerleri görebilmek için view / Special Function Registers seçmemiz yeterli olacaktır. Şekil 4-18 Özel fonksiyon registerlerinin ( SFR ) görüntülenmesi 52

64 PIC programlamanın temelleri Eğer kendi oluşturduğumuz dosya içeriklerini veya özel fonksiyon registerlerinin bir kısmını görmek istediğimizde yanda şekilde görüldüğü gibi Watch penceresini açmamız gerekmektedir. Şekil 4-19 Watch penceresinin açılması Kendi yaptığımız ve değişik dosyaları buradan seçebiliriz. Özel registerlerini seçebiliriz. Fonksiyon buradan Şekil 4-20 Görüntülemek istediğimiz dosyaların seçilmesi Seçim ok tuşu ile açılan kısımdan yapılmaktadır. Daha sonra sol tarafta bulunan Add SFR veya Add Symbol ile bunu görüntü penceresine aktarmamız gerekmektedir. Burada gelen görüntü değeri hex formatında olup Value üzerinde iken Mouse sağ tuşa basıldığında açılan pencereden hangi tipte görüntüleneceğini klik yapmamız yeterli olacaktır. 53

65 PIC programlamanın temelleri Şekil 4-21 Görüntüleme özelliğinin belirlenmesi 7) BUTON EKLENMESİ VE KULLANILMASI : Şekil 4-23 Butonların kullanımı Program satırında similasyon esnasında durma yapmak istiyorsak ( Break ) hangi satırda duracaksa bu satır üzerinde Mouse sol tuşu iki defa klik yapılırsa sol tarafta işareti çıkacaktır. Run komutu çalıştırıldığında bu işarete kadar çalışır ve program beklemeye başlar. Eğer çift klik yapmada bu işaret çıkmıyorsa Editör ayarlarından ( Şekil 4 12 ) işaretlememiz gerekir. Şekil 4-22 Buton eklenmesi Add Row ikonuna bastığımızda buton eklemek için bir bölüm açılır. Daha sonra Pin kısmının altında beliren pinlerden bir tanesi seçilir. Action kısmında ise butonun 1 0 veya değiştirilebilir olacağına karar verilir. Genellikle burada toggle ile değiştirilebilen buton seçilir. Eğer bunu seçersek similasyon esnasında Fire butonuna her klik yapmamızda buton değeri; 1 ( high ) ise 0 ( Low ), 0 ( Low ) ise 1 ( high ) olarak değiştirilmiş olur. Yapılan bu düzeni istediğimizde kullanmak için saklayabiliriz. 54

66 8) SİMİLATÖR İKONLARININ AÇIKLANMASI : PIC programlamanın temelleri Şekil 4-24 Çalışma arası verme Run Halt Animate Step Into Step Over Step Out Reset F9 F5 Kısa yol tuşları F7 F8 F6 Şekil 4-25 Similatör ( Debug ) ikonları RUN : Similasyon çalışmaya başlar, halt tuşuna basılana kadar sürer ve durdurulduğunda değerleri yazar. HALT : Program çalışmasını kesme tuşudur. Program olduğu yerde durur. ANİMATE : Belirtilen zaman aralıklarında program satır satır otomatik olarak çalışır. Ne kadar sürede satır çalıştıracağımızı setting kısmının Debugger animation kısmından değiştirebiliriz. STEP INTO : Bu ikonu her klik yapmada programda bir satır çalıştırılmış olur. STEP OVER : Bu ikonu her klik yapmada programda bir satır çalıştırılmış olur. Ancak CALL komutu ile çalıştırılan Altprogramları göstermez RETURN komutuna kadar otomatik çalıştırır. Program CALL ile çağrılma satırının bir altından devam eder. Örneğin CALL TIMER dediğimizde timer alt programının nasıl çalıştığını adım adım göremeyiz. STEP OUT : Eğer step into ile adım adım çalıştırılırken alt programın içerisine girilmiş ise bu ikona klik yapmayla alt programdan hemen çıkılır ve ana programda kaldığı yerden devam eder. RESET : Programı reset eder ve tekrar programın en baştan başlaması için hazır hale getirir. Bütün bu tuşlar programda Debugger menüsünün içerisinde de mevcuttur. Bu menünün en altında bulunan setting kısmından ise kullanılan osilatör hızını seçerek gerçek zamanda program similasyonu da sağlanmış oluruz. 55

67 PIC programlamanın temelleri (6) MPASMWIN Eğer başka bir editör kullanmışsak ( örneğin > Windows Note Pad). Sadece MPASM assembler kullanabiliriz. Gerçekte de MPLAB programı derleme esnasında MPASM yi kullanmaktadır. Bu yazılım MPLAB programı yüklenirken bilgisayara aktarılmaktadır. Şekil 4-26 MPASMWIN bulunduğu kalasör Yeri ise yükleme esnasında değişiklik yapılmamış ise şekil 4-26 deki gibidir. Bu Windows versiyonu olup DOS versiyonunda çalışanı da vardır. MPASM çalıştırıldığında şekil 4 27 deki pencere açılmış olur. Önce Browse kısmından kaynak dosyayı bulunuz. Daha sonra Hex Output kısmından INHX8M işaretlememiz gerekmektedir. Processor kısmından ise hangi tür pic kullanıyorsak bunu da burada seçmeliyiz. Son olarak Assemble ikonuna klik yaptığımızda program derlenmiş olur. Derlenen dosya kaynak dosyamız hangi klasörde ise aynı klasöre oluşturulur. Şekil 4-27 MPASMWIN 56

68 PIC programlamanın temelleri 2 PIC yazıcı setini nasıl kullanırız? (1) PIC yazıcının ( writer ) kullanılması Şekil4-28 PIC Yazıcı ve eğitim seti (2) Bağlantısı kablosunu PC ye bağlayınız. Desk top makinelerde Note book makinelerde Şekil 4-29 PC ye bağlama yöntemi 57

69 PIC programlamanın temelleri (3) IC-PROG PROGRAMININ KULLANILMASI Bilgisayarda çeşitli dillerde yazılmış programlar derlenerek HEX dosya haline getirilmektedir. Bu dosyaları da PIC mikrodenetleyiciye yazmamız gerekmektedir. Bunun için çeşitli devreler ve yazılımlar mevcuttur. En yaygın olarak kullanılanlardan biri de IC-PROG yazılımıdır. IC-PROG yazılımı ile PIC çeşidinin büyük bir çoğunluğunu programlamamız mümkündür. Bunun yanı sıra bir çok programlayıcı devreyi de desteklemektedir. Bu kitaptaki yazıcı devresi AN589 Programmer donanımına göre yapılmıştır. Programı çalıştırdığımızda donanım kısmından AN589 seçmemiz gerekmektedir. Bu yazılımı kurmamıza da gerek yoktur. Herhangi bir yerden kopyalamamız veya internetten indirmemiz yeterli olacaktır. Programın internet adresi dur. 1) YAZICI AYARININ YAPILMASI Yukarıdaki ikona çift tıkladığımızda ilk defa karşımıza İngilizce versiyonu açılır. İlk donanım seçimi ise JDM programmer dir. Makinemize bu ayarları bir defa yapmamız yeterli olacaktır. Kapanıp açıldığında bizim son ayarlarımız gelmektedir. Öncelikle yazıcı tipimize göre donanım ( hardware ) AN589 Programmer e seçmemiz gerekmektedir. Bunun için Setting ve Hardware menülerini takip etmemiz, F3 tuşuna basmamız veya ana sayfada tuşuna basmamız yeterli olacaktır. Her üç yolda aynı menüyü açar. Şekil 4-30 AN589 seçim penceresi Setting / Hardware menüsünden Programmer için AN589 seçmemiz gerekir. Daha sonra OK ile menüdeki işlemimiz son bulmaktadır. 58

70 PIC programlamanın temelleri 2) YAZILIMIN TÜRKÇELEŞTİRİLMESİ Şekil 4-31 Options ayarları Kullandığımız yazılımın Türkçe olabilmesi içinde Setting Options menüsünü takip etmemiz gerekmektedir. Açılan Options menüsünden Language kısmıondan Turkish seçilip OK ile çıkıldığında program kendini bir defa açıp kapamak suretiyle programımız artık Türkçe olmuştur. Şekil 4-32 Yazılımın Türkçe hale dönüştürülmesi Şekil 4-33 Yazılımın Türkçe olmuş durumu 59

71 PIC programlamanın temelleri 3) PIC TÜRÜNÜN SEÇİLMESİ Bu yazılım ve yazıcı devremiz ile bir çok PIC çeşidini rahatlıkla programlayabilmekteyiz. Tabi ki her defasında programlamak istediğimiz PIC çeşidini bulmak zaman almakta ve sıkıcı olmaktadır. Bunu için daha önceden belirleyeceğimiz 4 adet PIC çeşidine CTRL + F1 den CTRL + F4 e kadar kısa yol oluşturabilmek mümkündür. Bunu gerçekleştirebilmek için Ayarlar Seçenekler menüsünü takip ettiğimizde karşımıza aşağıdaki menü çıkmaktadır. Burada Kısayollar menüsü seçilerek hangi kısa yol tuşuna hangi PIC çeşidi atanacaksa bunlar seçilir. Şekil 4-34 Kısa yol atamasının yapılması Tamam ile menüden çıkıldığında kısa yol tuşlarına seçilen PIC ler atanmış olur ve artık sürekli onlar karşımıza çıkar. PIC çeşidi seçmenin bir başka yolu ise ana menüde aşağıdaki şekilde olduğu gibi açılan pencereden olmaktadır. Şekil 4-35 PIC çeşidinin seçilmesi 60

72 4) KULLANILAN İŞLETİM SİSTEMİNE UYUMU SAĞLAMA PIC programlamanın temelleri IC-PROG yazılımını kullanmaya başlamadan evvel son yapacağımız ayar ise kullanacağımız bilgisayarda kurulu olan yazılıma uyum sağlamak olacaktır. Programı eğer Windows 95 Windows 98 Windows 98 me gibi yazılım yüklü makinelerde kullanacaksak bunun için ayarlarında herhangi bir değişiklik yapmamıza gerek yoktur. Ancak Windows WindowsXP Windows NT gibi yazılım yüklü makinelerde kullanacaksak ayarlarını buna uyumlu hale getirmemiz gereklidir. Şekil 4-36 İşletim sistemi uyumunu ayarlama Bunun için Ayarlar Seçenekler menüsü takip ederek Karışık yazan kısmı seçmemiz daha sonra karşımıza çıkan pencerede ise NT/2000/XP kutucuğunun işaretli olması gerekmektedir. Bunu işaretleyip Tamam ile pencereyi kapattığımızda ayarların geçerli olabilmesi için program kendini bir kez açıp kapaması gerekmektedir. Tekrar açılan programda artık kullandığınız yazılım türüne uygun hale gelmiş olmaktadır. Şekil 4-37 İşletim sistemi uyumunu ayarlama 61

73 PIC programlamanın temelleri 5) SÜRÜKLE BIRAK AYARI Kullanımı daha kolay hale getirebilmek için değişik ayarlar da gerçekleştirebiliriz. Bunlardan HEX uzantılı bir dosyayı sürükleyerek programımızın üzerine bıraktığımızda açılmasını istiyorsak Ayarlar / Seçenekler / Sürükle Bırak kısmına ulaşıp buradaki kutucuğu işaretleyip Tamam ile çıkmamız yeterli olacaktır. Bu ayarı bir defa yapmamız yeterli olacaktır. Şekil 4-38 Sürükle Bırak ayarı 6) DOĞRULAMA AYARI Şekil 4-39 Doğrulama ayarı Ic-prog yazılımı ile programlama gerçekleştirirken veya PIC teki bir bilgiyi silme esnasında bunun yanlışlıkla yapılabileceğini düşünenler için doğrulama bölümünü aktif hale getirmemiz mümkündür. Hangi durumda onaylama istiyorsak bunun kutucuğunu işaretlememiz yeterli olacaktır. Örneğin Aygıt programlanıyor kutucuğu işaretli ise ve biz yazılıma programlama komutunu uyguladığımızda aşağıdaki soruyu mutlaka sorarak doğrulama gerçekleştirir. Eğer işaretli değilse direk programlama işlemini gerçekleştirir. Şekil 4-40 Doğrulama penceresi 62

74 PIC programlamanın temelleri 7) ANA MENÜDEKİ İKONLAR VE İŞLEVLERİ Dosya Açma Dosya kayıt etme Programlayıcı Seçimi Seçenekler menüsünü açar PIC teki programı okuma PIC e program yazma PIC teki programı silme Aygıt doğrulaması yapar Smartcard sihirbazı Yazılan veya okunan programın Assembler görünümü Yazılan veya okunan programın HEX görünümü Programlanacak PIC türü Osilatör seçim penceresi seçebiliriz. Aktif olan Buffer katları. Bunlardan herhangi birini PIC in kimlik numarası seklindedir. Bunu değiştirmekte mümkündür. Yazılım programa göre bir sayı üretir. Her hangi bir değişiklik yapıldığında bu sayı da değişir. Böylece programda bir değişiklik yapıldığında yenisinin açılıp açılmadığını bu sayı ile kontrol edebiliriz veya Buffer 2 ye yazılan program okutulursa bu sayı aynı ise yazım kesin olarak doğru sonucuna varılır. 7) KARŞILAŞTIRMA YAPILMASI İki program arasında fark var ise ve bu farkın nerelerde olduğunu anlamak istiyorsak bunu da yazılım ile karşılaştırabiliriz. Bunun için karşılaştırılacak iki programı değişik Buffer lara açmamız gerekir. 63

75 PIC programlamanın temelleri Örneğin birini BUFFER 1 e diğerini ise BUFFER 2 ye açabiliriz. Daha sonra Tampon menüsünden karşılaştır seçilir. Karşılaştır seçildikten sonra Buffer 1 aktif olduğundan karşılaştırılacak diğer Buffer işaretlenir. Daha sonra Compare ( Karşılaştır) ikonu seçilerek karşılaştırma yapılır. Her ikisi de aynı ise yandaki bilgi mesajı gözükür. Şekil 4-41 Karşılaştırma penceresi Eğer programda değişiklik varsa bunu da aşağıdaki şekildeki gibi adım adım gösterebilmektedir. Örnekte 2135 ile 2145 arasındaki farkı göstermektedir. Başka değişikliler olup olmadığını anlayabilmek için ise Next tuşuna basmamız yeterli olacaktır. Şekil 4-42 Farklı programların karşılaştırılması 8) YAZIM DOĞRULAMASI IC-Prog yazılımı PIC e program yazarken iki çeşit kontrol yapmaktadır. Birincisi önce bir adresi yazar, sonra onu okur ve doğrular bu işlem program yazımı bitene kadar gerçekleşir. Hata olursa hemen uyarı verir. İkinci bir seçenek ise tümünü PIC e yazar ve hepsini okuyup doğrulama yapar. Bu iki seçenek programın PIC e doğru yazılıp yazılmadığını büyük ölçüde bize bildirir. Tabi ki bu işlem bize program yazma esnasında zaman harcamamıza sebep olur ve işlem süresi uzar. Ancak okuyup doğrulama yapmasını istemediğimizde daha kısa sürede işlem gerçekleşir fakat sağlıklı yazıp yazmadığı kuşkuludur. 64

76 PIC programlamanın temelleri Bu işlemleri yazılımda Ayarlar / Seçenekler kısmına girdiğimizde karşımıza aşağıdaki gibi çıkan pencereden ayarlayabiliriz. Şekil 4-43 Programlama doğrulama penceresi (4) Bu programın sonuç ifadesi PB0 yanar LED Şekil 4-44 Sonuç ifadesi 65

77 PIC programlamanın temelleri 3 Programın açıklanması (1) Program Listesi ve akış diyagramı INCLUDE P16F84.INC ;Adresleri belirten dosyayı yükle (1) LIST P=16F84 ;16F84 ün tanıtımını yap (2) BSF STATUS,5 ;Bank 1 e geç (3) CLRF TIRSB ;PORTB nin hepsini çıkış yap (4) BCF STATUS,5 ;Bank 0 a geç (5) CLRF PORTB ;PORTB nin hepsini 0 yap (6) BSF PORTB,0 ;PortB nin 0.bitini 1 ya p ( LED yak ) (7) DEVAM GOTO DEVAM ;Sonsuz döngü ile programı sonlan dır (8) END (9) Akış Diyagramı BAŞLA INCLUDE P16F84.INC Adresleri yükle LIST P=16F84 PIC seçimi BSF STATUS,5 Bank 1 e geç CLRF TRISB Port B nin tümü çıkış BCF STATUS,5 Bank 0 e geç CLRF PORTB PortB nin hepsi 0 BSF PORTB,0 LED yak GOTO DEVAM Son Şekil 4-45 Akış diyagramı 66

78 (2) Yöntem şartnamesi ( Specification of processor ) PIC programlamanın temelleri LIST P=16F84 (1) LIST talimat dilidir. {LIST} List opsiyonu 1) Format List [<list_opsiyon>,,<list_opsiyon>] Örnek >>> LIST P=16F84,F=INHX8M,R=DEC 2) Açıklama Seçenek Varsayım Tanım b=nnn 8 TAB boşluk sayısının tanımı c=nnn 132 Bir satırtaki harf sayısının tanımı f=<format> INHX8M HEX dosya formatındaki çıktının tanımı free FIXED Serbest form fixed FIXED Sabit form mm=on OFF n=nnn ON Memory haritasının listeye yazılması ON OFF 60 Bir sayfadaki satır sayısının tanımı p=<type> None İşlemci tanımı ( Example: P=,16F84 ) r=<radix> HEX Numerik değer tipi <HEX,DEC,OCT> st=on OFF ON Sembol tablosunun listeye yazılması ON OFF t=on OFF OFF Satır değiştirme < satır taşması sonucu > ON OFF w= Assemblerin mesaj seviye tanımı x=on OFF ON Makro geliştirilmiştir. ON OFF n nn desimal numaralarla tanımlama eklenmesidir. Tablo 4-2 Opsiyonların açıklanması 67

79 PIC programlamanın temelleri (3) Port un kurulumu 1) Bank seçimi PIC i kullanmaya başlamadan önce portların kurulması ( I/O belirlenmesi ) gerekmektedir. BAŞLA Bank1 seçimi BSF ( BSF H 03,5 ) STATUS,RP0 PORT un kurulumu TRISA ve TRISB Portların giriş veya çıkış olarak kullanılacağının karar verildiği yerdir. Bank0 seçimi BSF ( BSF H 03,5 ) STATUS,RP0 SON Şekil 4-46 I/O Portun kurulumu Bank 0 Bank 1 00 INDIRECT ADDR 80 INDIRECT ADDR 01 TMR0 81 OPTION 02 PCL 82 PCL 03 STATUS 83 STATUS 04 FSR 84 FSR 05 PORTA 85 TRISA 06 PORTB 86 TRISB A 0B 0C EEDATA EEADR PCLATH INTCON GPR Work memory 4F 68byte A 8B EECON1 EECON2 PCLATH INTCON bit 5=' 1' bit7 bit6 bit5 RP1 RP0 STATUS register (Address 03h) bit 5= ' 0 ' Şekil 4-47 Bank seçimi 68

80 PIC programlamanın temelleri PIC in portlarının giriş/çıkış ( I/O ) belirlendiği yazmaç ( Special Function Register )( Özel fonksiyon kayıdı ) (TRISA(85h) ve TRISB(86h) olarak adlandırılır. TRIS registerleri Bank1 dedir. Bank1 e geçiş STATUS yardımı ile olur. Statusun adresi de (03h) dir.. (Şekil 4-47) Bank 1 seçimini gösterdiği örnek program aşağıdaki gibidir. BSF STATUS,RP0 ( BSF H 03,5 ) Bank1 seçimi (PORT ların I/O olarak kurulumu. ) BCF STATUS,RP0 ( BCF H 03,5 ) Bank0 seçimi 2) PORT ların kurulumu (Örnek 1) PORTB nin hepsi ÇIKIŞ (form 1) CLRF TRISB ( CLRF H 86 ) (form 2) MOVLW H 00 ; W register << 00 MOVWF TRISB ; TRISB << W register ( MOVWF H 86 ) MSB LSB TRISB H'86' PORTB H'06' PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 OUT OUT OUT OUT OUT OUT OUT OUT Şekil 4-48 PORTB nin hepsi ÇIKIŞ 69

81 PIC programlamanın temelleri (Örnek 2) PORTB nin hepsi GİRİŞ (form 1) MOVLW H FF ; W register << FF MOVWF TRISB ; TRISB << W register ( MOVWF H 86 ) (form 2) MOVLW B ; W register << FF MOVWF TRISB ; TRISB << W register ( MOVWF H 86 ) MSB LSB TRISB H'86' PORTB H'06' PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 IN IN IN IN IN IN IN IN Şekil 4-49 PORTB nin hepsi GİRİŞ (Örnek 3) PORTB bit 0, bit 2,bit 4,bit 5,bit 6,bit 7 >> ÇIKIŞ bit 1,bit3 >> GİRİŞ (form 1) MOVLW H 0A ; W register << 0Ah MOVWF TRISB ; TRISB << W register ( MOVWF H 86 ) (form 2) MOVLW B ; W register << FF MOVWF TRISB ; TRISB << W register ( MOVWF H 86 ) MSB LSB TRISB H'86' PORTB H'06' PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 OUT OUT OUT OUT IN OUT IN Şekil 4-50 Farklı I/O Giriş Çıkışlar OUT 70

82 PIC programlamanın temelleri (Örnek 4) PORTA nın hepsi GİRİŞ (form 1) MOVLW H 1F ; W register << 1Fh MOVWF TRISA ; TRISA << W register ( MOVWF H 86 ) (form 2) MOVLW B ; W register << 1F MOVWF TRISA ; TRISA << W register ( MOVWF H 86 ) MSB LSB TRISA H'85' PIC16F84 not available PORTA H'05' PIC16F84 not available PA4 PA3 PA2 PA1 PA0 IN IN IN IN IN Şekil 4-51 PORTA nın hepsi GİRİŞ (4) LED lerin yakılması CLRF PORTB ;PORTB nin hepsi 0 >> Bütün LED ler sönük BSF PORTB,0 ;PORTB nin 0. bitindeki LED yanar (BSF H 06,0) STOP GOTO STOP ;program biter END 1) CLRF H 06 PORTB nin adresi 06h dir. CLRF ile bu adresteki bilgileri 0 hale getiririz.( Temizleriz ) MSB LSB PORTB H'06' Şekil 4-52 PORTB nin temizlenmesi 71

83 PIC programlamanın temelleri +5V 300 PIC16F84 '0' PORTB '1' ULN2803 LED Şekil 4-53 PORTB >> 0 (LED sönük) 2) BSF PORTB,0 ( BSF H 06,0 ) MSB LSB PORTB H'06' Şekil 4-54 BIT0 ın set (1) hale getirilmesi +5V 300 PIC16F84 '1' '0' PORTB ULN2803 LED Şekil 4-55 PORTB >> 1 ( LED yanık ) Alıştırma 4-1 Aşağıdaki şekle göre PB2 deki LED in yanmasını sağlayınız. PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 LED ON Alıştırma 4-2 Aşağıdaki şekle göre PB7 deki LED in yanmasını sağlayınız. P B 7 P B 6 P B 5 P B4 PB3 PB2 PB1 PB0 LED ON 72

84 PIC programlamanın temelleri 4 İki veya daha fazla LED in yakılması ( MOV komutunun kullanılması ) Örnek 1 Aşağıdaki LED lerin yanmasını sağlayan programın tasarımı. PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 LED ON LED ON LED ON Şekil 4-56 Örnek 1 (1) Program 4-1 Bir kaç LED in yakılması. INCLUDE P16F84.INC ;include dosyasının kullanımı (1) LIST P=16F84 ;16F84 ün tanıtımı (2) BSF STATUS,RP0 ;bank 1 seçimi (3) CLRF PORTB ;PORTB nin tümü çıkış (4) BCF STATUS,RP0 ;bank 0 seçimi (5) CLRF PORTB ;PORTB nin hepsi 0 (6) MOVLW H 54 ;W register << 54h (7) MOVWF PORTB ;PORTB << W register(led ON) (8) STOP GOTO STOP ;program sonu (9) END (10) (1) >> (5) Program başlangıcı (2) Include dosyası INCLUDE P16F84.INC 16F84 gibi Mikrodenetleyicilerin belleğinde bulunan yazmaçların ( registerlerin ) adresleri sabittir. Bu nedenle bunları her programda yazmak yerine INCLUDE komutunu kullanarak tamamını tek bir komutla tanımlama imkanına kavuşmuş oluruz. ( Dosyanın tamamı sayfa... ) Register adını include dosyasında kullanabiliriz. 73

85 * Sık kullandığımız yazmaç ( registerler ) adları ve adresleri PIC programlamanın temelleri ; Yazmaç ( register ) tanımları W EQU H'0000' F EQU H'0001' INDF EQU H'0000' TMR0 EQU H'0001' PCL EQU H'0002' STATUS EQU H'0003' FSR EQU H'0004' PORTA EQU H'0005' PORTB EQU H'0006' OPTION_REG EQU H'0081' TRISA EQU H'0085' TRISB EQU H'0086' ;----- STATUS Bitleri IRP EQU H'0007' RP1 EQU H'0006' RP0 EQU H'0005' NOT_TO EQU H'0004' NOT_PD EQU H'0003' Z EQU H'0002' DC EQU H'0001' C EQU H'0000' (6) >> (8) Programda LED lerin yakılması CLRF PORTB ;PORTB nin tamamının 0 olması (6) MOVLW H 54 ;W register << 54h (7) MOVWF PORTB ;PORTB << W register (LED ON) (8) 74

86 PIC programlamanın temelleri Akış diyagramı Başla PORTB nin tamamı çıkış PORTB yi temizle W reg << 54h (LED data) PORTB<<W reg (LED yak) Son (3) MOV komutu Şekil 4-57 Akış diyagramı MOVLW H'54' Wregister MOVWF PORTB MSB LSB PORTB H'06' LED OFF ON OFF ON OFF ON OFF OFF Şekil 4-58 MOV komutu 75

87 PIC programlamanın temelleri Alıştırma segment LED display in kullanımı a f g b e d c x 7segment bilgi x g F e d c b a PORTB Şekil segment LED display in kullanımı Alıştırma 4-3 PIC uçları için 7 segment display tablosunu doldurunuz. 7segment x g f e d c b a PORTB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 HEX data A b C d E F h 76

88 PIC programlamanın temelleri 5 Timer Programı (DECFSZ) Bu program bir LED in ( PB0 daki ) yanıp sönmesini sağlar. Bunun yanıp sönmesini sağlayabilmek için zamanlayıcıya ( timer ) ihtiyaç vardır. Zamanlayıcı aşağıdaki şekilde yapılır. PB0 LED 50ms ON LED 50ms OFF LED 50ms ON LED OFF 50ms Şekil 4-60 LED in yanıp sönmesi (1) Zamanlayıcı ( timer ) program system clock (4 MHz) execution clock (1 MHz) 1uS Şekil 4-61 Zaman ( darbe ) pulsleri PIC eğitim setinde 4 MHz lik kristal osilatör kullandık. Uygulama zamanı ise sistem zamanının 1 /4 katıdır. Bir başka ifadeyle sistem zamanı uygulama zamanının dört katıdır. 1 clock zamanı ( 1 / 1 x 10 6 = 1 x 10-6 = 1 us). PIC de bir komutun uygulanması da çoğunlukla bir saykıldır. PIC uygulama tablosundan PIC in hangi komutu kaç saykıl sürede çalıştığını bulabiliriz. 77

89 PIC programlamanın temelleri 1) Timer program ( yaklaşık 2ms ) COUNTER EQU H 10 MOVLW D 200 ;1CLOCK MOVWF COUNTER ;1CLOCK DLY1 GOTO $+1 ;2CLOCK GOTO $+1 ;2CLOCK GOTO $+1 ;2CLOCK NOP ;1CLOCK DECFSZ COUNTER,1 ;1(2)CLOCK GOTO DLY1 ;2CLOCK 1 clock = 1 / 4 = 1 us Zamanlayıcı ( timer ) programın toplam gecikme süresini hesaplayacak olursak ; x ( ) + 1 = 2003 us = 2ms BAŞLA COUNTER << 200 Harcanan zaman (7 clock) COUNTER << COUNTER - 1 Hayır DECFSZ COUNTER,1 GOTO DLY1 COUNTER : 0? Evet RETURN Şekil 4-62 Timer programının akış diyagramı 78

90 PIC programlamanın temelleri 2) Timer program ( yaklaşık 50ms ) Eğer daha uzun süreli bir zamanlayıcı yapmak istiyorsak iki tane döngüye ihtiyaç vardır. Örneğin 50 ms lik bir zamanlayıcı ( timer ) program yazmak istersek BAŞLA DLY1 COUNT1 << 25 DLY2 COUNT2 << 200 Harcanan Zaman (7 clock) COUNT2 << COUN2-1 Hayır COUNT2 : 0? Evet COUNT1 << COUNT1-1 Hayır COUNT1 : 0? Evet RETURN Şekil 4-63 Uzun süreli zamanlayıcı programın akış diyagramı 79

91 PIC programlamanın temelleri ( 50ms program ) COUNT1 EQU H 10 COUNT2 EQU H 11 MOVLW D 25 MOVWF COUNT1 DLY1 MOVLW D 200 ;1CLOCK MOVWF COUNT2 ;1CLOCK DLY2 GOTO $+1 ;2CLOCK GOTO $+1 ;2CLOCK GOTO $+1 ;2CLOCK NOP ;1CLOCK DECFSZ COUNT2,1 ;1(2)CLOCK GOTO DLY2 ;2CLOCK DECFSZ COUNT1,1 ;1(2)CLOCK GOTO DLY1 ;2CLOCK Alıştırma 4-4 Yukarıdaki programın harcanan zamanını lütfen hesaplayınız. 80

92 PIC programlamanın temelleri (2) Program 4-2 ; LED in 50mS. aralıklarla yanıp sönmesini sağlayan program. Başla PORT B nin tümünü çıkış yapınız PORTB yi temizle PORTB nin sıfırıncı bitini 1 yap 50ms TIMER çağır PORTB nin sıfırıncı bitini 0 yap 50ms TIMER çağır Şekil ms aralıklarla yanıp sönen programın akış diyagramı 81

93 PIC programlamanın temelleri ; LED yanıp sönme programı (50ms) LIST P=16F84,R=DEC INCLUDE P16F84.INC ;include dosyasını kullandık COUNT1 EQU H 10 COUNT2 EQU H 11 BSF STATUS,RP0 CLRF TRISB BCF STATUS,RP0 CLRF PORTB LOOP BSF PORTB,0 CALL TIMER BCF PORTB,0 CALL TIMER GOTO LOOP TIMER MOVLW D 25 MOVWF COUNT2 DLY1 MOVLW D 200 ;1CLOCK MOVWF COUNT1 ;1CLOCK DLY2 GOTO $+1 ;2CLOCK GOTO $+1 ;2CLOCK GOTO $+1 ;2CLOCK NOP ;1CLOCK DECFSZ COUNT1,1 ;1(2)CLOCK GOTO DLY2 ;2CLOCK DECFSZ COUNT2,1 ;1(2)CLOCK GOTO DLY1 ;2CLOCK RETURN ;2CLOCK END 82

94 PIC programlamanın temelleri Alıştırma 4-5 Programı 0.5S olarak hesaplayıp değiştiriniz ve uygulayınız. Alıştırma 4-6 Aşağıdaki şekildeki gibi LED lerin yanıp sönmesini sağlayan program yazınız ve uygulayınız. LED ON ON 200ms ON ON LED ON ON ON ON 200ms LED ON ON 200ms ON ON ON ON ON ON 200ms 83

95 PIC programlamanın temelleri 6 LED lerin ardışık olarak yanması ( Dönüş uygulaması ) (1) Dönüş programı 1 LED 200ms ON LED 200ms ON LED 200ms ON LED LED ON ON 200ms 200ms LED LED ON 200ms ON 200ms LED ON 200ms LED 200ms 1) Dönüş uygulaması Şekil 4-65 Dönüş programı RLF f,d f file yazmacının ( registerinin ) içeriği tam bir bit sola doğru kaydırılır. En son bitteki b7 ise Carry Flag dediğimiz taşıma bayrağına aktarılır, taşıma bayrağındaki ise baş taraftaki b0 a aktarılarak dönüş sağlanmış olur. Z D C b7 b6 b5 b4 b3 b2 b1 b0 d=0 d=1 W yazmacı Memory f Şekil 4-66 Dönüş uygulaması 84

96 PIC programlamanın temelleri 2) Program 4-3 ;******************************************************************* ; LED lerin yaklaşık 200 ms ile dönmesi ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC COUNT1 EQU H'10' COUNT2 EQU H'11' BSF STATUS,RP0 ;Bank 1 e geç CLRF TRISB ;TRISB=0 PORTB tümü çıkış BCF STATUS,RP0 ;Bank 2 ye geç CLRF PORTB ;PORTB yi temizle INIT BCF STATUS,0 ;taşıma bayrağını temizle MOVLW B' ' ;ilk değer girişi MOVWF PORTB ;Bu girişin PORTB ye aktarımı LOOP CALL TIMER ;200ms gecikme RLF PORTB,F ;1 bit sola kaydır GOTO LOOP TIMER ; yaklaşık 200ms gecikme ;************************************************************ ;* *( *( )+1+1+2)+1+2=200605us * ;************************************************************ MOVLW 100 ; 1clock MOVWF COUNT1 ; 1clock DLY1 MOVLW 200 ; 1clock MOVWF COUNT2 ; 1clock DLY2 GOTO $+1 ; 2clock GOTO $+1 ; 2clock GOTO $+1 ; 2clock NOP ; 1clock DECFSZ COUNT2,1 ; 1(2) clock GOTO DLY2 ; 2clock DECFSZ COUNT1,1 ; 1(2 )clock GOTO DLY1 ; 2clock RETURN ; 2clock END 85

97 PIC programlamanın temelleri 3) Akış diyagramı Başla PORTB nin tamamı çıkış PORTB yi temizle Taşıma bayrağını temizle PORTB << B ms TIMER çağır PORTB dekileri 1 bit sola kaydır Şekil 4-67 Yaklaşık 200 ms.yanan LED lerin sola doğru hareket akış diyagramı Alıştırma 4-7 LED lerin sağa doğru hareketin sağlayan program yazınız.( Gecikme 500ms ) LED LED ON ON 500ms 500ms LED LED LED LED ON 500ms ON 500ms ON 500ms 500ms ON LED 500ms ON LED LED 500ms 500ms ON 86

98 PIC programlamanın temelleri (2) Dönüş programı 2 LED lerin yanması aşağıdaki gibi olacaktır. Şekil4-68 LED lerin yanma şekli 1) BTFSC komutun uygulaması ( Bit Test f, Skip if Clear ) BTFSC f,b Eğer f yazmacını b ninci biti 0 ise program akışı bir satır atlayarak ikinci satırdan devam eder. Eğer f yazmacının b ninci biti 1 ise program akışı bir alt satırdan çalışmaya devam eder. BTFSC memory,bit BTFSC memory,4 GOTO ADDR MOVLW H'0A' BTFSC memory,4 GOTO ADDR MOVLW H'0A' Şekil 4-69 BTFSC komut uygulaması 87

99 PIC programlamanın temelleri 2) Program 4-4 ;******************************************************************* ; LED lerin sağa ve sola doğru hareketi ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC COUNT1 EQU H'10' COUNT2 EQU H'11' BSF STATUS,RP0 ;Bank 1 e geç CLRF TRISB ;TRISB=0 PORTB nin tümünü çıkış yap BCF STATUS,RP0 ;Bank 0 a geç CLRF PORTB ;PORTB yi temizle INIT BCF STATUS,C ;taşıma bayrağını temizle MOVLW B' ' ;ilk değer girişi MOVWF PORTB ;ilk değeri PORTB ye aktar LOOP1 CALL TIMER ;0.5s gecikme RLF PORTB,F ;1 bit sola kaydır BTFSS STATUS,C ;carry bit=1 >> ise >> LOOP2 ye git GOTO LOOP1 LOOP2 CALL TIMER ;0.5s gecikme RRF PORTB,F ;1 bit sağa kaydır BTFSS STATUS,C ;carry bit=1 >> ise >> LOOP1 ye git GOTO LOOP2 GOTO LOOP1 TIMER ; yaklaşık 0.5s Timer ;************************************************************ ;* *( *( )+1+1+2)+1+2=501505us * ;************************************************************ MOVLW 250 ; 1clock MOVWF COUNT1 ; 1clock DLY1 MOVLW 200 ; 1clock MOVWF COUNT2 ; 1clock DLY2 GOTO $+1 ; 2clock GOTO $+1 ; 2clock GOTO $+1 ; 2clock 88

100 NOP ; 1clock DECFSZ COUNT2,1 ; 1(2)clock GOTO DLY2 ; 2clock DECFSZ COUNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock PIC programlamanın temelleri END 3) Akış diyagramı Başla 1 yap PORT B nin tamamını çıkış 200ms gecikme PORTB yi temizle PORTB yi sağa doğru 1 bit kaydır Taşıma bayrağını temizle PORTB << B Hayır Carry bit = 1 Evet 200ms gecikme PORTB yi sola doğru 1 bit kaydır. Hayır Carry bit = 1 Evet 1 Şekil 4-70 Akış diyagramı 89

101 PIC programlamanın temelleri Alıştırma 4-8 Aşağıdaki şekilde görüldüğü gibi LED leri yakan program yapınız ve uygulayınız ( Gecikme 200ms ) Alıştırma 4-9 uygulayınız ( Gecikme 200ms ) Aşağıdaki şekilde görüldüğü gibi LED leri yakan program yapınız ve 90

102 PIC programlamanın temelleri 7 İncrement and decrement uygulaması ( INC, DEC ) Artırma ve Azaltma komutunun uygulaması Bu program data bilgilerini +1 artırır veya -1 azaltır. Eğer +1 artırmak istiyorsak bunun için increment file kısaltması olan INCF kullanılır, -1 azaltmak istiyorsak decrement file kısaltması olan "DECF" komutu kullanılır. Her iki komutta PIC de mevcuttur. (1) Program dan 255 e kadar ardışık olarak artan ve bunu LED le gösteren bir program yapalım ( gecikme yaklaşık 0.1s ) 1) Akış diyagramı Şekil 4-71 Uygulama 4-13 Başla PORT B nin tamamı çıkış PORTB yi temizle 0.1s gecikme yap PORTB yi 1 artır. Şekil 4-72 Uygulama 4-13 ün akış diyagramı 91

103 PIC programlamanın temelleri 2) Program yazılışı ;******************************************************************* ; PORTB data bilgilerini 0 dan 255 e kadar 1 er artıran program ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC COUNT1 EQU H'10' COUNT2 EQU H'11' BSF STATUS,RP0 ;Bank 1 e geç CLRF TRISB ;TRISB=0 PORTB tamamını çıkış yap BCF STATUS,RP0 ;Bank 0 a geç CLRF PORTB ; PORTB yi temizle LOOP CALL TIMER ;0.1s gecikmeyi çağır INCF PORTB,F ;PORTB yi 1 artır. GOTO LOOP TIMER ; about 0.1s Timer ;************************************************************ ;* *( *( )+1+1+2)+1+2=100305us * ;************************************************************ MOVLW 50 ; 1clock MOVWF COUNT1 ; 1clock DLY1 MOVLW 200 ; 1clock MOVWF COUNT2 ; 1clock DLY2 GOTO $+1 ; 2clock GOTO $+1 ; 2clock GOTO $+1 ; 2clock NOP ; 1clock DECFSZ COUNT2,1 ; 1(2)clock GOTO DLY2 ; 2clock DECFSZ COUNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock END Alıştırma programındaki INCF komutunu DECF komutu ile değiştirerek tekrar uygulayınız. 92

104 PIC programlamanın temelleri 8 Anahtarlama arabirimi (1) Anahtarlama devresi 10k X 4 PIC16F84 PA0 PA1 PA2 PA3 PB0 PB1 PB2 PB3 PB4 PB5 PB6 MCLR PB7 OSC1 OSC2 Şekil 4-73 PIC eğitim setinin anahtarlama birimi 1) Anahtarlama arabirimin açıklanması Butona basmadığımız zaman >> PA girişi '1' dir. Butona bastığımız zaman >> PA girişi '0' dır. (2) Programın açıklanması 1) PA0 butonu basıldığında LED1(PB0) yakan LED2(PB1) sönüktür. 2) PA1 butonu basıldığında LED2(PB1) yakan LED1(PB0) sönüktür. 3) Her iki butonada basılı değilse LED ler sönük olan bir program yapalım. 93

105 PIC programlamanın temelleri (3) Program 4-6 ;******************************************************************* ; PA0 >> ON PB0 >> ON ; PA1 >> ON PB1 >> ON ; INCLUDE DOSYASI KULLANILACAKTIR ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC ;include dosyası INIT BSF STATUS,RP0 ;Bank 1 e geç MOVLW H 1F MOVWF TRISA ;PORTA Tamamını giriş yap CLRF TRISB ;TRISB=0 PORTB tamamını çıkış yap BCF STATUS,RP0 ;Bank 0 a geç CLRF PORTB ;PORTB yi temizle MAIN BTFSC PORTA,0 ;PA0 basılımı?(pa0 << Low) GOTO SKIP1 ;PA0 basılı değil >> SKIP1(PA0 << High) MOVLW H'01' ;PA0 basılı >> PB0 LED yanar MOVWF PORTB GOTO MAIN SKIP1 BTFSC PORTA,1 ;PA1 basılımı? GOTO SKIP2 ;PA1 basılı değil >> SKIP2 MOVLW H'02' ;PA1 basılı >> PB1 LED yanar MOVWF PORTB GOTO MAIN SKIP2 MOVLW H'00' ;RA0 ve RA1basılı ise >> LED ler sönük MOVWF PORTB ;PORTB >> 0 yap GOTO MAIN STP GOTO STP END 94

106 PIC programlamanın temelleri (4) Akış diyagramı Başla PORTB çıkış PORTA giriş yap PORTB yi temizle PA0 : Basılımı(Low)? Hayır Evet PA1 : Basılımı(Low)? Hayır Evet PORTB bit0 daki LED yak PORTB bit1 deki LED yak PORTB tümünü söndür Şekil 4-74 Akış diyagramı Alıştırma 4-11 Buton PA0 >> Basılı ON 7Segment >> 0 Buton PA1 >> Basılı ON 7Segment >> 1 Buton PA2 >> Basılı ON 7Segment >> 2 Buton PA3 >> Basılı ON 7Segment >> 3 Buton basılı değil OFF 7Segment >> F 95

107 PIC programlamanın temelleri Alıştırma 4-12 Aşağıdaki şekilde görüldüğü gibi LED leri yakan bir program yapalım. > PA0 Buton basılı olduğu sürece.( gecikme 200ms ) > PA1 Buton basılı olduğu sürece.( gecikme 200ms ) 96

108 PIC programlamanın temelleri 9 RETLW komutunun uygulaması (1) Retlw işlem sırası PIC işlem sırası ADDWF PCL,W ve RETLW komut uygulaması şeklindedir. ( Altprogram formu ) (2) Program 4-7 Bu program 7 segmenli ardışık LED lerin 0 dan 9 a kadar göstermesinde kullanılır. 1) W registerine 0 dan 9 a kadar olan değerler atanır ve program bunu altprogram tablosundan çağırır. (CALL SEGDAT) 2) Örneğin, W register 1 değerine sahipken CALL SEGDAT komutu ile altprogram çalıştırılır ve program sayıcı 40h olur. 3) Sonra ADDWF PCL,F komutunu çalıştırdığımızda program sayıcı 41h(PCL(41h) + W register(01h)) olur. Böylece program sayıcısına +1 eklenir. Sonra program sayıcısı 42h. olarak belirlenir. 4) Program 42h i uygular. RETLW B ( 7segment datası = 1 ). 5) Altprogramdan sonra gerçek programa geri döner W registeri B' '. olur. 6) 7segment LED de 1 görünür. PC(program sayıcı) CALL SEGDAT 40h SEGDAT ADDWF PCL,F ;PCL( program counter ) + W >>PCL 41h RETLW B' ' ;segmen data 0 >> W (PCL+0) 42h RETLW B' ' ;segmen data 1 >> W (PCL+1) 43h RETLW B' ' ;segmen data 2 >> W (PCL+2) 44h RETLW B' ' ;segmen data 3 >> W (PCL+3) 45h RETLW B' ' ;segmen data 4 >> W (PCL+4) 46h RETLW B' ' ;segmen data 5 >> W (PCL+5) 47h RETLW B' ' ;segmen data 6 >> W (PCL+6) 48h RETLW B' ' ;segmen data 7 >> W (PCL+7) 49h RETLW B' ' ;segmen data 8 >> W (PCL+8) 4Ah RETLW B' ' ;segmen data 9 >> W (PCL+9) 97

109 ;******************************************** ;* program 4-7 ;* RETLW komutunun kullanılması ;* 0 dan 9 a kadar 7segment LED kullanımı ;******************************************** LIST P=16F84,R=DEC INCLUDE P16F84.INC COUNT1 EQU H'10' ; MEMORY ADRESİ COUNT2 EQU H'11' ; COUNT3 EQU H'12' ; RAM1 EQU H'13' ; PIC programlamanın temelleri INIT BSF STATUS,RP0 ; Bank 1 e geç CLRF TRISB ; PORTB nin tamamı çıkış BCF STATUS,RP0 ;Bank 0 a geç CLRF PORTB ; PORTB yi temizle LOOP MOVLW D'10' ; segmen data numarası = 10 MOVWF COUNT3 ; count3 = 10 CLRF RAM1 ; RAM1 = 0 LOOP1 MOVF RAM1,W ;RAM1 >> W CALL SEGDAT ; RAM1 data 0 dan 9 a kadar MOVWF PORTB ; W(segmen data) >> PORTB CALL TIMER ; 0.3s gecikmeyi çağır INCF RAM1,F ; RAM1+1 >> RAM1 DECFSZ COUNT3,F ; COUNT3-1 >> COUNT3 = 0 GOTO LOOP1 GOTO LOOP STP GOTO STP SEGDAT ADDWF PCL,F ;PCL(program counter) + W >>PCL RETLW B' ' ;segmen data 0 >> W (PCL+0) RETLW B' ' ;segmen data 1 >> W (PCL+1) RETLW B' ' ;segmen data 2 >> W (PCL+2) RETLW B' ' ;segmen data 3 >> W (PCL+3) RETLW B' ' ;segmen data 4 >> W (PCL+4) 98

110 PIC programlamanın temelleri RETLW B' ' ;segmen data 5 >> W (PCL+5) RETLW B' ' ;segmen data 6 >> W (PCL+6) RETLW B' ' ;segmen data 7 >> W (PCL+7) RETLW B' ' ;segmen data 8 >> W (PCL+8) RETLW B' ' ;segmen data 9 >> W (PCL+9) TIMER ;yaklaşık 0.3s zamanlayıcı ;************************************************************ ;* *( *( )+1+1+2)+1+2=300905us * ;************************************************************ MOVLW 150 ; 1clock MOVWF COUNT1 ; 1clock DLY1 MOVLW 200 ; 1clock MOVWF COUNT2 ; 1clock DLY2 GOTO $+1 ; 2clock GOTO $+1 ; 2clock GOTO $+1 ; 2clock NOP ; 1clock DECFSZ COUNT2,1 ; 1(2)clock GOTO DLY2 ; 2clock DECFSZ COUNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock END Alıştırma dan F e kadar ardışık sayan ve bunu 7 segment LED displayde gösteren program yapınız ve uygulayınız. 99

111 PIC programlamanın temelleri 10 Buton arabirimi 2 (1) chattering Vcc Vcc to PORT 0v chattering Şekil 4-75 Buton akımı ve PORT un dalga formu Şekil 4-75 tipik bir buton akımını göstermektedir. Burada PIC uygulama setinde aynı giriş akımını kullandık. LED lerin yanmasında herhangi bir problemle karşılaşmadık. Ancak butona basma sayısına göre bir program yazacak olsaydık o zaman problemlerle karşılaşırdık. ( örneğin PA0 butonuna 5 defa bastığımızda PB0 LED ini yakan program ) Şekilde de görüldüğü gibi butonda ( chattering ) dalgalanma meydana gelir. Çünkü mikrodenetleyicinin işletim hızı oldukça hızlıdır butona bir defa basmakla iki veya daha fazla işlem görmüş olur. (2) Alıcı ile buton uygulaması 1) Klasik tip buton devresi Vcc H level to PORT Vin H Vin L Llevel Şekil 4-76 Klasik tip buton devresi Bu devrede de dalgalanma ( chattering ) mevcuttur. Microdenetleyicilerde için bu atlamayı önlemek mümkündür. Bu devreyi kullanacağımızda dalgalanmayı programla önlememiz gerekir. Genellikle biz bu devreyi kullanırız ve program yardımıyla dalgalanmayı önleriz. İleri konularımızda programla dalgalanma önleme açıklanacaktır. 100

112 PIC programlamanın temelleri 2) Kondansatörlü buton devresi Vcc H level to PORT Vin H Vin L Llevel Şekil 4-77 Kondansatörlü buton devresi Şekilde kondansatör eklenmiş bir devrenin akımını görmektesiniz. Bu devre kalasik tip anahtarlama devresinden daha iyidir. VL den VH kadar olan kısımda geçen zaman tanımlanmamıştır. 3) Schmidt Trigger ters çeviricili devre Vcc H level to PORT Vin H Vin L Llevel Şekil 4-78 Schmidt Trigger ters çeviricili devre Eğer biz bu dalgalanmaları ( chattering ) donanımla yok etmek istiyorsak en iyi çözüm. Schmidt Trigger tersleyicisi kullanmaktır. Genellikle gürültülü devrelerde kullanılır. Alıştırma 4-14 (1) Alıştırmanın açıklanması 1) Her butona bastığımızda LED lerin artarak yandığını sağlayan bir program yapalım. 2) Her üç metod ile bu uygulamayı gerçekleştiriniz. (Yanlızca buton uygulama devresini kullanınız.) 3) Bu üç yöntemde butona her basılışta LED ler aynı şekilde mi yandı? 101

113 PIC programlamanın temelleri (2) Alıştırma 4-14 ( akış diyagramı ) Başla PORTB çıkış PORTA giriş PORTB yi temizle Hayır Hayır SW :Basılımı(Low)? Evet SW : Basılı değilmi (High)? SW : Klasik tip buton devresi PORTA >> 0 Kondansatörlü buton devresi PORTA >> 1 Schmidt Trigger tersleyicili buton devresi PORTA >> 2 Evet PORTB yi artır Şekil 4-79 Akış diyagramı 102

114 PIC programlamanın temelleri (3) buton uygulama devresi +5V 10k x 3 PIC16F84 ULN v 74HC14 PA0 PA1 PB0 PB1 PA2 PB2 +5V 10k PB3 PB4 PB5 PB6 MCLR PB7 GND +5V MCLR OSC1 OSC2 4MHz +5v 300 X 8 LED x 8 CLOCK DATA Şekil 4-80 Buton uygulama devresi (4) Buton uygulama devresinin üstten görünüşü PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 LED x 8 ULN2803 Extension Connector PB7 PB0 G + PA0 PA1 PIC16F84 74HC14 RESET PA2 Şekil 4-81 Buton uygulama devresinin üstten görünüşü 103

115 PIC programlamanın temelleri (5) Deneyin sonucu 1) Klasik tip buton devresi 2) Kondansatörlü buton devresi 3) Schmidt Trigger tersleyicili buton devresi 104

116 PIC programlamanın temelleri 11 Uygulanabilir buton programı ( Dalgalanmayı önlemek için ) Vcc Hlevel to PORT Llevel 10-30ms First reading second reading Şekil 4-82 Buton programı (1) Uygulanabilir buton programında izlenecek yol 1) İlk once butonu okumak gerekir 2) Dalgalanma ( chattering ) zamanı kadar beklemeli. (10 30ms) 3) Tekrar butonu ikinci kez okumalı 4) Eğer butona basılı ise takip eden komut devam etmelidir. Hayır SW : Basılı mı? SW1 BTFSC PORTA,0 GOTO SW1 Evet Dalgalanma süresince bekle (10-30ms) CALL TIMER Hayır SW : Basılı mı? BTFSC PORTA,0 GOTO SW1 Evet Programa devam et Şekil 4-83 Buton programının akış diyagramı 105

117 PIC programlamanın temelleri Alıştırma 4-15 PA0 daki butona her basılmada 7 segment LED displayi artıran program yazınız. ( Alıştırma 4-13 bakınız ve uygulanabilir buton programını kullanınız. ) PA0 Basılı Basılı Basılı Basılı Basılı Basılı segment LED F (1) Akış diyagramını çiziniz. (2) Programı uygulayınız. 106

118 PIC programlamanın temelleri 12 Mantıksal işlemler (AND,OR,XOR) (1) AND işlevi AND devresi girişlere çarpma işlemi uygulandığı bir devredir ve çıkış sadece her girişin 1 olduğu zaman 1 olur. Giriş Çıkış A B X A B X Şekil 4-84 AND devresi 1) ANDLW W yazmacının değeri sekiz bitlik k sabiti ile AND işlemine tabi tutulur ve sonuç tekrar W yazmacına kayıt edilir. ANDLW k W yazmacı W yazmacı k Şekil 4-85 ANDLW komutu 2) ANDWF W yazmacı ile f yazmacı AND işlemine tabi tutulduğunda eğer d=0 ise sonuç W yazmacına, d=1 ise sonuç f yazmacına kayıt edilir. ANDWF f,d W Yazmacı FSR d=0 d=1 Şekil 4-86 ANDWF komutu W yazmacı F yazmacı

119 PIC programlamanın temelleri 3) Program 4-8 AND komutunu kullanarak 4 bitlik ledleri yakan program yazalım. ( yüksek olan 4 bitler daima 0 olacak ) ( Program4-5 kullanılacak ) 4) Akış diyagramı Başla PORTB nin tamamını çıkış yap PORTB yi temizle 0.1s TIMER çağır PORTB yi 1 artır Wreg << PB << PB AND Wreg Şekil 4-87 Program 4-8 in akış diyagramı 108

120 PIC programlamanın temelleri 5) Program 4-8 listesi ;******************************************************************* ; AND komutunu kullanarak PORTB bilgisinin artırımı ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC COUNT1 EQU H'10' COUNT2 EQU H'11' BSF STATUS,RP0 ;Bank1 e geç CLRF TRISB ;TRISB=0 PORTB tamamını çıkış yap BCF STATUS,RP0 ;Bank0 a geç CLRF PORTB ;PORTB yi temizle LOOP CALL TIMER ;0.1s timer çağır INCF PORTB,F ;PORTB yi 1 artır MOVLW B ;Wreg << ANDWF PORTB,F ;Düşük 4 bitten kalan data GOTO LOOP ;TIMER ; yaklaşık 0.1s gecikme ;************************************************************ ;* *( *( )+1+1+2)+1+2=100305us * ;************************************************************ MOVLW 50 ; 1clock MOVWF COUNT1 ; 1clock DLY1 MOVLW 200 ; 1clock MOVWF COUNT2 ; 1clock DLY2 GOTO $+1 ; 2clock GOTO $+1 ; 2clock GOTO $+1 ; 2clock NOP ; 1clock DECFSZ COUNT2,1 ; 1(2)clock GOTO DLY2 ; 2clock DECFSZ COUNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock END 109

121 PIC programlamanın temelleri (2) IOR işlevi Herhangi bir girişin 1 olduğu zaman çıkışı 1 olan çoklu OR devresi A B X Giriş Çıkış A B X ) IORLW Şekil 4-88 OR devresi 8 bitlik k sabiti ile OR lanan W yazmacının içeriğinin sonuçu W yazmacına yazılır. IORLW k W yazmacı W yazmacı k Şekil 4-89 IORLW komutu 2) IORWF W yazmacı f yazmacı ile OR işlemine tabi tutulduğunda eğer d=0 ise sonuç w yazıcısına, eğer d=1 ise sonuç f yazmacına yazılır. IORWF f,d W yazmacı f d=0 d=1 Şekil 4-90 IORWF komutu W yazmacı Memory f

122 PIC programlamanın temelleri 3) Program 4-9 IOR komutunu kullanarak 4 düşük LED lerle program yazalım ( 4 yüksek bit değerleri daima 1 olacak ( Program4-5 kulanıldı.) 4) Akış diyagramı Başla PORTB nin tamamını çıkış yap PORTB yi temizle 0.1s TIMER çağır PORTB yi 1 artır Wreg << PB << PB IOR Wreg Şekil 4-91 Program 4-9 un akış diyagramı 111

123 PIC programlamanın temelleri 5) Program 4-9 listesi ;******************************************************************* ; IOR komutunu kullanarak PORTB bilgi artışı ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC COUNT1 EQU H'10' COUNT2 EQU H'11' BSF STATUS,RP0 ;Bank1 e geç CLRF TRISB ;TRISB=0 PORTB tamamını çıkış yap BCF STATUS,RP0 ;Bank0 a geç CLRF PORTB ;PORTB yi temizle LOOP CALL TIMER ;0.1s timer çağır INCF PORTB,F ;PORTB yi 1 artır MOVLW B ;Wreg << IORWF PORTB,F ;Düşük 4 bitten kalan data GOTO LOOP ;TIMER ; yaklaşık 0.1s gecikme ;************************************************************ ;* *( *( )+1+1+2)+1+2=100305us * ;************************************************************ MOVLW 50 ; 1clock MOVWF COUNT1 ; 1clock DLY1 MOVLW 200 ; 1clock MOVWF COUNT2 ; 1clock DLY2 GOTO $+1 ; 2clock GOTO $+1 ; 2clock GOTO $+1 ; 2clock NOP ; 1clock DECFSZ COUNT2,1 ; 1(2)clock GOTO DLY2 ; 2clock DECFSZ COUNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock END 112

124 PIC programlamanın temelleri (3) XOR işlevi XOR girişler aynı ise 0, ayrı ( farklı ) ise 1 olduğu devredir. Doğruluk tablosunda görüldüğü gibi iki giriş aynı olduğu zaman çıkış ( Low ) düşük, iki giriş farklı olduğu zaman ise ( High ) yüksek olan devredir. Böylece XOR devresi ile iki girişin aynı olup olmadığını kontrol edebiliriz. 8 bitlik iki sayıyı XOR tabi tuttuğumuzda Zero bayrağı bu iki sayı eşit ise 1 olur. Eşit değil ise 0 olur. Böylece sayı kontrolünüde gerçekleştirmiş oluruz. A B X Giriş Çıkış A B X ) XORLW Şekil 4-92 XOR devresi 8 bit k sabiti ile W yazmacı XOR işlemine tabi tutulduğunda sonuç W yazmacına yazılır. XORLW k W yazmacı k W yazmacı Şekil 4-93 XORLW komutu 2) XORWF W yazmacı f yazmacı ile EXOR işlemine tabi tutulduğunda eğer d=0 ise sonuç w yazmacına, eğer d=1 ise sonuç f yazmacına yazılır XORWF f,d W yazmacı f d=0 d=1 W yazmacı Memory f Şekil 4-94 XORWF komutu 113

125 PIC programlamanın temelleri 3) Program 4-10 XOR komutunu kullanarak tersleme programı yapalım. PORTB ye data ' ' kayıt edilir. PA0 butonuna basılana kadar beklenir. PORTB nin XOR işlemi ve ' ' terslenir. 4) Akış diyagramı Başla PORTB nin tamamı çıkış PORTA nın tamamını giriş yap PORTB yi temizle Wreg << PORTB << Wreg Hayır PA0 : ON Evet Wreg << PB << PB X OR Wreg Program sonu Şekil 4-95 Program 4-10 un akış diyagramı 114

126 PIC programlamanın temelleri 5) Program 4-10 listesi ;******************************************************************* ; XOR komutunu kullanarak PORTB bilgilerini çevirme ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC BSF STATUS,RP0 ;Bank1 e geç MOVLW B ;TRISA data MOVWF TRISA ;PORTA tamamı giriş CLRF TRISB ;TRISB=0 PORTB tamamı çıkış BCF STATUS,RP0 ;Bank0 a geç CLRF PORTB ; PORTB yi temizle MOVLW B ;Wreg << MOVWF PORTB ;PORTB << Wreg LOOP BTFSC PORTA,0 ;PA0 = ON? ( Basılımı? ) GOTO LOOP ;PA0 = OFF MOVLW B ;Wreg << XORWF PORTB,F ;PORTB data tersi STP GOTO STP END Alıştırma 4-16 Şekil 4-86.da görüldüğü gibi Led leri mantıksal komutları kullanarak yapınız. LED ON ON 200ms ON ON LED ON ON ON ON 200ms LED ON ON 200ms ON ON ON ON ON ON 200ms Şekil 4-96 Alıştırma

127 PIC programlamanın temelleri 13 Aritmetik komutlar ( ADD, SUB komutları) (1) ADD komutları PIC te iki adet toplama komutu vardır. "ADDLW" sabit olan sayıyı W yazamacına toplama komutudur. ADDWF" ise dosyadaki sayıyı W yazmacına toplama komutudur. 1) Program 4-11 "30+129=159" matematiksel işlemini yapalım. Burada taşınacak bir değer yoktur çünkü hesaplama sonucu 255 içerisindedir. 2) Akış diyagramı Başla PORTB nin tamamı çıkış PORTA nın tamamını giriş yap PORTB yi temizle Carry biti temizle W reg << (30) W reg << W reg (129) PORTB << W reg Hayır PA0 : ON? YES W reg << STATUS PORTB << W reg Program sonu Şekil 4-97 Program 4-11 in akış diyagramı 116

128 PIC programlamanın temelleri 3) Program 4-11 listesi ;******************************************************************* ; Program 4-11 ( = 159) Taşıma biti yok ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC BSF STATUS,RP0 ;Bank 1 e geç MOVLW B ;TRISA data MOVWF TRISA ;PORTA tamamını giriş yap CLRF TRISB ;TRISB=0 PORTB tamamı çıkış BCF STATUS,RP0 ;Bank 0 a geç CLRF PORTB ;PORTB yi temizle BCF STATUS,C ;Carry biti temizle MOVLW D 30 ;Wreg << D 30 ADDLW D 129 ;W reg << MOVWF PORTB ;PORTB << Wreg LOOP BTFSC PORTA,0 ;PA0 = ON? ( Basılımı? ) GOTO LOOP ;PA0 = OFF MOVF STATUS,W ;Wreg << STATUS MOVWF PORTB ;PORTB << W reg STP GOTO STP ;Program sonu END Alıştırma 4-17 " =259".matematiksel işlemini yapan program yazınız. ( Dikkat edilecek olursa taşıma biti vardır. ) Alıştırma 4-18 "Alıştırma 4-16" daki programı aşağıdaki şekle göre değiştiriniz. Dikkat : Buton girişinde atlama vardır. Sadece taşıma bitini displayde nasıl gösterebiliriz? Bunu AND komutunu düşünerek bulunuz. 117

129 PIC programlamanın temelleri (2) İki bit bilginin toplanması Taşımayı kullanrak iki bitlik sayısal değeri toplayınız. ( Sekiz bitlik mikroişlemcilerde bile en fazla değer 255 olmaktadır. ) Soru : =37000 (61A8h + 2EE0h = 9088h) Program ) Düşünme yöntemi a) Her düşük bit değeri toplanmıştır (A8h) DL1 + ) (E0h) DL (88h) (Taşıma) b) Eğer taşıma varsa yüksek bite 1 ilave edilir (61h) DH1 + ) 1 (Carry) (62h) DH1 ( Not : Taşıma bu programda dikkate alınmaz.) c) Her yüksek bit toplanır (62h) DH1 + ) (2Eh) DH2 Hafıza (90h) DH1 61h DL1 DH2 DL2 AH AL A8h 2Eh E0h 90h 62h Sonuç Sonuç Şekil 4-98 İki bitlik sayının toplanması 118

130 PIC programlamanın temelleri 2) Akış diyagramı Başla PORTB nin tamamını çıkış PORTA nın tamamını giriş yap PORTB yi temizle Carry biti temizle DH1 << 61h DL1 << A8h DH2 << 2Eh DL2 << E0h W reg << DL1 + DL2 Carry? Hayır Evet DH1 << DH1 + 1 AL << W reg W reg << DH1 + DH2 AH << W reg PORTB << AL Hayır RA0 : ON Evet PORTB << AH Program sonu Şekil 4-99 Akış giyagramı 119

131 PIC programlamanın temelleri 3) Program 4-12 listesi ;******************************************************************* ; Program 4-12 ( = ) ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC DH1 EQU H 10 DL1 EQU H 11 DH2 EQU H 12 DL2 EQU H 13 AH EQU H 14 AL EQU H 15 BSF STATUS,RP0 ;Bank 1 e geç MOVLW B ;TRISA data MOVWF TRISA ;PORTA tamamını giriş yap CLRF TRISB ;TRISB=0 PORTB tamamını çıkış yap BCF STATUS,RP0 ;Bank 0 a geç CLRF PORTB ;PORTB yi temizle BCF STATUS,C ;Carry biti temizle MOVLW H 61 ;W reg << 61h MOVWF DH1 ;DH1 << W reg MOVLW H A8 ;W reg << A8h MOVWF DL1 ;DL1 << W reg MOVLW H 2E ;W reg << 2Eh MOVWF DH2 ;DH2 << W reg MOVLW H E0 ;W reg << E0h MOVWF DL2 ;DL2 << W reg MOVF DL1,W ;W reg << DL1 ADDWF DL2,W ;W reg << DL1 + DL2 BTFSC STATUS,C ;Carry bit? INCF DH1,F ;Carry = 1 >> DH1=DH1 + 1 MOVWF AL ;AL << W reg MOVF DH1,W ; ADDWF DH2,W MOVWF AH 120

132 PIC programlamanın temelleri MOVF AL,W MOVWF PORTB LOOP BTFSC PORTA,0 GOTO LOOP ;PA0 = OFF MOVF AH,W ;W reg << STATUS MOVWF PORTB ;PORTB << W reg STP GOTO STP ;Program sonu END (3) Çıkartma komutları PIC de iki adet çıkarma komutu vardır. Bunlar "SUBLW" ve "SUBWF" dir. "SUBLW" sabit olan sayıyı W yazamacına çıkarma komutudur. SUBWF" ise dosyadaki sayıyı W yazmacına çıkarma komutudur 1) SUBLW k Sekiz bitlik sabitten ( k literalden ) W yazmacının içeriği ikiye tamamlama yöntemi ile çıkarılır ve sonuç W yazmacına yazılır. k W yazmacı Şekil SUBLW W yazmacı 2) SUBWF f,d f yazmacından W yazmacı ikiye tamamlama yöntemi ile çıkartılır. Eğer d=0 ise sonuç W yazmacına d=1 ise f yazmacına yüklenir Memory f W yazmacı d=0 W yazmacı d=1 Memory f Şekil SUBWF 121

133 PIC programlamanın temelleri 3) Çıkarma yöntemi Örnek = 32 ( 38 in ikiye tamamlama yöntemi ile >> ) (70) + ) (218 >> -38) (32) (taşıma) Örnek = -1 (38 in ikiye tamamlama sı >> ) (37) + ) (218 >> -38) (255 >> -1) (taşıma yok) Başla PORTB nin tamamını çıkış PORTA nın tamamını giriş yap 4) Program 4-13 "70 38 =32" işlemini yapalım. PORTB yi temizle Carry biti temizle W reg << D 38 W reg << D 70 W reg PORTB << W reg Hayır PA0 : ON? Evet W reg << STATUS PORTB << W reg Program sonu Şekil Program 4-13 ün akış diyagramı 122

134 PIC programlamanın temelleri 5) Program 4-13 listesi ;******************************************************************* ; Program 4-13 ( = 32 ) Carry bit ;******************************************************************* LIST P=16F84,R=DEC INCLUDE P16F84.INC BSF STATUS,RP0 ;Bank1 e geç MOVLW B ;TRISA data MOVWF TRISA ;PORTA tamamını giriş yap CLRF TRISB ;TRISB=0 PORTB tamamını çıkış yap BCF STATUS,RP0 ;Bank0 a geç CLRF PORTB ;PORTB yi temizle BCF STATUS,C ;Carry biti temizle MOVLW D 38 ;Wreg << D 38 SUBLW D 70 ;W reg << MOVWF PORTB ;PORTB << Wreg LOOP BTFSC PORTA,0 ;PA0 = ON? ( Basılı mı? ) GOTO LOOP ;PA0 = OFF MOVF STATUS,W ;Wreg << STATUS MOVWF PORTB ;PORTB << W reg STP GOTO STP ;Program sonu END Alıştırma 4-19 "37 38 = - 1 (255) ". matematiksel işlemini yapalım. ( Taşıma biti yok ) Alıştırma 4-20 " = ". Matematiksel işlemini yapalım ( 2 bitlik bir bilgi ) 61A8 2EE0 = 32C8 Not : 4-12 programına göz atalım. İlkönce, her düşük byte işlemini tamamlamıştır. ( taşıma biti yok.) 123

135 PIC programlamanın temelleri 6) SUB komutunu çeşitli şekillerde karşılaştırılması a) SUBLW k W <= k F <= k SUBLW k MOVF F,W BTFSC STATUS,C SUBLW k ; N F >> W GOTO NEXT ;W <= k BTFSC STATUS,C GOTO NEXT ; F <= k W > k F > k SUBLW k MOVF F,W BTFSS STATUS,C SUBLW k ; N F >> W GOTO NEXT ;W > k BTFSS STATUS,C GOTO NEXT ; F > k k > W register Z=0,CY=1 k = W register Z=1,CY=1 k < W register Z=0,CY=0 b) SUBWF F,d F > W register F = W register F < W register Z=0,CY=1 Z=1,CY=1 Z=0,CY=0 Alıştırma 4-21 Yandaki şekilde görülen LED lerin programını yapınız. ( SUB komutunu kullanınız.)

136 PIC Programlama uygulamaları Bölüm 5 PIC Programlama uygulamaları 1. Yedi segment kod çözücü 2. Röle kontrol 3. İşlemsel Yükselteçler ( OP Amp ) 4. D / A konvertör 5. A / D konvertör 6. Seri iletişim ( RS 232C ) 7. Step motor kontrolü 8. DA motor kontrolü 9. Kesmeler 10. Çizgi takip eden robot kontrolü 11. Ses programlama

137 Yedi segment kod çözücü ( Segment decoder ) 1 YEDİ SEGMENT KOD ÇÖZÜCÜ ( Segment decoder ) (1) YEDİ SEGMENT KOD ÇÖZÜCÜLER PIC i kullanarak yedi LED segmentli kod çözücü yapalım. Günümüzde bunun hazır entegreleri vardır ve bunlar 7447 ve 9368 dir. Şekil.5-1 de 7447 nin iç yapısı görülmektedir. Şekilde görüldüğü gibi bu kod çözücü tamamen lojik devrelerden meydana gelmiştir. Şekil nin paket ve iç yapısı Biz burada bu yedi segmentli kod çözücüyü programla yapacağız. Bunun için uygulama devresi şekil 5-2 de verilmiştir. +5V 10k x 2 PIC16F84 PA3 PB0 PA2 PB1 PA1 PB2 PA0 PB3 PB4 PB5 PB6 MCLR PB7 300 X 8 a b C d e f g P e f d g a C P b 22pF OSC1 OSC2 7segment LED anode common +5V +5v 10k x 2 PIC16F84 PA3 PB0 PA2 PB1 PA1 PB2 PA0 PB3 PB4 PB5 PB6 MCLR PB7 300 X 8 a b C d e f g P e f d g a C P b 22pF OSC1 OSC2 7segment LED anode common Şekil. 5-2 Yedi segmentli kod çözücü devre şeması 125

138 126

139 127

140 128

141 129

142 130

143 Röle kontrol (Relay control ) & SSR ( Solid State Relay ) 2 RÖLE KONTROL ( Relay control ) Bu bölümde de PIC ile role kontrolünün nasıl yapıldığını öğreneceğiz. Elektronik devrelerde küçük rölelerden çok çeşitli tipleri kullanılmaktadır. Büyük elektrik güçleri olan devrelerde ise güç röleleri kullanılmaktadır., Ayrıca bobin ile kontak arasında hiç bir bağlantı olmayan tamamen ışık ile kontrol eden rölelerde vardır. Bunlar SSR ( Solid State Relays ) adı verilir. Normal rölelerde a, b ve c kontak noktalarıdır ve çok amaçlı kullanılmaktadırlar. Kontrol ünitelerinde ihtiyaç sayısınca kontak bulunduran röleler tavsiye edilir. Rölenin iç şekli ve kontak noktalarını gösteren şemalar Şekil 5-7 de gösterilmiştir. a kontak c kontak b kontak Röle bobini Şekil 5-7 Rölenin iç şekli ve kontak noktalarının şeması (1) MEKANİK RÖLE Rölenin çalışması için bir LED den daha fazla bir akım gerekmektedir. Bu nedenle PIC in uçlarına direk olarak röle bağlayamayız. PIC ile bir röle kontrolü yapmak istediğimizde aşağıdaki şekilde ( Şekil 5-8 ) görüldüğü gibi transistor kullanmalıyız. 24v DC Relay PORTB 1k Darlington transistor LED Şekil 5-8 Rolenin kumandası 130

144 Röle kontrol (Relay control ) & SSR ( Solid State Relay ) 1) Röle deney devresi 10kx3 PA0 PIC16F84 PB7 +24v NO2 C2 PA1 PA2 PB6 PB5 PB4 NC2 NO1 C1 10k PB3 PB2 NC1 PB1 MCLR PB0 1k 4MHz GND +5V OSC1 OSC2 +24v NO2 C2 MCLR NC2 NO1 CLOCK DATA C1 NC1 1k +24v Şekil 5-9 Röle deney devresinin şeması RESET SSR(PB3) PIC Yazıcı Role (PB1) SSR(PB2) Bağlantı board (PB1) PA2 PIC PA1 PA0 Role (PB0) Bağlantı board (PB0) Role için DC24V Şekil 5-1 Röle deney boardunun görünüşü 131

145 Röle kontrol (Relay control ) & SSR ( Solid State Relay ) b Kontak Deney boarduna c Kontak a Kontak b Kontak c Kontak a Kontak Şekil 5-11 Bağlantı boardı görünüşü 2) İletken bağlantısı (a) Kullanılan aletler a) Uygulama boardu 1 b) Bağlantı boardu 1 c) Güç kaynağı 1 d) AC kablo 1 e) Soketli lamba duyu 1 AC220V b a Lamba duyu c Röle bağlantı bordu Şekil 5-12 Uygulama devre şeması 132

146 Röle kontrol (Relay control ) & SSR ( Solid State Relay ) Röle uygulama devresi Röle bağlantı bordu PIC Yazıcı PB1 PB0 DC30V AC220V Kırmızı Siyah +15 GND -15 5V GND Güç kaynağı Lamba duyu Şekil 5-13 Uygulamanın iletken bağlantı şeması 3) Program yapımı Alıştırma 5-1 PA0 butonuna basıldığında lambanın yanmasını sağlayan programı akış diyagramı ile birlikte yapınız. Alıştırma 5-2 PA0 butonuna basıldığında lambanın yanmasını, PA1 butonuna basıldığında da lambanın sönmesini sağlayan programı akış diyagramı ile birlikte yapınız. Alıştırma 5-3 PA0 butonuna basıldığında lambanın 0.5 saniye aralıklarla yanıp sönmesini, PA1 butonuna basıldığında da lambanın sürekli sönmesini sağlayan programı akış diyagramı ile birlikte yapınız. 133

147 Röle kontrol (Relay control ) & SSR ( Solid State Relay ) (2) SSR ( Solid State Relay ) 1) SSR SSR (Solid State Relays) bobin ile kontak arasında hiç bir bağlantı olmayan tamamen ışık ile kontrol eden rolelerdir. vardır. AA güç kontrolü için oldukça kullanışlıdır. Giriş ve çıkış birimleri tamamen birbirinden ayrıdır ve sadece foto ışık ile birbirlerine etki ederler. Sadece foto triyakın LED ini ON off yapmak suretiyle AA gücünü kolaylıkla kontrol edebiliriz. Bu nedenle PIC portları ile bu LED i kontrol etmek suretiyle AA gücünüde kontrol etmiş oluruz DA(5V) RL(AA) Foto triyak Triyak 2) İletken bağlantısı Şekil 5-14 SSR ( Solid State Relay ) (a) Kullanılan aletler a) Uygulama boardu 1 b) SSR board 1 c) AA kablo 1 d) Soketli lamba duyu 1 AC220V PORTB SSR Lamba duyu Şekil 5-15 Uygulama devre şeması 134

148 Röle kontrol (Relay control ) & SSR ( Solid State Relay ) Röle deney devresi SSR board PIC Yazıcı PB2 AC 220V Lamba duyu Şekil 5-16 Deneyin iletken bağlantı şeması 3) Program yapımı Alıştırma 5-4 PA0 butonuna basıldığında lambanın yanmasını sağlayan programı akış diyagramı ile birlikte yapınız. Alıştırma 5-5 PA0 butonuna basıldığında lambanın yanmasını, PA1 butonuna basıldığında da lambanın sönmesini sağlayan programı akış diyagramı ile birlikte yapınız. Alıştırma 5-6 PA0 butonuna basıldığında lambanın 0.5 saniye aralıklarla yanıp sönmesini, PA1 butonuna basıldığında da lambanın sürekli sönmesini sağlayan programı akış diyagramı ile birlikte yapınız. Alıştırma 5-7 Bu tür uygulamaları yaptıktan sonra mekanik röleler ile SSR arasındaki görebildiğiniz farkları açıklayınız. 135

149 İşlemsel Yükselteçler ( Op-amp ) 3 İşlemsel Yükselteçler ( Operational amplifier Op-amp) (1) İŞLEMSEL YÜKSELTEÇLER İşlemsel yükselteçlerin ortak adları Op-amp dır. Burada biz sürekli olarak Op-amp ismini kullanacağız. Op-amp 20 veya 30 bipolar transistor veya FET lerden meydana gelmiş tamamlayan ( Iintegrated Circuit IC ) devreler olup düşük frekanslı sinyaller için çok yüksek kazanca sahip yükselteçlerdir. Op-amp ın toplama, çıkarma dalga formunu değiştirmek için diferansiyel ve integral olarak, sinyal üreteci olarak, uygun dış devre tasarımları yapımında olmak üzere çok zengin bir kullanım alanı vardır IC ler siyah birer kutu gibi çok çeşitli devrelerin yapımında oldukça faydalı elemanlardır. Op-ampların devre sembolu şekil 5-17 de gösterilmiştir. G ortak toprak ucu, +V ve V Besleme gerilimi uçlarıdır ve bu uçlar devre şemaları çizilirken karmaşık bir görüntüden kaçınmak için genellikle gösterilmezler ancak unutulmamalıdırlar çünkü Op-amplar besleme olmadan çalışmazlar. Sonuç olarak ta beslemenin bir ucu ve giriş gerilimin bir ucu ortak toprağa bağlanmalıdır. +V Vi- Vi+ A Vo A > 0 -V G Şekil 5-17 Op-amp devre sembolü Vi- ucundaki bir giriş Vo ucunda yükseltilmiş ve ters çevrilmiş olarak görünür. Vi+ ucundaki bir giriş ise Vo da yükseltilmiş fakat terslenmeden gözükür. Sonuç olarak Op-amplarda iki giriş ucundan Vi- ters çeviren uç, Vi+ ters çevirmeyen uç olarak adlandırılır. Bu ilişki aşağıdaki eşitlikle belirtilir. Vo = A (Vi+- Vi-) A>0 durumunda A yükselteç kazancı apaçık şekilde çıkış değerini yükseltir, (Vi+ - Vi-) değeri yaklaşık 0 ( sıfır ) a eşit olmalı ve potansiyel farkı bulunmaması gerekir. Eğer herhangi bir potansiyel fark var ise Op-amp doyuma ulaşmış olur ve pozitif veya negatif gerilim değişmez. Op-ampların düzenli olarak çalışabilmesi için bu nokta çok önemlidir ve Op-amp doyuma ulaşmadığı zaman iki giriş içten kısa devre olmuş gibi olur, aralarındaki potansiyel fark 0 ( sıfır ) dır. 136

150 İşlemsel Yükselteçler ( Op-amp ) Gerçekte bir elektrik akışı olmadığından bu duruma virtual short (IMAGINARY SHORT) veya virtual ground olarak adlandırılır. Yukarıda da açıklandığı gibi Op-ampların kazançları o kadar yüksek ki yükselteç olarak kendi üzerlerinde kullanılamazlar. Çünkü çok küçük bir girişle kolayca doyuma ulaşırlar ve buda hassas ayarlarla yapıldığından dolayı karakteristik bir özelliktir. Sonuç olarak Op-ampı yükselteç olarak kullandığımızda dış eksi geri beslemeyi ona bağlamalıyız ki kazanç elde edip ayarlama yapabilelim. (2) TERSLEYEN YÜKSELTEÇ DEVRESİ İdeal bir yükselteç olarak Op-amp aşağıdakilere sahip olmalıdır. 1) Yükseltme faktörü çok büyüktür ( A=10 10 ) 2) Frekans genişliği sonsuzdur ve her frekansta çalışır. 3) Giriş empedansı çok büyüktür. 4) Çıkış empedansı çok küçüktür. 5) Sessizdir ve giriş sıfır olduğunda çıkışta sıfır olur. 6) Deep negative feedback can be applied steadily. Op-ampı sabit yükseltme faktörü ile yükselteç olarak kullandığımız zaman, ya tersleyen - yükselteç yada terslemeyen yükselteç olur. (3) TERSLEYEN YÜKSELTEÇ DEVRESİ ( Reverse amplifier circuit ) Rf Rs i ei i Rc eo Şekil 5-18 Giriş polaritesini tersleyerek çıkış polaritesi yapan yükselteç devresi 1) Tersleyen yükseltecin yükseltme faktörü Şekilde görüldüğü gibi devrede Rs giriş direnci Rf ise geri besleme direncidir. Op-amp ın iki girişi arasında potansiyel fark yoktur ve hayali kısa devre durumundadır. Negatif girişin değeri 0V. sıfırdır. 137

151 İşlemsel Yükselteçler ( Op-amp ) Bu durumda giriş gerilimin ei değeri Rs direncinden geçen akımla ilişkili olarak aşağıdaki eşitliği yazabiliriz. ei = Rs I (1) Devreden geçen i akımı once Rs giriş direncinden geçerek Op-amp yükseltecin içinden geçmek yerine Rf geri besleme direncinden geçer. Çünkü yükseltecin giriş direnci çok yüksektir. Böylece aşağıdaki eşitliği yazabiliriz. eo = -Rf I (2) formül (1) ve (2) den çıkış gerilimini giriş gerilimine orantılarsak tersleyen yükseltecin yükseltme faktörünü ( A ) bulabiliriz. A = eo / ei = -Rf I / Rs I = - Rf / Rs 2) Tersleyen yükselteç devresine uygulama (a) Kullanılan aletler a) Op-amp uygulama seti 1 b) Voltmetre veya dijital avometre 1 veya 2 (b) Kullanılan malzemeler a) Direnç 1/4W 5.1k 1 b) Direnç 1/4W 10k 2 c) Direnç 1/4W 20k 1 Uygulama devresini uygulama borduna kurarak ölçü aletlerini bağlayıp ölçüm yapılacak devreye 10V - +10V uygulayınız. Çıkış gerilimini ölçerek grafiğini çiziniz. (c) Çıkış geriliminin ölçülmesi a) Potansiyometreyi çevirin ve giriş gerilimini 10V dan +10V kadar çeşitli aralıklarda değiştirerek her değişimde çıkış gerilimini ölçüp kayıt ediniz. Grafik çiziminin kolay ve daha güzel görünmesi için bu aralıkların birer volt olması tavsiye edilir. 138

152 İşlemsel Yükselteçler ( Op-amp ) b) Ölçüm yapılacak uygulama devresi. +15V 20k 10k +15V -15V 5.1k -15V 10k Şekil Op-amp uygulama devresi c) Ölçme sonuçlarının kayıt edileceği tablo Giriş gerilimi [V] Çıkış gerilimi[v] Giriş gerilimi [V] Çıkış gerilimi[v] Giriş gerilimi [V] Çıkış gerilimi[v] 139

153 İşlemsel Yükselteçler ( Op-amp ) Giriş Çıkış grafiği 140

154 İşlemsel Yükselteçler ( Op-amp ) (4) TERSLEMEYEN YÜKSELTEÇ DEVRESİ ( Non-reverse amplifying circuit ) Rf Rs ei Ri eo Şekil 5-20 Çıkış gerilimiyle giriş gerilimi aynı olan yükselteç 1) Terslemeyen yükselteçlerin yükseltme faktörü Negatif giriş gerilimi çıkış gerilimi eo ve Rf direnci ile Rs direncinin Rs ye bölünmesinden oluşur. ei olarak adlandırılan negatif giriş gerilimi pozitif giriş gibi görünür çünkü içte hayali kısa devre olmuş gibidir. Böylece aşağıdaki formülü yazabiliriz. ei = Rs / (Rs+Rf) eo Buradan da çıkış gerilimini giriş gerilimine orantılarsak tersleyen yükseltecin yükseltme faktörünü ( A ) bulabiliriz. A = eo / ei = (Rs + Rf) / Rf = 1 + (Rf / Rs) Bir başka ifadeyle Buradan eo = irs + irf dir. i = ei / Rs ise eo = ( ei /Rs ) x Rs + ( ei /Rs ) x Rf. eo = ei ( 1 + Rf / Rs ) bulunur. A = eo / ei den A = 1 + ( Rf / Rs ) bulunur. 2) Terslemeyen yükselteç devresine uygulama (a) Kullanılan aletler a) Op-amp uygulama seti 1 b) Voltmetre veya dijital avometre 1 veya 2 141

155 İşlemsel Yükselteçler ( Op-amp ) (b) Kullanılan malzemeler a) Direnç 1/4W 10k 2 b) Direnç 1/4W 20k 1 Uygulama devresini uygulama borduna kurarak ölçü aletlerini bağlayıp ölçüm yapılacak devreye 10V - +10V uygulayınız. Çıkış gerilimini ölçerek grafiğini çiziniz. (c) Çıkış geriliminin ölçülmesi a) Potansiyometreyi çevirin ve giriş gerilimini 10V dan +10V kadar çeşitli aralıklarda değiştirerek her değişimde çıkış gerilimini ölçüp kayıt ediniz. Grafik çiziminin kolay ve daha güzel görünmesi için bu aralıkların birer volt olması tavsiye edilir. b) Ölçüm yapılacak uygulama devresi. 20k 10k +15V + -15V 10k -15V Şekil 5-21 Op-amp uygulama devresi c) Ölçme sonuçlarının kayıt edileceği tablo Giriş gerilimi [V] Çıkış gerilimi [V] Giriş gerilimi [V] Çıkış gerilimi [V] Giriş gerilimi [V] Çıkış gerilimi [V] 142

156 İşlemsel Yükselteçler ( Op-amp ) Giriş Çıkış grafiği 143

157 İşlemsel Yükselteçler ( Op-amp ) (5) KARŞILAŞTIRICI ( Comparator ) OLARAK KULLANILMASI 1) Karşılaştırıcı Burada iki giriş gerilimi karşılaştırılır. Hangisinin büyük hangisinin küçük olduğu kararı bu şekil kullanma ile anlaşılabilir. Girişlerden birine referans gerilimi, diğerine de karşılaştırılacak gerilim uygulanır. Daha sonra sonuç çıktı olarak alınabilir. V1 V2 Vo Şekil 5-22 Karşılaştırıcı Terslenmiş veya terslenmemiş iki farklı yükselteç devresinde direnç yoktur ve direk olarak çıkıştan girişe doğru geri besleme yapılır. Bu nedenle çıkış gerilimi girişe bağlı olarak değiştiğinden onbinlerce yükseltme faktörüne sahiptir. Onbinlerce çeşit giriş gerilimide bir o kadar çıkış gerilimi meydana getirir.. Fakat pratik uygulamalarda bu kadar fazla sayıda gerilim elde edilmez ve gerçek çıkış gerilimi kararlı kaynak gerilimiyle doyumda olur. Çıkış gerilimi ile giriş gerilimi arasındaki ilişki aşağıdaki gibi olur. Eğer V1 > V2, Vo = negatif gerilim olarak doyumdadır. Eğer V1 < V2, Vo = pozitif gerilim olarak doyumdadır. 2) Karşılaştırıcı uygulaması (a) Kullanılan aletler a) Op-amp uygulama seti 1 b) Voltmetre veya dijital avometre 1 veya 2 (b) Kullanılan malzemeler a) Direnç 1/4W 1k 1 144

158 İşlemsel Yükselteçler ( Op-amp ) Uygulama devresini uygulama borduna kurarak ölçü aletlerini bağlayıp ölçüm yapılacak devreye 10V - +10V uygulayınız. Çıkış gerilimini ölçerek sonuç tablosunu doldurunuz. (c) Çıkış geriliminin ölçülmesi a) Potansiyometreyi çevirin ve giriş geriliminin 1V. dan +9V. a kadar değiştirerek çıkış gerilimini ölçünüz. b) Potansiyometreyi çevirin ve giriş geriliminin +9V. dan 1V. a kadar değiştirerek çıkış gerilimini ölçünüz. Yukarıdaki iki çeşit uygulamayıda yaparak devre çalışması yapıp ölçümleri gerçekleştiriniz. c) Ölçme devresi 1 +15V + -15V +15V + +15V 10k -15V 1k 20k -15V Şekil 5-23 Ölçme devresi 1 d) Ölçüm sonucu 1 Giriş gerilimi [V] Çıkış gerilimi[v] Giriş gerilimi [V] Çıkış gerilimi [V] 145

159 İşlemsel Yükselteçler ( Op-amp ) e) Ölçme devresi 2 +15V 10k 20k -15V +15V + +15V + -15V 1k -15V Şekil 5-24 Ölçme devresi 2 f) Ölçüm sonucu 2 Giriş gerilimi [V] Çıkış gerilimi [V] Giriş gerilimi [V] Çıkış gerilimi [V] Alıştırma 5-8 Aşağıdaki tersleyen yükseltecin yükseltme faktörünü bulunuz. 25k 5k in out Cevap 146

160 İşlemsel Yükselteçler ( Op-amp ) Alıştırma 5-9 Aşağıdaki terslemeyen yükseltecin yükseltme faktörünü bulunuz 45k 5k out Cevap in (6) Voltaj takip devresi 1mA 1mA 1mA 5k 5V 5k 4V 20k 5k 5V (a) (b) (c) Voltaj takibi Şekil 5-25 Voltaj takibi Şekil 5-25 (a),(b) deki voltmetrede dirençli karşılaştırma devresinin çıkış gerilimini görülmektedir. Ortak direncin 4k Ohm olduğundan voltmetrenin 20k Ohm iç direnci de dikkate alındığında çıkış gerilim değeri 80 % oranında daha gerçeğe yakın olur Bunun gibi dışarıdan bağlanan devreler yükseltecin çıkış değerini etkilemezler. Empedans devreler bu dış devrelerin arasındaki boşluğa eklenirler. Şekil 5-25(c) deki devre Op-amp kullanılarak voltaj takip edene bir örnektir. 147

161 DA konvertör 4 DA KONVERTÖR (1) DA KONVERTÖR PRENSİBİ Most physical quantities in nature are continuous (analog quantities). On the other hand, digital technology deals with discrete quantities, as computer cannot directly handle continuous quantities. For a computer to handle analog quantities, the following process becomes necessary: AD dönüşüm + Digital işletim + DA dönüşüm. analog değeri AD dönüşümü Dijital işletim sistemi DA dönüşümü analog değeri Şekil 5-26 DA, AD dönüşümü şeması DA konvertör converts binary numeric data held in the digital output device to an analog quantity. DA konvertörleri R-2R ladder devresi ile öğreneceğiz. MSB LSB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 2R 2R 2R 2R 2R 2R 2R 2R R R R R R R R 2R Analog OUT Şekil 5-27 R-2R leder devresi 148

162 DA konvertör Vout aşağıdaki eşitlikle bulunur. Vout Vo PB7 = PB6 + 2 PB5 + 4 PB4 + 8 PB PB PB PB0 128 ( Vo = 5V, PB0 PB7 : 0 or 1 ) Örneğin, B portundaki çıktı ' ' olduğunda bunun anlamı çıkış gerilimi 2.5 Volttur. Vout = = 2.5 Alıştırma 5-10 Dijital giriş F0h( heksedesimal sayı ) olduğunda analog çıkış gerilimi ( Vout ) kaç volttur. Hesaplayınız. Cevap Alıştırma 5-11 Çıkış geriliminin minimum değeri ( Vmin ) nedir? Cevap 149

163 DA konvertör (2) DENEY 1 1) DA konverterin çıkışı DA konvertörün çıkışının ölçülmesi ve hesaplanan değerle karşılaştırılması +12v Comparater 10k +5V 10k PIC16F84 LM358 ULN v PA0 PB0 PA1 PA2 PB1 PB2 PB3 PB4 10k PB5 GND +5V 4MHz MCLR OSC1 OSC2 PB6 PB7 Jumper LED x X 8 +5v +5v MCLR CLOCK DATA +5v +12v 4.7uF 20k 20k 20k 20k 20k 10k 10k 10k 10k +12v LM358 Digital OUT Analog in +5v GND GND MAX662A 4.7uF 20k 10k 20k 10k 20k 10k 0.22uF 0.22uF 20k D-D Converter(MAX662A) R-2R D/A Converter Şekil 5-28 DA konvertör deney devre şeması 2) DA konvertörün deneyi (a) Kullanılan aletler a) DA konvertör deney devresi 1 b) Giriş / Çıkış boardı 1 c) Digital Avometre 1 150

164 DA konvertör Deney devresini kurunuz ve ölçme boardunu takınız. PA1 butonuna basıp giriş değerini değiştirerek çıkış gerilimini ölçünüz. ( 4-13 deki programı kullanınız. ) Çıkış gerilimlerini ölçüp grafiğini çiziniz. LED Op-amp PIC PA2 PA1 ULN2803 Yazıcı Ext çıkış Kontak boardu RESET PIC R-2R DA konvertör Şekil 5-10 DA konvertör deney boardunun görünümü DA konvertör deney boardu Kontak boardu AD PIC Yazıcı DA çıkış +5V GND Digital Avometre Şekil 5-11 Deneyin iletken bağlantısı 151

165 DA konvertör Giriş değeri Çıkış gerilimi Decimal DATA Binary DATA Hexadecimal DATA Hesaplanan değer [V] Ölçülen değer [V] h 0.0V h V h V

166 DA konvertör Giriş Çıkış grafiği 153

167 DA konvertör (3) TESTERE DİŞLİ DALGA YAPIMI DA konvertör ile testere dişli dalga yapacağız. v[v] t[s] Şekil 5-12 Testere dişli dalga 1) Program yapımı Başla PORTB nin 255 tamamını çıkış yap PORTB yi temizle 0 0 PORTB << PORTB + 1 Şekil 5-13 Akış diyagramı 2) Akış diyagramına göre testere dişli dalga programını yapınız. 3) DENEY 2 (a) Kullanılan aletler a) DA konvertör deney devresi 1 b) Giriş / Çıkış boardı 1 c) Osilaskop 1 154

168 DA konvertör Deney devresini kurarak osilaskobu bağlayınız. Testere dalga programını yapınız ve testere dalgayı gözlemleyerek dalga şeklini çıkarınız. Dalganın şeklinden de frekansını hesaplayınız. DA konvertör deney boardu Kontak boardu AD PIC Writer DA Çıkış +5V GND Şekil 5-14 Deneyin iletken bağlantısı Volt ( ) V/DIV Zaman ( ) s/div 155

169 DA konvertör Alıştırma 5-12 Üçgen dalga programını yapınız ve üçgen dalgayı gözlemleyerek dalga şeklini çıkarınız. Dalganın şeklinden de frekansını hesaplayınız. v[v] t[s] Volt ( ) V/DIV Zaman ( ) s/div 156

170 AD konvertör 5 AD KONVERTÖR (1) AD KONVERTÖR PRENSİBİ A CPU binary digit olan 1 ve 0 bilgileri işleyebilir. Mikrobilgisayarlar veya kişisel bilgisayarlar ses gibi analog bir sinyali işleyebilmesi için bunu öncelikle digital sinyale çevirmek zorundadır. Bunun için analoğu digitale çeviren devreler mevcuttur. Biz bu devrelerede AD ( Çevirici ) konvertör devresi diyoruz. Analog sinyal ilk önce örnekleme haline getirilir. Daha sonra bu sinyal AD çeviriciden çıkış sinyali olarak alınır. Bu örnekleme durumu digital sinyal çevriminin tamamlanmasına kadar sabit seviyede durur. Analog sinyal Sample and Miktarının Dijital sinyal hold circut belirlenmesi fm Ts Ts Ts Şekil 5-15 A/D konvertör akışı A/D konvertörde ilk durum analog sinyallerinin sayılaştırıldığı bir örnekleme durumudur. Örnekleme pulslerinin frekansı örnekleme frekansı olarak adlandırılır. Örnekleme frekansı ( Sayısı ) ne kadar fazla olursa o derece digital bilgi sayısıda fazla olur. Fm giriş analog sinyallerinin frekansı ve fs örnekleme frekansı na oranı fs >= 2fm kadar olması yeterlidir. fs >= 2fm tarafından sunulan bu ilişki örnekleme teoremidir. Giriş analog sinyallerinin frekansının yarısını geçmemelidir. 157

171 AD konvertör The sample-and-hold circuit is not used in our experiment. Örnek frekans sampling cycle telefon 8 khz 125.0us compact disk 44.1kHz 22.7us Mikrofon için giriş olacak analog sinyalin en yüksek frekansı çoğu kez bilinmeyendir. Yüksek frekanslı sinyallerde örnekleme teorisinin kullanılabilmesi için frekans düşürücü filitreler kullanılmalıdır. Örnek analog sinyalleri sayılaştırma yolu ile digital sinyallere dönüştürülür. Elde edilmek istenen digital sinyalin bit sayısı kadar analog sinyallerin amplitude eşit genişlikli kısımlara ayrılması gerekir. Örneğin 3 bit digital sinyalin kazanılması için analog sinyal seviyesinin 8 kısıma ayrılması gerekir. 3 bit sinyal 8 nümerik değer ile ifade edilebilir /8 2/8 3/8 4/8 5/8 6/8 7/8 1 [V] Şekil 5-16 Quantization Maximum Quantization error = 1 / 2 n [%] ( Örnek şekil /8 = 12.5[%] ) 158

172 AD konvertör (2) AD konvertör tipinin ardarda tahmin prensibi PA0 PB7 PIC16F84 PB0 DA konvertör Karşılaştırıcı Analog giriş Şekil 5-17 AD konvertör tipinin ardarda tahmin prensibi Giriş gerilimi zaman Şekil 5-18 Değişim karakteristiği İlkönce, en yüksek pozisyon biti 1 ile setlenir daha sonra analog giriş değeri ile DA değişim değeri karşılaştırılır. Eğer giriş değeri yüksek ise bu pozisyon 1 e setlenir aksi takdirde 0 olur. Sonra bir sonraki bit 1 olarak denenir ve aynı işlem takip edilir. Buna göre 1 veya 0 olduğu tesbit edilir. Bu işlem yüksek bitlerden düşük bitlere doğru devam eder. Bütün bitlerin set veya reset ( 1 veya 0 ) oldukları tesbit edildikten sonra DA konvertörün giriş bilgisi AD konvertör değeri olarak bulunur. 159

173 AD konvertör Şekil 5-16 deki örnek 1) PORTB >> DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) Bit7 = 1 2) PORTB >> DA konvertör gerilimi > Analog giriş Karşılaştırıcı >> 1(PA0) Bit6 = 0 3) PORTB >> DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) Bit5 = 1 4) PORTB >> DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) Bit4 = 1 5) PORTB >> DA konvertör gerilimi > Analog giriş Karşılaştırıcı >> 1(PA0) Bit3 = 0 6) PORTB >> DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) Bit2 = 1 7) PORTB >> DA konvertör gerilimi > Analog giriş Karşılaştırıcı >> 1(PA) Bit1 = 0 8) PORTB >> DA konvertör gerilimi < Analog giriş Karşılaştırıcı >> 0(PA0) Bit0 = 1 Dijital değer =

174 AD konvertör (3) PROGRAM YAPIMI 1) AD konvertör programının görünümü LED(PB7 PB0) Op-amp PIC Yazıcı PA2 PIC PA1 ULN2803 Ext connector RESET Fix : test değeri remove : Dış giriş Gerilim test değeri Şekil 5-19 AD konvertör deney boardu (a) Programın işleyişi PA1 butonuna basınız AD dönüşümün başlaması ( LED de sonuç görülür ) AD dönüşüm devam eder ( Test değer yerini döndürün ve değişken giriş değerleri elde edin ) Şekil 5-20 AD konvertör programının işleyişi 161

175 AD konvertör (b) Programın akış diyagramı Başla 1 PORTA ( giriş ) PORTB ( çıkış ) Rotate right to MASK (1bit) PORTB << PORTB veya BIT Hayır PA1 = 0? COUNT << COUNT - 1 Evet COUNT << 8 COUNT = 0? Hayır BIT << PORTB << MASK << Evet TIMER 40ms TIMER 0.1ms ERASE Hayır PA0 = 0? DA < Giriş Evet ERASE PORTB << PORTB AND MASK RETURN Carry << 0 Rotate right to BIT (1bit) Carry << 1 1 Şekil 5-21 AD konvertör programının akış diyagramı 162

176 AD konvertör (c) Program kontrolü a) Programı yaptıktan sonra DA / AD konvertör deneme boardunda deneyiniz. b) Test değerinin değiştirerek değişik değerler elde ediniz. Alıştırma 5-13 LED de görülen gerilim değeri elde ederek gerilimin ne kadar olduğunu bulunuz. İfade [V] Alıştırma 5-14 AD konvertör programını değiştirerek LED de değer gösterimini yavaşlatınız. Zamanlayıcı ( Timer ) değiştirilecek ve bu şekilde LED ler yavaş yanarak AD değişimin işlemini daha kolay anlayabileciğiz 163

177 Seri iletişim ( RS-232C ) 6 Seri iletişim (RS-232C) (1) Bilgi iletişiminin ana hatları 1) Bilgi iletişim sistemi Bilgi iletiminde düzenli iki sistem mevcuttur. Birisi paralel sistem diğeri ise seri sistemdir. Paralel sistem teşkil eden datanın bit sayısının komünikasyon hattını kullanır. Seri sistem ise iletişimde komünikasyon hattının sadece birini kullanır. Transmitter paralelden seri geçişe dataların her bir bite parçalanması için gereklidir. ( Paralel-Seri dönüşüm ). Receiver ise bilgileri toplama için gereklidir. ( Seri-Parallel dönüşüm ) Şekil 5-22 Paralel komünikasyon sistemi Şekil 5-23 Seri komünikasyon sistemi Paralel sistemlerde bilgi iletimi seri iletimlere göre çok daha fazladır. Paralel komünikasyon hat sayısı seri sistemlere göre çok çok daha fazladır. Bu yüzden uzun mesafeli komünikasyonda seri sistem daha avantajlıdır. 164

178 Seri iletişim ( RS-232C ) 2) Transmisyon sinyal sistemi Burada dijital sinyallerin nasıl sinyal hattına aktarıldığını açıklayacağız. Alçak band ( base-band ) transmission 1 ve 0 sinyal için atama yapılmış gerilim sistemidir. Bu sistemde sadece bir band kullanımına izin verilmektedir. Sadece bir tek cihaz bilgi gönderebilir. Geniş band ( broad-band ) transmission ise yüksek frekans 0 ve 1 için düşük frekansa atanmış sistemdir. Base-band ın tam tersidir. Sanal olarak bir çok kanala bölünmüştür. Her kanalın kendine ait taşıyıcı frekansı vardır. Bu farklı frekanslar sayesinde aynı anda bir çok farklı bilgi birbirine karışmadan iletilebilir (a) base-band (b) broad-band Şekil 5-24 Transmission sinyal sistemi 3) RS232C RS232C Amerika Birleşik devletleri endüstriyel elektrik kurumunca ( Electric Industrial Association ) standartlaştırılmıştır. RS232C nin nedeni ise kişisel bilgisayarlara terminallerin ve modemlerin kolayca bağlanmasıdır. RS232C nin gerilimide standarttır ve artı eksi 12 Volttur. ( Artı eksi 3V dan fazlasıylada çalışabilir. ) 0V. İlede bağlantısını kesebiliriz V GND -5-12V Şekil 5-25 RS232C nin gerilim durumu 165

179 Seri iletişim ( RS-232C ) Özel IC kullanılarakta artı 5V. dan artı eksi 9V. kadarda yapılırlar ( MAX232 ) Şekil 5-26 Özel IC kullanımlı (MAX232) 4) Seri komünikasyonun formatı Başlama biti Bitiş biti Başlama biti Bitiş biti Bilgi ( 8bit ) Bilgi ( 8bit ) LSB MSB T 1 karakter 11bit Zaman Şekil 5-27 Seri komünikasyonun formatı Seri komünikasyonun transmisyon formatı Şekil 5-24 de görülmektedir. Bilgi çıkışı komünikasyon hattında Şekil 5-24 deki gibi soldan sağa doğrudur. Bilgi sürekli 1 ise iletişim yok demektir. Bilgi gönderilmeye başlandığı zaman başlangıç biti olarak 1 bit 0 gönderilir. Sonra çıkış bilgisi ardarda en az bitle ( LSB ) iletilir. Şekil 5-24 de 8 bitlik bir bilgi gönderilmesi örneklenmiştir. Daha sonra gönderilen bilginin sonunu belirtmek için bitiş biti gönderilir. Bu stop biti şekilde görüldüğü gibi 2 bitten meydana gelmektedir. Böylece bir 166

180 Seri iletişim ( RS-232C ) karakter 1 bit başlangıç biti, 8 bit bilgi biti, 2 bitte bitiş biti olmak üzere 11 bitten iletişim sağlayabilmektedir. Receiver, bir karakter için başlangıç ve bitiş bitini ayırarak bilgi bitinide ekleyerek paketleme yapar. Bilgi transmisyon hızı 1 saniyede göndermiş olduğu bitlerin sayısı ile ifade edilir. Birim olarakta ( bit per second ) bps kullanılır. Örneğin, Bilgi transmisyon hızı 300 bps olan olan dalganın bit genişliğini hesaplayınız. 1 1 T = = = = 3. 3 bps ms [ ms] Şekil 5-28 Bit genişliği 300 bps den anladığımız bir karakter 11 bitten oluştuğundan dolayı bir karakterin gidiş hızı 11 x 3,3 = 36,3ms olur. Ayrıca 1 saniyede giden karater sayısınıda yaklaşık olarak bulmak istersek 300bps / 11bit = 27 karakter olur. Başlama biti Bitiş biti Bilgi ( 8bit ) LSB MSB ms 36.7ms Şekil 5-29 Bilgi ( data ) gönderme zamanı (300bps) Tipik bps hızları (300,600,1200,2400,4800,9600) 167

181 Seri iletişim ( RS-232C ) 5) Seri komünikasyon uygulama devresi MAX232 DR RS CS CI CD RD TD ER SG Pin Male (DTE) uF uF 10uF uF +5V PIC16F84 ULN v 10k 10k PA0 PB0 PA1 PB1 PA2 PA2 PB2 PB3 10k PB4 PB5 PB6 MCLR PB7 GND +5V MCLR OSC1 OSC2 4MHz 300 X 8 +5V LED x 8 CLOCK DATA Şekil 5-30 Uygulama boardunun devre şeması LED(PB7 PB0) ULN2803 PA3 PA2 PC RS232C Bağlantısı Ext connector PIC RESET MAX232 PIC Yazıcı Şekil 5-31 Seri komünikasyon uygulama boardu üst görünümü 168

182 Seri iletişim ( RS-232C ) (2) Seri komünikasyon programı 1 1) Program 1 PA2 butonuna bastığımızda kişisel bilgisayarımız ekranında ( teraterm program sayfasında ) A harfinin görünmesini sağlayınız. ( A ASCII kod sisteminde 41h ( ) dir.) Bilgi gidiş hızı ( baud rate ) >> 300bps Bilgi ( data ) >> 8 bit Bitiş biti ( stop bit ) >> 2 bit Başlama biti Bitiş biti Bilgi ( 8bit ) LSB MSB ms 36.7ms Şekil 5-32 RS232C ile A nın ASCII çıkış kodu 169

183 Seri iletişim ( RS-232C ) (a) ACSII ( American Standard Code for Information Interchange ) kod tablosu NUL DLE SP P ` p 1 SOH DC1! 1 A Q a q 2 STX DC2 2 B R b r 3 ETX DC3 # 3 C S c s 4 EOT DC4 $ 4 D T d t 5 ENQ NAC % 5 E U e u 6 ACK SYN & 6 F V f v 7 BEL ETB 7 G W g w 8 BS CAN ( 8 H X h x 9 HT EM ) 9 I Y I y A LF/NL SUB * : J Z j z B VT ESC + ; K [ k { C FF FS, < L l D CR GS - = M ] m } E SO RS. > N ^ n ~ F SI US /? O _ o DEL Örneğin, 'A' >> '41h' / d >> 64h / T >> 54h gibi Tablo 5-1 ASCII kod tablosu 2) Program mantığı a) Başlangıç biti oluşturunuz ( düşük bit 0 ) b) Dönerek sağa doğru bilgi bitini gönderiniz. (1 bit) c) Taşıma bitini ( carry bit ) kontrol ediniz. ( data = 0 veya 1 ) d) [ b), c) ] şıklarını 8 kez tekrar ediniz. e) Bitiş bitini oluşturunuz. ( yüksek bit 1 ) 170

184 Seri iletişim ( RS-232C ) 3) Programın akış diyagramı Başla PORTA0 = Çıkış PORTA1_4 =Giriş PORTB ( Çıkış ) 1 TIMER 3.3ms SCNT << SCNT - 1 PA0 << yüksek bit Hayır SCNT = 0? SDATA << 41h(A) Evet Hayır PA2 = 0? PA0 << 1 (yüksek bit) ( bitiş biti ) Evet TIMER 3.3ms PA0 << 0 (düşük bit) (Başlama biti) TIMER 3.3ms TIMER 3.3ms Program sonu SCNT << 8 SDATA Sağa kaydır (1bit) Hayır Carry = 0? SDATA kontrolü PA0 = 1 Evet PA0 = 0 1 Şekil 5-33 Programın akış diyagramı 171

185 Seri iletişim ( RS-232C ) 4) Program1 örneği ; program RS_1 ; RS-232C program (300bps) ; 'A' nın Bilgisayara çıkışı LIST P=16F84,R=DEC INCLUDE "P16F84.INC" CNT EQU H'10' CNT1 EQU H'11' SDATA EQU H'12' SCNT EQU H'13' BSF STATUS,RP0 ;Bank1 e geç MOVLW B'11110' ;PORTA 0bit >> çıkış diğerleri >> giriş MOVWF TRISA ; CLRF TRISB ;PORTB >> tamamı çıkış BCF STATUS,RP0 ;Bank0 a geç BSF PORTA,0 ;RS232C port << yüksek CLRF PORTB ;PORTB << 0 MOVLW B' ' ;ascii data 41h >> A MOVWF SDATA ;SDATA << 'A' SW BTFSC PORTA,2 ;PA2 SWITCH ON? GOTO SW ;PA2 SWITCH OFF >> GOTO SW MAIN SND BCF PORTA,0 ;Başlama biti >> düşük CALL TIMER ;3.3ms timer >> 300bps MOVLW 8 ;bilgi >> 8bit MOVWF SCNT ; SND1 RRF SDATA,F ;1 bit sağa kay BTFSC STATUS,C ; carry bitini kontrol et (check data bit) GOTO BITON ;carry bit = 1 >> goto BITON BCF PORTA,0 ;carry bit = 0 >> PA0 bit düşük GOTO SND2 ;BITON u atla BITON BSF PORTA,0 ;Eğer bilgi (data) =1 SND2 CALL TIMER ;3.3ms timer >> 300bps DECFSZ SCNT,1 ;Bilgi sonu? GOTO SND1 ;bilgi sonu değilse SND1 e git BSF PORTA,0 ;bitiş biti >> yüksek 172

186 Seri iletişim ( RS-232C ) CALL TIMER ;3.3ms timer CALL TIMER ;3.3ms timer STP GOTO STP ; timer = *( *(1+2)+1+2)+2 =3354us=3.4ms TIMER MOVLW D'10' ;1CLOCK MOVWF CNT ;1CLOCK DLY1 MOVLW D'110' ;1CLOCK MOVWF CNT1 ;1CLOCK DLY11 DECFSZ CNT1,1 ;1CLOCK GOTO DLY11 ;2CLOCK DECFSZ CNT,1 ;1CLOCK GOTO DLY1 ;2CLOCK RETURN ;2CLOCK END 5) Teraterm programını nasıl kullanırız? 1) tterm başlatınız. Bunun için aşağıdaki ikona double click yapınız (a) Teraterm 1 Şekil 5-34 Seri modunu seçiniz. 173

187 Seri iletişim ( RS-232C ) (b) Teraterm 2 Şekil 5-35 Seri portu setup yapınız. (c) Teraterm 3 Şekil 5-36 Baud rate seçimini yapınız. Şekil 5-37 Seri portu setup yapınız 174

188 Seri iletişim ( RS-232C ) 6) Programın uygulanması (a) Boardu PC ye bağlayınız. RS232C özel kablosu RS232C portuna paralel porta PIC Yazıcı Şekil 5-38 Uygulamanın bağlantı şeması (b) PA2 butonuna bastığımızda kişisel bilgisayarımız ekranında ( teraterm program sayfasında ) A harfinin görünür. Şekil 5-39 Program uygulamasının sonucu Alıştırma 5-15 Boud rate hızını 300 bps den 9600 bps ye değiştirerek tekrar deneyiniz. ( Programda zamanlayıcıyı ( timer ) değiştirmeniz gerekmektedir. ) 175

189 Seri iletişim ( RS-232C ) (3) Seri komünikasyon programı 2 1) Program 2 hakkında Klavyeden yazılan karakterin ASCII kodunu LED lerle gösteren program yapınız. Bilgi gidiş hızı ( baud rate ) >> 9600bps Bilgi ( data ) >> 8 bit Bitiş biti ( stop bit ) >> 2 bit (a) Bilgisayar klavyesinde eğer B harfine bastıysak, B (b) Uygulama boardundaki LED lerde bu harfe karşılık gelen ASCII koduna göre yanacaktır. ( B nin ASCII kodu 42h.) Şekil 5-40 Uygulama örneğinin sonucu 2) Program mantığı Başlama biti Bilgi ( 8bit ) Bitiş biti LSB MSB us 104us 1.144ms Şekil 5-41 Programla sinyali okuma methodu 176

190 Seri iletişim ( RS-232C ) (a) Başlama bitini bekler ( düşük bit ) (b) Düşük sinyal ( 0 ) geldiği zaman 52us bekler ( 9600bps in bir biti 104us dir. ) ( It is a position of the center of the start bit.) (c) Bir bit zamanı kadar bekler ( 104 us ) (d) Sinyali okur. ( yüksek veya düşük ) (e) Okuduğu sinyali taşımada ( Carry ) stoklar (f) Bir bit sağa doğru kayarak hafızada biriktirir. (g).( (d) şıkkından (f) şıkkına kadar olan işlemleri 8 kez tekrar eder. (h) 208us bekler ( 2 bitiş biti ) (i) Depolanan bilgi LED ye çıkış olarak gönderilir. (j) İşlem baştan tekrar yapılır. 177

191 Seri iletişim ( RS-232C ) Başla PORTA ( Giriş ) PORTB ( Çıkış ) Rotate right to SDATA (1bit) 1 Hayır PA1 = 0? 2 SCNT << SCNT - 1 Evet Hayır SCNT = 0? TIMER 52us Evet SCNT << 8 TIMER 208us TIMER 52us PORTB << SDATA TIMER 52us 2 carry bit << 0 Hayır PA1 = 0? carry bit << 1 Evet 1 Şekil 5-42 Program 2 nin akış diyagramı 178

192 Seri iletişim ( RS-232C ) 3) Program2 örneği ; ; RS-232C alıcı programı (9600bps) ; Keyborda yazılan karakterin ASCII koduna göre LED in yanması ( PORTB ) ; LIST P=16F84,R=DEC INCLUDE"P16F84.INC" COUNT EQU H'10' ; MEMORY ADRES SDATA EQU H'11' SCNT EQU H'12' BSF STATUS,RP0 ;Bank1 e geç MOVLW B'11111' ;PORTA tamamı giriş MOVWF TRISA CLRF TRISB ;PORTB tamamı çıkış BCF STATUS,RP0 ;Bank0 a geç CLRF PORTB ;PORTB LED tamamını söndür MAIN RCV BTFSC PORTA,1 ;Başlangıç biti? GOTO RCV ;Başlama biti yoksa CALL TIMH ;sinyalin yarı hareketi ; ; Başlangıç biti ; ; <TIMH> <TIMH> ; ; ; < us ---> ; MOVLW D'8' ;bilgi = 8bit MOVWF SCNT ;SCNT << 8 SEND2 CALL TIMH ;Sinyalin orta hareketi CALL TIMH ; BCF STATUS,0 ;carry bit = 0 ( default : signal=0) BTFSC PORTA,1 ;signal = 0? BSF STATUS,0 ;carrybit = 1den sinyal 0 değilse 179

193 RRF SDATA,1 ;SDATA >> 1bit sağa kay DECFSZ SCNT,1 ;bilgi sonu?(scnt << SCNT - 1) GOTO SEND2 ;bilgi sonu değil CALL TIMH ;bitiş biti işlemi CALL TIMH ;bitiş biti işlemi CALL TIMH ;bitiş biti işlemi CALL TIMH ;bitiş biti işlemi Seri iletişim ( RS-232C ) MOVF SDATA,W ;W << SDATA MOVWF PORTB ;PORTB << W GOTO MAIN ;sinyali tekrar okuma STP GOTO STP ; TIME = 52us (104 / 2 = 52 ) TIMH MOVLW D'15' ;1CLOCK MOVWF COUNT ;1CLOCK DLY DECFSZ COUNT,F ;1CLOCK GOTO DLY ;2CLOCK RETURN ;2CLOCK END 4) Program uygulaması RS232C özel kablosu PIC Writer Şekil 5-43 Uygulamanın iletken bağlantısı 180

194 Seri iletişim ( RS-232C ) Alıştırma 5-16 Program 1 ve Program 2 nin birleşimi bir program yapalım. (1) Klavyeden girilen karakterin ASCII kod karşılığına göre LED lerin yanmasının sağlanması A Tuşa basınız LED lerin yanması (2) ASCII karşılığını bilgisayara gönderilmesi ve ekranda ona karşılık gelen karakterin görünmesi A Bilgisayar ekranı ( teraterm ) Alıştırma 5-17 (1) PA2 butonuna basınız (2) Ekranda isminiz veya diğer istediğiniz bir kelimenin görünmesi ( teraterm ) ( İsim veya kelimenin bitmesinde 9 sayısını kullanınız. ) turgay 181

195 Seri iletişim ( RS-232C ) Alıştırma 5-18 PA2 butonuna her basışımızda aşağıda görüldüğü gibi displayde 0( 30h ) den z( 7Ah ) ye kadar gösteren bir program yapınız. PA2 butonuna basınız :; xyz01234 teraterm 182

196 Step Motor kontrolü 7 STEP MOTOR KONTROLÜ (1) STEP MOTORLAR HAKKINDA GENEL BİLGİLER Step motorlar fırçasız DA motorları sınıfına girmektedir. Step motorların en fazla kullanıldığı yerler yazıcılar ( printer ), küçük ölçekli CNC tezgahlarında, disket sürücülerde, diğer ufak çaplı uygulamalarda ve azda olsa hız kontrolleri gereken yerlerde kullanlırlar. DA motorlarında en fazla arıza gösteren yerler fırça kısımlarıdır. Bu nedenle fırçasız motorlar fırçalı motorlara göre daha uzun ömürlüdürler. Bu yüzden endüstriyel kontrol sistemleri gibi yerlerde arıza fazla olması istenmediğinden dolayı fırçalı motorlar tercih edilmezler. Normal DA motorları ile Step motorları karşılaştırdığımızda step motorların donanımları daha karmaşık olduğu görülür. Uygulamada hız ve adım kontrolü istenmiyorsa DA fırçalı motorlar daha iyi sonuç verirler. Ancak hız kontrolü veya pozisyon kontolü gerekli olduğu uygulamalarda step motorlar gerekli olurlar. Bu doğrultuda step motorlar geri besleme olmadan hız kontrolünde veya pozisyon kontrolünde asla kayma ve şaşma göstermezler. Eğer geri besleme gerektiren bir motor kullanmış olsaydık bu defada geri besleme ünitesi motorun maliyetinden daha fazla yük getirebilirdi. Tipik geri besleme sensörleri optic kod çözücüler, takometreler ve kara vericilerdir. Şekil 5-44 Step motor 1) Her adımın derecesi Yapacağımız uygulaya göre seçeceğimiz step motor özellikleri çok önemlidir. Motorun her tam adımda döneceği derece miktarı kesin olarak bilinmelidir. Motorun yarım adım işletiminde adım veya dönme miktarı iki katı olacaktır. Ve her adım derecesi yarıya inecektir. Üzerinde adımın kaç derece olduğu yazılmayan motorlar için bu adım sayısı dikkatli bir şekilde elle döndürülerek sayılmalıdır. Bir tam dönüşteki adım sayısını tesbit ettikten sonra dairenin açısı olan 360 a bölersek her bir adımın kaç derece olduğunu bulmuş oluruz. Genel standart olarak : 0.72, 1.8, 3.6, 7.5, 15, ve hatta 90.derece bulabiliriz. Her adımın derecesi motorun kararlılığı ile ilgilidir. Eğer motorun üzerinde sadece adım sayısı veya tur sayısı yazıyorsa bu adım sayısını veya tur sayısını 360 a bölmeliyiz ki bir adımın kaç dereceye tekabül ettiğini bulabilelim. 183

197 Step Motor kontrolü 2) Uçlarının tesbiti Step motorların uç bağlantıları ile ilgili elimizde bir catalog veya döküman yok ise uçlarını ohm metre ile bir kaç ölçme ve bir kaç deneme ile ( en fazla 16 deneme ) bulabiliriz. Step motorlarda 4 adet bobin vardır. Her bobinden birer uç çıkartılmıştır. Bir adette ortak uç olmak üzere 5 uç mevcuttur. Ohm metre ile ölçümümüzde ortak uç ile diğer 4 bobin ucu arasında sabit bir direnç değeri vardır. Böylece ortak uç bulunabilir. Bu uca motorun çalışma gerilimi uygulanır. Kalan 4 ucu ise transistor veya FET gibi anahtarlama ( ON OFF ) uçlarına bağlarız. Bağlantımız dıoğru ise motor dönmeye başlar yanlış ise motor dönmez ve titreme yapar. Bu durumda 4 uçtan bazılarının yerini değiştirmemiz gerekir. Doğru uçları bulup motor dönene kadar bu işleme devam edilirki 4 ucun 16 adet kambinasyonu vardır ve en fazla 16 deneme sonucunda gerçek uçları bulmuş oluruz. Eğer step motorumuz 6 uçlu ise bunun anlamı mevcut olan 4 bobin ikişerli gruplara ayrılarak birer ortak uç çıkartılmış demektir. 2 Bobin ucu 1 ortak uç olmak üzere 3 uçlu iki grup vardır ve bunlar arasında elektriksel bir bağ bulunmamaktadır. Avometre ile 3 lü grupları birbirinden ayırmak oldukça kolaydır. Ayrılan bu gruplarda sabit direnç gösteren uç ortak uçtur. Sonuç olarak bulunan iki ortak uç birleştirilmek suretiyle 5 uçlu step motor elde edilmiş olur. Zaten 5 uçlu step motorlarda bu ortak uçlar içeride yapılmıştır. Bundan sonra yapılacak işler 5 uçlu ile aynıdır. 3) Step motorların temel özellikleri (a) Dönüş açısı giriş faz sayısı ile orantılıdır. (b) Dönüş hızı giriş faz oranı ile orantılıdır. ( Faz frekansına ) (c) Bazı torklar kendi kendine de oluşabilmektedir çünkü kalıcı bir mıknatıs kullanılmaktadır. (d) Yüksek tork, iyi sonuç ve hafiftirler. (e) Küçük açı, yüksek verim ve ucuzdurlar. (f) Bakıma ihtiyaç yoktur çünkü fırçasız bir DA motordur. 184

198 Step Motor kontrolü 4) Çalışma prensibi X X X M X Y Y Y X Y C Y Y C Pulse Motor X Şekil 5-45 Step motorların çalışma prensipleri Unipolar step motorlar 4 fazlı fırçasız motorlardır ve tipik 5 veya 6 uçlu olarak tanınırlar. Eğer 5 uçlu ise ortadaki uç motorun içerisinde bağlamışlar ve ortak uç olarak dışarıya çıkmıştır. X Y Y Kontrol birimi X Şekil 5-46 Tipik step motor devresi 185

199 Step Motor kontrolü Şekil da görüldüğü gibi anahtarlamada transistor kullanılmış, ancak kontrol ünitesi olarak transistörlerin açılıp kapanmasını sağlayan kısım gösterilmemiştir. Anahtarların kontrolü için ihtiyaç olan çıkış sinyallerini üreten bu birim genel olarak bilgisayar programları ile hazırlanıp bir ara birimle sürülmektedir Şekil 5-47 de görüldüğü gibi motorun çalışması için bobinleri kullanarak manyetik alanlar oluşturabiliriz 4) Unipolar Step motor ( 1 fazlı sürme metodu ) Sürekli olarak bir fazlı düzenli bir gerilim vermeliyiz. N X S S N Y S N X Y N S X Y X Y X Y X Y Saat yönünde tersi yönde Saat yönünün Şekil 5-47 Ünipolar step motorun 1 fazlı olarak sürülmesi Bu metodla çalışma prensibini daha iyi anlayabiliriz. Ancak bu metod step motorların tork ve durma karakteristikleri iyi olmadığından çok fazla kullanılmaz. 186

200 Step Motor kontrolü 5) Unipolar Step motorun 2 fazlı olarak sürülmesi N X X N S N Y S N X N Y Y N S N X N Y S X Y X Y X Y X Y Saat yönünde tersi yönünde Saat yönünün Şekil 5-48 Ünipolar step motorun 2 fazlı olarak sürülmesi Genellikle bu methot kullanılmaktadır çünkü torkları yüksek ve durma karakteristikleri iyidir. 187

201 Step Motor kontrolü 6) Unipolar Step motorların 1-2 fazlı olarak sürülmesi N X N X S S N Y S N Y S N Y N X X N S N X Y N S N X Y N S Y N S X Y X Y X Y X Y Saat yönünde Saat yönünün tersi yönünde Şekil 5-49 Ünipolar step motorun 1-2 fazlı olarak sürülmesi Yarım açılı ( adımlı ) dönme methodu gibi 188

202 Step Motor kontrolü (2) Step motor uygulaması1 1) Step motor uygulama devresi +5V 10kx3 2SD1276A x k PIC16F84 PA0 PB7 PA1 PB6 PA2 PB5 1k Y X Y X C Motor Voltage PB4 +5V +5V 10k PB3 PB2 PB1 MCLR PB k GND +5V 4MHz OSC1 OSC2 +5V MCLR PA4 PA3 CLOCK DATA 300 1k 74HC14 X M 5v 5v 5v 5v X k k C Y Y Pulse Motor Photo Interrupter Photo Interrupter Şekil 5-50 Step motor uygulama devre şekli 189

203 Step Motor kontrolü Photo interrupter PA4 PA3 Step motor 7.5 derece 5 10V PIC Yazıcı RESET PIC Ext connector PB3 PB2 PB1 Motor gerilimi Sensor PA0 Girişi PA2 PA1 PA Step motor 1.8derece 5V 270 Şekil 5-51 Eğitim uygulama seti 190

204 Step Motor kontrolü 2) Step motorun programı (a) PA0 butonuna basılır. (b) Step motor 1 faz saat yönünde döner. (Motor yaklaşık 1 saniyede 360 derece yol alır ) (Her bir adımı 1.8 derece olan step motor kullanmalıyız.) 3) Programın akış diyagramı Başla 1 PORTA ( Giriş ) PORTB ( Çıkış ) Hayır MDATA = 0? Evet 2 Hayır PA0 = 0? Evet 2 Başla MDATA << 4 ( Step motor data sayısı ) TABLE << 0 PCL << PCL + W RETLW W << TABLE PMDAT SCNT << 8 PORTB << W (Steper motor data gönderme) TIMER 20ms TABLE << TABLE Şekil 5-52 Programın akış diyagramı 191

205 4) Program ;******************************************** ;* ;* RETLW komutunu kullanarak 1 fazlı step motor kontrolü ;* ;******************************************** LIST P=16F84,R=DEC INCLUDE "P16F84.INC" CNT1 EQU H'10' ; MEMORY ADRES CNT2 EQU H'11' ; MDATA EQU H'12' ; TABLE EQU H'13' ; Step Motor kontrolü INIT BSF STATUS,RP0 ; Bank1 e geç MOVLW B'11111' MOVWF TRISA CLRF TRISB ; PORTB tamamı çıkış BCF STATUS,RP0 ; Bank0 a geç CLRF PORTB ; PORTB = 0 SW BTFSC PORTA,0 ;PORTA Butonu basılımı? GOTO SW LOOP MOVLW D'4' ; step motor data sayısı= 4 MOVWF MDATA ; MDATA = 4 CLRF TABLE ;TABLE = 0 LOOP1 MOVF TABLE,W ;W << TABLE CALL PMDAT ; TABLE data 0 dan 3 e MOVWF PORTB ;PORTB << W (motor data) CALL TIMER ; 20ms gecikme INCF TABLE,F ; TABLE << TABLE+1 DECFSZ MDATA,F ; MDATA << MDATA-1 = 0? ; GOTO LOOP1 GOTO LOOP STP GOTO STP 192

206 Step Motor kontrolü ;*********************************************************** ; step motor data ;*********************************************************** PMDAT ADDWF PCL,F ;PCL ( program counter ) ;+ W >>PCL RETLW B' ' ;motor data 1 >> W (PCL+0) RETLW B' ' ;motor data 2 >> W (PCL+1) RETLW B' ' ;motor data 4 >> W (PCL+2) RETLW B' ' ;motor data 8 >> W (PCL+3) TIMER ;yaklaşık 5ms zamanlayıcı ;************************************************************ ;* 1+1+2*( *( )+1+1+2)+1+2=5017us * ;************************************************************ MOVLW D'2' ; 1clock MOVWF CNT1 ; 1clock DLY1 MOVLW D'250' ; 1clock MOVWF CNT2 ; 1clock DLY2 GOTO $+1 ; 2clock GOTO $+1 ; 2clock GOTO $+1 ; 2clock NOP ; 1clock DECFSZ CNT2,1 ; 1(2)clock GOTO DLY2 ; 2clock DECFSZ CNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock END 193

207 Step Motor kontrolü Alıştırma 5-19 ( Her bir adımı 1.8 derece olan step motor kullanmalıyız. ) (1) PA0 butonuna basılır. (2) Step motor 2 faz sürülerek saat yönünde döner. ( Motor yaklaşık 1 saniyede 360 derece yol alır ) Alıştırma 5-20 ( Her bir adımı 1.8 derece olan step motor kullanmalıyız.) (1) PA0 butonuna basılır. (2) Step motor 1-2 faz sürülerek saat yönünde döner. (Motor yaklaşık 1 saniyede 360 derece yol alır ) Alıştırma 5-21 ( Her bir adımı 1.8 derece olan step motor kullanmalıyız. ) PA0 butonuna basılır >> Step motor saat yönünde 2 faz döner. PA1 butonuna basılır >> Step motor saat yönünde 2 faz döner. PA2 butonuna basılır >> Step motor durur. Alıştırma 5-22 ( Her bir adımı 1.8 derece olan step motor kullanmalıyız.) PA0 butonuna basılır >> Step motor yanlızca 360 derece döner. 194

208 Step Motor kontrolü (3) Step motor uygulaması 2 ( Pozisyon kotrol ) 1) Foto interrupter 5v 5v 5v 5v k k (a) Arada her hangi bir cisim yokken (b) Arada bir cisim varken Şekil 5-53 Foto interrupter Foto interrupter LED ile foto transistörün birleşiminden meydana gelmektedir. Çıkışı arada her hangi bir cisim yok iken 1 ( Şekil a ), arada bir parça var ise 0 ( şekil b ) olmaktadır. 2) Program Yapılan bu programla sensör kontrolünü ve motor kontrolünü öğreneceğiz. Eğitim setinde iki adet sensör ile bir adet step motor kullandık. Step motorun bir adımı 7.5 derece çalışma gerilimi ise 5-10 Volt arasındadır. İki faz sürücülüdür. 195

209 Step Motor kontrolü 3) Programın akış diyagramı ( Alıştırma 5-23 ) PA0 butonuna basılır. Step motor saat yönünde döner. Bant sola doğru hareket eder. Parça PA4 deki foto interruptere gelince motor 1 saniye durur. Step motor saat yönünün tersi yönde döner Bant sağa doğru hareket eder. Parça PA3 deki foto interruptere gelince motor 1 saniye durur. Şekil 5-54 Programın akış diyagramı 196

210 Step Motor kontrolü Foto interrupter PA4 PA3 Step motor 7.5 derece 5 10V PIC Yazıcı RESET PIC Ext connector PB3 PB2 PB1 Motor gerilim Sensör PA0 girişi PA2 PA1 PA0 MOTOR gerilimi Şekil 5-55 Step motor eğitim seti 197

211 DA motor kontrolü 8 DA MOTOR KONTROLÜ (1) DA motorları hakkında genel bilgi 1) Transistör ve FET ile DA motor kontrolü yapabiliriz. Motor gerilimi Motor gerilimi M diyod M PIC port 1k PIC port 20k (a) Transistor (b) FET Şekil 5-56 DA motor kontrol metodları Şekil DA motorlarının kontrol metodları görülmektedir. Eğer PIC in portundan gelen sinyal 1 ( 5V ) ise motor dönmeye başlar. Eğer PIC in portundan gelen sinyal 0 ( 0V ) ise motor durur. Bu metodla motor da sadece bir yönde dönme sağlanır. 2) H köprü devresi Motorun her iki yöndede dönmesini istediğimiz zaman şekil 5-57 deki devreyi kullanmalıyız. Motor gerilimi Motor gerilimi Motor gerilimi Motor gerilimi S1 S2 S1 S2 S1 S2 S1 S2 M M M M S3 S4 S3 S4 S3 S4 S3 S4 (a) Boşta (b) Saat yönünde (c) Saat yönünün tersi (d) Tutma ( Fren ) Şekil 5-57 H köprü metod devresi 198

212 DA motor kontrolü SW1 SW2 SW3 SW4 Açiklama TR1 TR3 M TR2 TR4 TR1 TR2 TR3 TR4 OFF OFF OFF OFF Boşta ON OFF OFF ON Saat yönünde OFF ON ON OFF Saat yönü tersi OFF OFF ON ON Tutma ( Fren ) Şekil 5-58 Transistörle yapılmış H köprü devresi 3) Motor sürücü Motor sürücüsü DA motorlarda devir yönü değiştirmek için tam köprü sürücüye sahiptir. Bu devre elemanı ile DA motoru saat yönünde, saat yönünün tersi yönde, boşta ve fren durumunda kolaylıkla kontrol edebiliriz. Özelliği (Motor sürücü TA7257P) (a) Çıkış akımı ortalama 1.5A, maksimum 4.5Adir. (b) 4 fonksiyon moda sahiptir.(ileri, Geri, Boşta,Fren) Bütün bunları 2 ucunu besleyerek 2 lojik sinyalle gerçekleştirebiliriz (c) Aşırı akım,kısa devre ve ısıya karşı koruma vardır. (d) İşletim gerilimi : Vcc = 6 18V, Vs = 0 18V Şekil 5-59 TA7257P Vcc 7 6 Vs 1 Giriş 2 Giriş kontrol 3 5 Çıkış1 Çıkış2 Isı koruma Aşırı akım koruma 4 GND Şekil 5-60 Blok diyagramı (TA7257P) 199

213 DA motor kontrolü PIN No. Sembol Fonksiyon Açıklaması 1 IN1 Giriş ucu 2 IN2 Giriş ucu 3 OUT1 Çıkış ucu 4 GND Toprak ucu 5 OUT2 Çıkış ucu 6 Vs Motor sürücüsü için gerilim ucu 7 Vcc Lojik devrenin çalışması için gerilim ucu Şekil 5-61 TA7257P nin PIN uçları Giriş 1 Giriş 2 Çıkış 1 Çıkış 2 Çalışma şekli 1 1 H H Fren 0 1 L H İleri 1 0 H L Geri 0 0 L L Boşta Şekil 5-62 TA7257P nin fonksiyonları 4) DA motorlarında hız kontrolü DA motorlarında hızı kontrol etmek için iki yöntem vardır. Bunlardan birisi gerilim kontrolü diğeri ise faz kontrolüdür. M (a) Gerilim kontrolü Şekil 5-63 Gerilim kontrolü Gerilim kontrolü analog bir kontroldür. ( Şekil 5-63 ) Bu yöntem genel olarak kullanılan bir metodtur. Bu metodu kullanmak için elektrik amplifikatörüne ihtiyaç vardır ancak verimli ve kullanışlı bir metod değildir. Bu metodu mikrodenetleyiciler ile kullanamayız. 200

214 (b) PWM kontrol (Faz genişlik kontrollü ) ( Pulse Width Modulation ) DA motor kontrolü PWM metodu fazın genişliğini kontrol ederek motorun hızını kontrol etmektedir. PWM yöntemi tamamen dijital bir kontroldür. ( 0/1 kontrollüdür. ) PWM ile fazın 1 veya 0 olma durumlarını kontrol ederiz ve çok kullanışlı bir metodtur. Sadece motor hızını değil lambanın yanma parlaklığınıda kontrol edebiliriz. (Şekil 5-64) Bu alan değişmez High Low Hız Şekil 5-64 PWM control Motor gerilimi M G : Gate PIC PB1 portundan 20k G D S D : Drain S : Source FET(2SK2936)or (2SK3142) Şekil 5-65 PIC ile PWM kontrolü Şekil 5-65 de görüldüğü gibi bu şekilde DA motorunu kontrol etmek için FET ( Field Effect Transistor ) ihtiyaç vardır.. Çünkü FET in anahtarlama özelliği iyidir ve PWM için en uygun özelliğe sahiptir. 201

215 DA motor kontrolü 5) DA motor ders eğitim setinin devre şeması +5V 10kx3 +12v(motor) +5V +12v(motor) PIC16F84 IN1 IN TA7257P Motor Driver 5 3 M2 M1 PA0 PB7 4 PA1 PB6 GND +12v(motor) PA2 PB5 PB4 +5V 10k PB3 PB2 PB1 MCLR PB0 4MHz OSC1 20k GND +5V MCLR CLOCK OSC2 PA4 PA3 2SK3142 (Nch MOS FET) RB0/INT +5V DATA Short pin 74HC14 PB1 FET(Gate) PB2 IN1(TA7257) 5v 5v k PB3 IN2(TA7257) Photo interrupter Şekil 5-66 DA motor ders eğitim setinin devre şeması 202

216 DA motor kontrolü (2) Eğitim malzemesi 1) Motor eğitim malzemesi Foto sensörü ( PA3 ) Motor Bağlantı Delikli disk Sensör Bağlantı Redüktörlü DA motor ( TSUKASA TG23A-SG 12V ) Foto sensörü (T oshiba TP507A ) Şekil 5-67 Sensörlü DA motor 2) DA motor eğitim seti Motor gerilimi RESET PB3 PB2 DC 12V PIC yazıcı For oscilloscope terminal PB1 TA7257 FET TA7257 den FET den Sensör den PA2 PA1 PA0 Foto interrupter girişi Pin seçimi (PA3, PB0) oscilloscope terminal(gnd)için Şekil 5-68 DA motor eğitim seti 203

217 DA motor kontrolü (3) DA motor programı 1) Program1 (Motorun FET ile bağlantısının sağlanması) ( Uygulama 5-24 ) (a) PA0 butonuna basılır >> Motor döner. (b) PA1 butonuna basılır >> Motor durur. Güç kaynağı (DC 12V) 2) Program2 ( TA7257 ile motor bağlantısının sağlanması ) ( Uygulama 5-25 ) (a) Butonlara basılı değil >> Motor durur(fren modu) ve giriş butonunu bekleme (b) PA0 butonuna basılı >> Motor saat yönünde döner CW(clockwise). (c) PA1 butonuna basılı >> Motor saat yönünün tersi yönde döner CCW(counter clockwise) (d) PA2 butonuna basılı >> Motor durur(fren modu) ve giriş butonunu bekleme. Not : Eğer motorun dönüş yönünü değiştirmek istiyorsak once PA2 ( stop ) butonuna basılmalı daha sonra diğer butonları kullanmalıyız. Güç kaynağı (DC 12V) 204

218 DA motor kontrolü 3) Program 3 ( PWM programı : Motorun FET ile bağlantısının sağlanması ) DA motor şekil 5-62 deki dalga konumuna göre dönmektedir. Bir dalga boyu 7.5 ms. Dir. ON zamanı 1.5ms ve OFF zamanı 6 ms. dir. Bu data bilgileri PB1 ucuna gönderilerek motorun dönmesi sağlanır. (a) PWM Dalgası ( PB1 ) 1.5ms 6ms 7.5ms Şekil 5-69 DA motorun PWM dalgası (b) PWM dalgasını nasıl oluşturuz. Bir saykılın nümerik toplam değeri (250) dir. Bunun ON zamanı için (50) nümeric değer ayırırsak OFF zamanı içinde (250) (50) = (200) nümerik değer buluruz. PWM ON zamanı PON = 50 X 0.03ms = 1.5ms PWM OFF zamanı POFF = 200 X 0.03ms = 6ms PWM dalga zamanı Saykıl = 250 X 0.03ms =7.5ms Şekil 5-70 Programda PWM değeri 205

219 DA motor kontrolü (c) Program3 ün akış diyagramı Başla 1 PORTA( Giriş ) PORTB( Çıkış ) PB1 << 0( Bit off ) TIME1 0.03ms Hayır PA0 = 0? POFF << POFF -1 Evet CYCLE << Hayır POFF = 0? Evet PON << 50 POFF << CYCLE - PON PB1 << 1( Bit on ) TIME1 0.03ms PON << PON -1 Hayır PON = 0? Evet 1 Şekil 5-71 Program3 ün akış diyagramı 206

220 (d) Program3 listesi ;******************************************************************* ; Bu program PWM programıdır. ;******************************************************************* LIST P=16F84,R=DEC INCLUDE "P16F84.INC" ;file include CYCLE EQU H'10' PON EQU H'11' POFF EQU H'12' COUNT1 EQU H'13' COUNT2 EQU H'14' DA motor kontrolü INIT BSF STATUS,RP0 ;Bank1 e geç MOVLW B ;PORTA tamamı giriş MOVWF TRISA ; CLRF TRISB ;TRISB=0 PORTB tamamı çıkış BCF STATUS,RP0 ;Bank0 a geç CLRF PORTB ;PORTB yi temizle MAIN MOVLW D'250' ;Wreg << PWM cycle = 250 MOVWF CYCLE ;CYCLE << W reg PWM MOVLW D'50' ;Wreg << PWM ON time = 50 MOVWF PON ;PON << W reg SUBWF CYCLE,W ;Wreg << PWM cycle - PWM ON MOVWF POFF ;POFF(PWM OFF time) << Wreg ;*********************************************************** ; PWM on time 0.03ms * 50 = yaklaşık 1.5ms ;*********************************************************** BSF PORTB,1 ;PORTB bit1 = 1 PWM0 CALL TIME1 ;0.03ms gecikme DECFSZ PON,F ;PON-1 >> PON = 0? Eğer PON=0 ise atla ; Eğer PON=0 ise atla GOTO PWM0 ; PWM0 a git 207

221 DA motor kontrolü ;*********************************************************** ; PWM off time 0.03ms * 200 = yaklaşık 6ms ;*********************************************************** BCF PORTB,1 ;PORTB bit1 = 0 PWM1 CALL TIME1 ;0.03ms gecikme DECFSZ POFF,1 ;POFF-1 >> POFF =0? ;Eğer POFF=0 ise atla GOTO PWM1 ;PWM1 e git GOTO PWM ;PWM e git TIME1 ; yaklaşık 0.03ms gecikme ;************************************************************ ;* 1+1+1*(1+1+2*( )+1+1+2)+1+2=32us * ;************************************************************ MOVLW D'1' ; 1clock MOVWF COUNT1 ; 1clock DLY1 MOVLW D'2' ; 1clock MOVWF COUNT2 ; 1clock DLY2 GOTO $+1 ; 2clock GOTO $+1 ; 2clock GOTO $+1 ; 2clock NOP ; 1clock DECFSZ COUNT2,1 ; 1(2)clock GOTO DLY2 ; 2clock DECFSZ COUNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock END 208

222 DA motor kontrolü (e) Program3 ün uygulama sonucu Güç kaynağı (DC 12V) osilaskop Şekil 5-72 Uygulamanın osilaskopa bağlantısı Çıkan dalganın çizilmesi 209

223 DA motor kontrolü Uygulama 5-26 (1) PA0 butonuna basınız. (2) DA motor 10 tur saat yönünde döner. (Motorun dönüş sayısını PA3 ucuna bağlı bulunan foto sensörü ile tesbit etmekteyiz.) (3) DA motor 1 saniye durur. (4) DA motor bu defada saat yönünün tersi yönünde 10 tur döner. (5) Bu işlem (2) (4) defa tekrarlanır. Güç kaynağı (DC 12V) TA7257 PA0 Foto sensor (PA3) Şekil 5-73 Uygulama 5-23 ün iletken bağlantısı 210

224 DA motor kontrolü Uygulama 5-27 (1) DA motor dururken PA0 butonu başlatma butonudur. (Dönüş hızını kendin belirleyebilirsin) (2) PA1 butonu dönüş hızının artması için butondur. (3) PA2 butonu dönüş hızının azalması için butondur. (4) DA motoru dönerken, PA0 butonu durdurma butonudur. (5) PWM programının çıktısını osilaskop ile doğrulayınız. Güç kaynağı (DC 12V) PA2 PA1 PA0 osilaskop Şekil 5-74 Uygulama 5-24 ün iletken bağlantısı 211

225 Kesme ( İnterrupt ) 9 KESME ( İnterrupt ) (1) KESME Biz burada PIC de temel kesme konusunu ve önemini işleyeceğiz. 1) Kesme kavramı Kesme ana program çalışırken dışarıdan gelen herhangi bir sinyal sonucu ana programın durması ve kısa bir kesme programının çalışmasının ardından ana programın kaldığı yerden devam etmesidir. Bunu bir örnekle açıklayacak olursak evde TV seyrederken kapı çalındığında TV seyretmeyi bırakıp kapıyı açar ve daha sonrada TV seyretmeye devam ettiğimizde kapının çalması dışarıdan gelen bir sinyal olur ve kapıyı açmanızda kesme program olmuş olur. Bu gibi örneklere günlük hayatımızdan çok fazla verebiliriz. Peki biz buna PIC te neden ihtiyaç duyarız gibi aklımıza soru takıldığında, kesme programlar kullanarak ana programın daha fazla karışık olmasını önler ve daha az komutlar kullanırsınız. PIC lerde kesme sinyal girişi 04h adresindedir. Örneğin, herhangi bir robot çalışırken sensörden gelen bir sinyal olursa bu defa robot başka bir işlemi gerçekleştirmiş olacaktır. Sonuç olarak bir kesme program ana programın çalışmasına son vermez sadece geçici olarak durdurur kesme alt programı çalışmasını bitirdikten sonra ana program kaldığı yerden devam eder. İki çeşit kesme vardır. ( Dış kesme ve iç zamanaşımı kesmesi olan TMR0 ) Kesme 00h(Adres) Ana program Başla İşlem 1 Dış kesme ( interrupt ) RB0/INT ucu TMR0 zaman aşımı kesmesi PORTB değişen kesmeler (RB7:RB4 uçları) EEPROM Bilginin yazıldığı yer Kesme program Başla 04h(Adres) İşlem 2 İşlem 1 İşlem 3 İşlem 2 İşlem 4 RETFIE Son Şekil 5-75 Kesmenin şeması ( PIC16F84 ) 212

226 Kesme ( İnterrupt ) PIC16F84 4 çeşit kesme kaynağına sahiptir. Harici ( External ) kesme RB0/INT ucundaki sinyal girişi TMR0 zamanaşımı kesme PORTB değiştirerek kesme ( RB7:RB4 uçları ) Data EEPROM belleğe yazma işleminin tamamlanmasından oluşan kesme Biz burada iki çeşit kesme kaynağı öğreneceğiz. ( External kesme ve zaman aşımı TMR0 kesme ) Kesme kontrol yazmacı ( INTCON ) bayrak bitlerinde bağımsız olarak tek tek kayıt eder. Bu enable bitler tek tek ve global kesmede içermektedir., GIE(INTCON<7>) enable ( eğer setse ) bütünü geçerli ( masakelenmemiş ) kesmelerdir veya disable ( eğer temizse ) ise geçersiz ( maskelenmiş ) kesmelerdir. Tek tek olan kesmeler INTCON registerinde anable bitlerine karşılık olarak disable olabilirler. Resette GIE biti temizlenir. kesmeden geri dönen bilgi, RETFIE, exits kesme routine as well as sets the GIE bit, which re-enable kesmes. INTCON yazmacında ( registerinde ) RB0/INT kesme ucu, RB değişim kesme portu ve TMR0 zamanaşım kesme bayraklarını üzerinde taşımaktadır. Kesmenin olduğu anda ; GIE biti temizlenir ve disable olur, 0004h ile geri döner. Dış kesme olayları için, RB0/INT ucu veya PORTB değişim kesmesi gibi, gizli kesmede 3 veya 4 bilgi saykılında olmaktadır. Sonsuz defa kesmeleri kullanmak istediğimizde kesme bayrak biti beya bitleri yazılımla temizlenmelidir.. 2) TMR0 kesme TMR0(Timer0) de zaman aşımını (FFh >> 00H) T0IF(INTCON<2>) bayrak biti setleyecektir. Enable biti T0IE(INTCON<5>) set ve temizleme yaparak kesmeyi enabled/disabled yapar. 3) Dış kesme RB0/INT ucu Dış kesme RB0/INT de kenar seçimine göre çalışır. Eğer INTEDG biti (OPTION_REG<6>) set ise yükselen kenarda INTEDG biti clear ise alçalan kenarda işlem görür. RB0/INT bitinde geçerli kenar göründüğünde INTF biti (INTCON<1>) settir. Bu kesmeyi INTE (INTCON<4>) kontrol bitini temizleyerek disable yapabiliriz. Tekrar kullanmadan önce yazılımda INTF bayrak bitini temizlememiz gerekir. 213

227 Kesme ( İnterrupt ) (2) INTCON Yazmacı ( register ) ( Adres 0Bh,8Bh ) INTCON ( Interrupt Control )yazmacı okunabilir ve yazılabilir bir yazmaçtır ve her kesme için bir flag birde global kesme bayrağı içerirler. b7 b6 b5 b4 b3 b2 b1 b0 R/W-0 R/W-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-x GIE EEIE T0IE INTE RBIE T0IF INTF RBIF R=Okunabilir bit W=Yazılabilir bit -n=value at POR reset Enerji verildiğinde ilk atanan değer x bit7: GIE : Tüm kesme işlemlerini iptal etme biti ( Global Interrupt Enable bit ) 1 = Tüm kesmeler maskesiz geçerli ( Enable ) 0 = Tüm kesmeler geçersiz ( Disable ) bit 6: EEIE : EE belleğe yazma işlemini tamamlama biti 1 = Geçerli ( Enable ) 0 = Geçersiz ( Disable ) bit 5: T0IE : TMR0 zaman aşımı kesmesini aktif yapma biti 1 = Geçerli ( Enable ) 0 = Geçersiz ( Disable ) bit4: INTE : RB0/INT Dış kesmeyi aktif yapma biti 1 = RB0/INT kesmesi geçerli ( Enable ) 0 = RB0/INT kesmesi geçersiz ( Disable ) bit 3: RBIE : RB Portları değiştirme kesmesini aktif yapma biti 1 = RB portlarındaki değişiklikler kesme meydana getirir ( Enable ) 0 = RB portlarındaki değişiklikler kesme meydana getirmez ( Disable ) bit 2: T0IF : TMR0 zamanaşımı kesme bayrak biti 1 = TMR0 zaman aşımına sahip ( yazılımla temizlenmeli ) 0 = TMR0 zaman aşımı yok demektir. bit 1: INTF : RB0/INT Kesme bayrak biti 1 = RB0/INT kesme olduğunda 0 = RB0/INT kesme olmadığında bit 0: RBIF : RB Port değişim kesme bayrak biti 1 = RB7:RB4 portlarından en az birinin değişmesi durumunda ( yazılımla temzilenmelidir ) 0 = RB7:RB4 portlarında değişiklik olmadığı durumda 214

228 Kesme ( İnterrupt ) (3) OPTION_REG REGISTER ( ADRES 81h ) OPTION_REG yazmacı okunabilir ve yazılabilir özelliğe sahiptir. Çeşitli kontrol bitleri vardır bunlar dışkesme ( INT) ve zaman aşımı TMR0/WDT özelliğini taşırlar b7 b6 b5 b4 b3 b2 b1 b0 R/W-1 R/W-1 R/W-1 R-1 R-1 R/W-1 R/W-1 R/W-1 RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 R=Okunabilir bit W=Yazılabilir bit -n=value at POR reset Enerji verildiğinde ilk atanan değer x bit7: bit 6: bit 5: bit4: bit 3: bit 2-0: RBPU : PORTB Pull-up geçerli yapma biti 1 = PORTB uçlarındaki pull-uplar geçersiz olur. ( Disable ) 0 = PORTB uçlarındaki pull-uplar geçerli olur. ( Enable ) INTEDG : Harici kesme için kenar seçme biti 1 = RB0/INT ucunun yükselen kenarda işlem görmesi 0 = RB0/INT ucunun alçalan kenarda işlem görmesi T0CS : TMR0 Clock sinyalinin kaynağını seçme kaynağı. 1 = RA4/T0CKI ucuna harici sinyal girişi yapılacağında pin 0 = Dahili komut saykılı seçildiğinde (CLKOUT) T0SE : TMR0 sinyal kaynağı kenar seçme biti 1 = RA4/T0CKI ucundan yükselen kenara göre işlem gerçekleştirir. 0 = RA4/T0CKI ucundan alçalan kenara göre işlem gerçekleştirir PSA : Frekans bölücü ( prescaler ) ayırma biti 1 = Frekans bölme sayısı WDT için geçerli 0 = Frekans bölme sayısı TMR0 için geçerli PS2:PS0 : Prescaler bölme sayılarının değeri Bit değeri TMR0 WDT : 2 1 : : 4 1 : : 8 1 : : 16 1 : : 32 1 : : 64 1 : : : : :

229 Kesme ( İnterrupt ) (4) RB0/INT kesme RB0 ucundan gelen sinyal sonrası RB0/INT kesmesi oluşur. Yükselen kenar ve düşen kenara göre kesme durumu OPTION yazmacının 6. biti tarafından karar verilir. ( default durumunda yükselen kenar geçerlidir. ) Yükselen kenar Düşen kenar RB0/INT Düşen kenar Yükselen kenar Şekil 5-76 RB0/INT kesmesi +5V +5V 10kx2 interrupt switch 10k 74HC14 PIC16F84 ULN v 74HC14 PB0/INT PB1 PA3 PA21 PB2 PA1 +5V 10k PA0 PB7 PB6 PB5 MCLR PB4 GND +5V MCLR OSC1 OSC2 4MHz +5v 300 X 8 LED x 8 CLOCK DATA Şekil 5-77 RB0/INT kesmesinin deney devre şeması 216

230 Kesme ( İnterrupt ) RA2 RA0 RB6 RB4 RA3 RA1 RB7 RB5 RESET ULN2803 PIC YAZICI PIC RB0/INT RB2 RB1 Şekil 5-78 RB0/INT kesmesinin deney seti 1) RB0/INT kesme programı Programın ana hatları a) PB0/INT butonuna basılır RB0/INT butonu b) RA0 RA3 LED leri binary olarak artış gösterir. RA3 RA2 RA1 RA0 RB7 RB6 RB5 RB4 c) PB0/INT butonuna basılır RB0/INT butonu d) RA0 RA3 LED leri binary olarak artış gösterir RA3 RA2 RA1 RA0 RB7 RB6 RB5 RB4 e) Bu işlem tekrarlanır. 217

231 Kesme ( İnterrupt ) 2) programın akış diyagramı 00h dan başlayan ana program 04h dan başlayan kesme programı Başla PORTA ( Çıkış ) PORTB PB0-PB3 ( Giriş ) PB4-PB7( Çıkış ) Başla interrupt flagı temizle STATUS ve W yazmaçlarını sakla COUNT << COUNT + 1 PORTA yı temizle PORTA << COUNT PORTB yi temizle COUNT temizle STATUS ve W yazmaçlarını geri yükle RETFIE RB0/INT interrupt enable INTCON INTE bit << 1 Enable interrupt INTCON GIE bit << 1 NOP Kesmeyi bekle Şekil 5-79 Programın akış diyagramı 218

232 Kesme ( İnterrupt ) 3) RB0 / INT kesmesi için program ;******************************************************************* ; ; RB0 kesme programı ; ;******************************************************************* LIST P=16F84,R=DEC INCLUDE "P16F84.INC" ; include dosyası W_TEMP EQU H'10' ; STATUS_TEMP EQU H'11' COUNT EQU H'12' ORG H'00' GOTO MAIN ORG H'04' GOTO ISR ; Ana program 00h adresinden başlar MAIN BSF STATUS,RP0 ;Bank1 e geç MOVLW B'00000' ;PORTA I/O data MOVWF TRISA ;PORTA tamamı çıkış MOVLW B' ' ;PORTB I/O data MOVWF TRISB ;PB0-PB3 >> giriş, PB3-PB7 >> çıkış BCF STATUS,RP0 ;Bank0 a geç CLRF PORTB ;PORTB << 0 CLRF PORTA ;PORTA << 0 CLRF COUNT ;COUNT << 0 LOOP BSF INTCON,INTE ;RB0/INT kesme enable BSF INTCON,GIE ;enable kesme NOP ;kesmeyi bekle GOTO LOOP 219

233 Kesme ( İnterrupt ) ;************************************************* ; Kesme program ; Kesme programı 04h den başlar ;************************************************* ISR BCF INTCON,INTF ; kesme bayrağını temizle PUSH MOVWF W_TEMP ;W yazmaç değerini sakla SWAPF STATUS,W ;SWAP komutu Z bayrağından etkilenmez MOVWF STATUS_TEMP ;STATUS yazmaç değerini sakla INCF COUNT,F ;Kesme programı MOVWF PORTA POP SWAPF STATUS_TEMP,W ;STATUS yazmaç değerini geri yükle MOVWF STATUS SWAPF W_TEMP,F ; W yazmaç değerini geri yükle SWAPF W_TEMP,W RETFIE END Not : Kesme zamanında içeriği koruma Kesme durumunda, yanlızca stack hafızada geri dönmek için PC ( Program Counter ) değeri korunur. Ancak kullanıcılar anahtar yazmaç değerlerinde korunmasını isterler. ( W yazmacı ve STATUS yazmacı gibi ). Bu işlemi sadece yazılımda programla yerine getirebiliriz. Örneğin STATUS ve W yazmaç değerlerini saklamak ve ihtiyaçta tekrar kullanmak için geçici dosyalar oluştururz ki bunlara ve STATUS_TEMP isimleri verebiliriz. Aşağıdaki işlemi gerçekleştirmeliyiz. W yazmacını W_TEMP dosyasına atarız. STATUS yazmacını STATUS_TEMP dosyasına atarız 220

234 Kesme ( İnterrupt ) Kesme işlemi gerçekleştirilir. STATUS yazmacı geri kazandırılır W yazmacı geri kazandırılır STATUS ve W register değerlerinin korunması örneği PUSH MOVWF W_TEMP ;W yazmacı TEMP yazmacına aktar SWAPF STATUS,W ;STATUS u swap yap MOVWF STATUS_TEMP ;statusu STATUS_TEMP yazmacına aktar Interrupt Service Routine POP SWAPF STATUS_TEMP,W ; STATUS_TEMPi swap yap ;yazmaç ve sonucu W yazılır MOVWF STATUS ; W yazmacı STATUS a aktar ;( orjinal STATUS yüklenir) SWAPF W_TEMP,F ;W_TEMP i swap yap. ;sonucu W_TEMP yaz SWAPF W_TEMP,W ;W_TEMP i swap yap ve sonucu W yazmacına yaz. Uygulama 5-28 a) PB0/INT butonuna basınız RB0/INT butonu b) RB4 RB7 LED leri artarak yanar. RA3 RA2 RA1 RA0 RB7 RB6 RB5 RB4 c) Bu işlem tekrarlanır. 221

235 Kesme ( İnterrupt ) Uygulama 5-29 RB0/INT kesmesiyle Uygulama 5-26 daki programı değiştiriniz.. 1) PA0 butonuna basınız 2) DA motor saat yönünde 10 defa dönsün ( dönüş sayısını RB0/INT kesmesine bağlı opto-kuplor ile sağlanmaktadır ) 3) DA motor 1 saniye durur. 4) DA motor 10 defa saat yönünün tersi yönünde dönsün. 5) Bu işlem (2) (4) defa tekrarlasın. Güç kaynağı (DC 12V) TA7257 RB0/INT jumper değiştiriniz PA0 Foto opto kuplor (RB0/INT) 222

236 Kesme ( İnterrupt ) (5) TMR0 (Timer0 zaman aşımı kesme) 1) Timer0 zaman aşımı kesme hakkında TMR0 (Timer0 zamanaşımı kesme) zamanlayıcı yapmada veya düzenli zaman aralıklarında sensör kontrollerinde çok elverişlidir. TMR0 bütün PIC çeşitlerinde kullanılabilr. TMR0 sekiz bitte artan yöndedir, yukarı sayıcıdır. timer0 modulü timer/counter aşağıdakilere sahiptir. 8-bit zamanlayıcı ( timer ) / sayıcılıdır. ( counter ) Okunabilir ve yazılabilir 8-bit programlanabilen frekans bölme ( prescaler ) değerlidir Dahili veya harici zamanlayıcı ( clock ) seçimine sahiptir. Kesme FFh den 00ha gelince gerçekleşmektedir. Harici zamanlayıcı ( clock ) için yükselen alçalan kenar seçimine sahiptir Zaman aşımında ( 255>>0 ) T0IF(INTCON) biti setlenir Zaman ( clock ) girişi Dahili veya harici ( RA4/T0CKI ucu ) TMR0 yazmacı 0 >> 255 Şekil 5-80 Timer0 kesmesinin şeması TMR0 registeri FFh den 00h geldiğinde zaman aşımına uğrar TMR0 kesmesi gerçekleşir. Bu zaman aşımıda T0IF ( INTCON<2> ) bitini set durumuna geçirir. Kesme T0IE enable bitinide ( INTCON<5> ) maskeleyebilir. T0IF biti Timer0 modul kesme olarak kullanılacaksa yazılım ile mutlaka temizlenmelidir ( sıfırlanmalıdır ) Ffh den 00h Timer0 zaman aşımı T0IF biti (INTCON<2>) = 1 T0IF bitini mutlaka Interrupt Service Routine ile sıfırlamalıyız. Şekil 5-81 T0IF biti hakkında 223

237 Kesme ( İnterrupt ) Sistem clock 0 RA4/T0CKI 0:yükselen kenar 1 Prescaler Timer0 1:alçalan kenar 0:Timer0 T0CS T0SE PSA PS2 PS1 PS0 OPTION yazmacı ( register ) / / / / / / / /256 Şekil 5-82 Timer0 mimarisi Örnek OPTION registerin değerini aşağıdaki gibi elde edebiliriz. Clock >> internal clock Prescaler >> 1/ OPTION register değeri = D7h Şekil 5-83 OPTION register değeri 224

238 Kesme ( İnterrupt ) 2) Zaman aşımı frekans nasıl elde edilir? Sistem zamanını ( clock ) zaman kaynağı olarak kullandığımız zaman zaman aşımı frekansı elde edebiliriz. Zaman aşımı frekansı = sistem zamanı ( closk ) / Prescaler oranı / 256 Örneğin Osilatör hızı Prescaler 1/256 4MHz >> Sistem zamanı ( clock ) = 4MHz / 4 = 1MHz 1MHz Hz Prescaler Timer0 counter Zaman aşımı frekansı = Hz / 256 /256 = 15.26Hz Cycle = 1 / = 65.5ms Kesme bu örnekte her 65.5ms sonunda meydana gelmektedir. Eğer bir saniyelik zaman gerekli ise bu programda bu süreci 15 defa çalıştırmamız yeterli olacaktır. (1 / = yaklaşık 15) Prescaler frekans(hz) cycle(ms) 1/ / / / / / / / Şekil 5-84 Prescaler ve frekans 225

239 Kesme ( İnterrupt ) 3) Interval zamanlayıcı ( timer ) TMR0 kesmesini kullanarak sürekli olarak belli aralıklarla sensör durumunu ( değerini ) kontrol eder. Örneğin, 50ms interval zamanlayıcı yapıldığında PIC in TMR0 ı CPU zamanı ile sayar. Sayılan bu değer aşağıdaki gibi elde edilir. Sayılan değer = Interval zamanı / saat saykılı (50ms X 1000) / (1 us) = sayılan değer TMR0 ın sayılan değeri = / 256 ( Prescaler değer ) TMR0 ın sayılan değeri = 195 (C3h) Bu nedenle, TMR0 ın ilkdeğeri ( FFh C3h = 3Ch ) 1MHz Hz T=1us T=50ms Prescaler Timer0 sayıcısı 3Ch dan FFh a kadar sayar. Şekil 5-85 TMR0 ile Interval zamanlayıcı TMR0 ilk değeri set etme methodu MOVLW H 3C MOVWF TMR0 ;TMR0 ın adresi 01h. 226

240 Kesme ( İnterrupt ) (6) Timer0 program1 Şekilde görüldüğü gibi LED lerin yanıp sönmesini sağlayan program yapalım ( Interval : 1s ) ( Eğitim boardunun üzerinde ) 1) Akış diyagramı Başla Setup timer0 Internal clock Prescaler 1/256 Initialize PORTA ( Giriş ) PORTB (Çıkış ) Başla Kesme bayrağını temizle STATUS ve W yazmacını sakla COUNT << COUNT + 1 PORTA << COUNT PORTB << 0Fh COUNT temizle TMR0 interrupt enable INTCON T0IE bit << 1 Enable interrupt INTCON GIE bit << 1 STATUS ve W yazmacını geri yükle RETFIE DSP COUNT temizle W reg << 15 W << COUNT - W COMF PORTB RETURN Hayır W reg = 0 Evet CALL DSP Şekil 5-86 Program akış diyagramı 227

241 Kesme ( İnterrupt ) 2) Timer0 program1 ;**************************************************************************** ; Timer0 programı (4MHz Oscillator >> System clock 1MHz ; Zaman açımı frekansı = Hz / 256 /256 = 15.26Hz ; Cycle = 1 / = 65.5ms ;**************************************************************************** LIST P=16F84,R=DEC INCLUDE "P16F84.INC" ; include dosyası W_TEMP EQU H'10' ; STATUS_TEMP EQU H'11' COUNT EQU H'12' ORG GOTO H'00' MAIN MAIN ORG H'04' GOTO ISR BSF STATUS,RP0 ;Bank1 e geç BCF INTCON,GIE ;disenable intrrupt MOVLW B' ' ;internal clock, prescaler 1:256 MOVWF OPTION_REG ; CLRF TRISB ;TRISB=0 PORTB tamamı çıkış MOVLW B'11111' ;PORTA DATA MOVWF TRISA ;PORTA tamamı giriş BCF STATUS,RP0 ;Bank0 a geç MOVLW B' ' ;PORTB ilk data MOVWF PORTB ;PORTB data CLRF COUNT LOOP BSF INTCON,T0IE ;timer0 zaman aşımı kesme enable BSF INTCON,GIE ;enable kesme MOVLW D'15' ;65.5ms X 15 = 982.5ms( yaklaşık 1s ) SUBWF COUNT,W ;Kesme sayısı = 15? BTFSC STATUS,Z ; 15 >> CALL DSP, veya 15 >> LOOP CALL DSP ; 228

242 GOTO LOOP DSP CLRF COUNT ;COUNT temizleme COMF PORTB,F ; PORTB bilgiyi tersleme RETURN ;************************************************* ; Timer0 kesme programı 04h adresinden başlar. ;************************************************* Kesme ( İnterrupt ) ISR BCF INTCON,T0IF ;kesme bayrağını temizleme PUSH MOVWF W_TEMP ;W register değerini sakla SWAPF STATUS,W ;SWAP komutu Z bayrağından etkilenmez MOVWF STATUS_TEMP ;STATUS register değerini sakla INCF COUNT,F ;Kesme program POP SWAPF STATUS_TEMP,W; STATUS register değerini geri yükle MOVWF STATUS SWAPF W_TEMP,F ; W register değerini geri yükle SWAPF W_TEMP,W RETFIE END 229

243 Kesme ( İnterrupt ) (7) Timer0 program2 ( TMR0 ın Initial değeri setleme ) Şekilde görüldüğü gibi LED lerin yanıp sönmesini sağlayan program yapalım ( Interval : 1s ) ( Eğitim boardunun üzerinde ) 1) Timer0 program2 ;**************************************************************************** ; Timer0 programı.(4mhz Oscillator >> System clock 1MHz ; Zaman aşımı frekansı = Hz / 256 /195 = 20.03Hz ; Cycle = 1 / = 49.93ms ;**************************************************************************** LIST P=16F84,R=DEC INCLUDE "P16F84.INC" ; include dosyası W_TEMP EQU H'10' ; STATUS_TEMP EQU H'11' COUNT EQU H'12' ORG GOTO H'00' MAIN MAIN ORG H'04' GOTO ISR BSF STATUS,RP0 ;Bank1 e geç BCF INTCON,GIE ;disenable intrrupt MOVLW B' ' ;internal clock, prescaler 1:256 MOVWF OPTION_REG ; CLRF TRISB ;TRISB=0 PORTB tamamı çıkış MOVLW B'11111' ;PORTA DATA MOVWF TRISA ;PORTA tamamı giriş BCF STATUS,RP0 ;Bank0 a geç MOVLW B' ' ;PORTB ilk data 230

244 MOVWF PORTB ;PORTB data CLRF COUNT MOVLW H'3C' ;FFh C3h = 3Ch MOVWF TMR0 ;TMR0 << 3Ch(195) Kesme ( İnterrupt ) BSF INTCON,T0IE ;timer0 zamanaşımı kesme enable BSF INTCON,GIE ;enable kesme LOOP MOVLW D'20' ;49.93ms X 20 = 998.5ms( yaklaşık 1s SUBWF COUNT,W ;Kesme sayısı = 20? BTFSC STATUS,Z ; 20 >> CALL DSP, veya 20 >> LOOP CALL DSP ; GOTO LOOP DSP CLRF COUNT ;COUNT temizle COMF PORTB,F ; PORTB datayı tersleme RETURN ;************************************************* ; Timer0 kesme programı 04h adresinden başlar. ;************************************************* ISR BCF INTCON,T0IF ;kesme bayrağını temizle PUSH MOVWF W_TEMP ;W register değerini sakla SWAPF STATUS,W ;SWAP komutu Z bayrağından etkilenmez MOVWF STATUS_TEMP ;STATUS register değerini sakla MOVLW H'3C' ;TMR0 << 3Ch(195) MOVWF TMR0 INCF COUNT,F ;Kesme program POP SWAPF STATUS_TEMP,W ;STATUS register değerini geri yükle MOVWF STATUS SWAPF W_TEMP,F ; W register değerini geri yükle SWAPF W_TEMP,W RETFIE END 231

245 Kesme ( İnterrupt ) Uygulama 5-30 timer0 program 1 ile timer0 program 2 arasındaki farklılıkları yazınız. Uygulama 5-31 Eğitim boardunuzda bulunan yedi segment displayde 0 dan F e kadar sayan bir program yapınız. ( Interval 1 saniye ) Timer0 kesmesini kullanmalısın. 232

246 Çizgi takip eden Robot 10 ÇİZGİ TAKİP EDEN ROBOT ( Line trace robot control ) (1) ÇİZGİ TAKİP EDEN ROBOT Çizgi takip eden robotu PIC ile kontrol edebiliriz. Bizim çizgi takip eden robotumuz siyah çizgide hareket eder. Bu tür çizgi takip eden robotların büyükleri fabrikalarda kullanılmaktadır. Çizgi sensörü PIC16F84 DA motor Şekil 5-87 Çizgi takip eden robot hattı 1) Çizgi sensörü Çizgi sensörü PIC e çizgi hakkında bilgi gönderir. Bu sensor çizgi takip eden robot için gerekli olan siyah veya beyaz çizgi bilgilerini sağlar. (a) Infra-red LED and Foto transistor Foto transistörden geçen akım bu transistöre düşen ışık miktarına bağlıdır. Bu karakteristik özelliğini kullanarak optic sensor yapabiriz. 233

247 Çizgi takip eden Robot IR LED Foto TR Güçlü yansıma Beyaz zemin IR LED Foto TR Zayıf yansıma Siyah zemin Şekil 5-88 Siyah ve Beyaz zeminde sensor durumu 10k 50k 200 PIC Ucuna Infra-red LED Foto transistör (b) Foto transistörler Şekil 5-89 Sensör devresi Siyah zeminin ışık yansıması 100uA Beyaz zeminin ışık yansıması 300uA Şekil 5-90 Foto transistörde ışığa göre akımın geçişi 234

248 Çizgi takip eden Robot 2) Foto transistor uygulaması (a) Kullanılan aletler a) Bread board 1 b) Dijital avometre 1 c) 5V Güç kaynağı ( Anahtarlı güç birimi ) 1 (a) Kullanılan malzemeler a) Foto transistor (Toshiba TPS603A) 1 b) Infra red LED (Toshiba TLN103A) 1 c) LED (Kırmızı renkte) 1 d) IC Çevirici (74HC04 or 74HC14) 1 e) Direnç 1/4W f) Direnç 1/4W 1k 2 g) Direnç 1/4W 10k 1 h) Direnç 1/4W 20k 1 i) Direnç 1/4W 30k 1 j) Direnç 1/4W 51k 1 Bread board üzerinde uygulama devresini yaparak enerji veriniz. Dirençleri değiştir (1k, 10k, 20k, 30k, 51k) 5V 1k 200 5V LED Infra-red LED TLN103A Foto transistör TPS603A 74HC04 or 74HC14 V Şekil 5-91 Uygulama devresi 235

249 Çizgi takip eden Robot Şekil 5-92 TPS603A nın uç bağlantıları Şekil 5-93 TLN103A nın uç bağlantıları (c) Çıkış geriliminin ölçülmesi a) Direnç değerlerini 1k dan 51k ya kadar değiştirerek çıkış gerilimini ölçünüz. Siyah ve beyaz zeminde foto transistörün çıkış gerilimini ölçerek lojik olarak ( 1 veya 0 ) kararını veriniz. 236

250 Çizgi takip eden Robot b) Ölçme devresi Siyah ve Beyaz kağıt Infra-red LED Foto transistor bread board LED Şekil 5-94 Deney şeması Not : Bu deney için eğer bulunan ortam çok aydınlık olursa iyi sonuç elde edilemez bu nedenle normal aydınlıkta yapılmalıdır ve extra bir aydınlık verilmemelidir. c) Ölçme sonucu Siyah kağıt Beyaz kağıt Direnç 1k 10k 20k 30k 51k Gerilim değeri V V V V V Lojik çıkış Gerilim değeri V V V V V Lojik çıkış d) Sonuç Beyaz kağıtta, kırmızı renkte LED ( ON OFF ) Siyah kağıtta, kırmızı renkte LED ( ON OFF ) Sensör sistemi için uygun olan direnç değerine karar veriniz. ( k ) ** Aşırı aydınlık altında hatalar vardır. Parlak dış aydınlıkta sensör ayarını yapmak oldukca zordur. Çizgi takip eden robotlar için özel sensörler kullanırız. 237

251 Çizgi takip eden Robot 3) Foto IC ( Hamamatsu S7136 ) Şekil 5-95 S7136 şeması Bu ışık modilasyonlu foto IC ler arka zeminin ( bulunduğu ortamın ) parlak olmasında geliştirilmiş optic sensörlerdir. Foto IC chipte fotodiyod, önyükselteç, karşılaştırıcı, osilatör, LED sürücü ve sinyal işletim devresi vb. elemanlar bulunmaktadır. Optik sekroniz tip foto sensörler foto reflektör ve foto kesmelere sahip olduklarından bulunduğu ortamın aydınlığından en az şekilde etkilenirler. Ayrıca kolay bir şekilde bu foto IC lere dış LED bağlayarak çıktıları görebiliriz. Infra red LED 5V 2k VR S7136 1k Sinyal LED i PIC ucuna GND Beyaz >> Lojik 0 Siyah >> Lojik 1 Şekil 5-96 S7136 in iletken bağlantısı 238

252 Çizgi takip eden Robot (2) Çizgi takip eden robot 1) Çizgi takip eden robot devre şeması +5V line sensor PIC16F84 PA0 PA1 PB7 PA2 PB6 PA3 PB5 PB4 IN2 IN V 7 GND TA7257P Motor Driver M2 M1 +5V 10k PB3 PB2 PB1 Motor PB0 MCLR +5V GND PIC Writer +5V MCLR CLOCK DATA 4MHz OSC1 OSC2 IN2 IN GND TA7257P Motor Driver M2 M1 5V 1k 2k monitor LED Motor M 0.1uF IR LED S V 5V 1k M 0.1uF 2k monitor LED line sensor IR LED S7136 Battery 5V 5V 2k 1k monitor LED IR LED S7136 Şekil 5-97 Çizgi takip eden robot devre şeması 239

253 Çizgi takip eden Robot 2) Çizgi takip eden robotun programı (a) Çizgi takip eden robotun temel çalışma prensibi a) PIC ucu ( PORT ) PORT RA4 RA3 RA2 RA1 RA0 Bağlantı N/A Çalıştırma butonu Çizgi sensörü N/A Basılı > Düşük ( Low ) Sol Orta Sağ PORT RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 Bağlantı PIC yazıcı için N/A N/A Sol motor sürücü Sağ motor sürücü data clock N/A N/A IN2 IN1 IN2 IN1 b) TA7257P ( Toshiba ) Motor sürücüsünün dataları Giriş 1 Giriş 2 Çıkış 1 Çıkış 2 MODE 1 1 H H Fren 0 1 L H İleri 1 0 H L Geri 0 0 L L Boşta PA2 PA1 PA0 PIC yazıcı Pil PIC Reset PA3 butonu Güç anahtarı PB0 PB1 PB2 PB3 TA7257P Motor bağlantısı Şekil 5-98 Çizgi takip eden robot 240

254 Çizgi takip eden Robot c) Temel program 1 ( İleri hareket ) PA3 butonuna basınız Çizgi takip eden robot sadece ileri yönde hareket eder. M M Şekil 5-99 Temel Program 1 ;************************************************************************** ; Çizgi takip eden robot programı 1 ( ileri yönde hareket ) ;************************************************************************** ; sensör durumu ; ; o o o ; RA2 RA1 RA0 ; ; beyaz>> '0' sinyali gönderildiğinde sinyal LED i yanar. ; siyah>> '1' sinyali gönderildiğinde sinyal LED i yanmaz. ; portb xxxx0101 ileri ; portb xxxx1010 geri ; portb xxxx1111 fren ; portb xxxx0000 boşta ; portb xxxx0100 sola dönüş ; portb xxxx0001 sağa dönüş ; LIST P=16F84,R=DEC INCLUDE "P16F84.INC" COUNT EQU H'10' ;include dosyası ORG H'00' ;başlangıç 00h GOTO INISET ; 241

255 Çizgi takip eden Robot INISET ;Etiket BSF STATUS,RP0 ;Bank1 e geç MOVLW B'11111' ; B >> W reg 0;OUT 1;IN MOVWF TRISA ;W >> trisa porta >> giriş MOVLW B' ' ; B >> W reg 0;Çıkış 1;Giriş MOVWF TRISB ;W >> trisb portb >> Çıkış BCF STATUS,RP0 ;Bank0 a geç MOVLW B' ' ; >> W reg MOVWF PORTB ;W reg >> portb fren ;************************************************************************* ; ana bölüm ;************************************************************************* START ;Etiket BTFSC PORTA,3 ;switch(ra3) on? ( Basılı mı? ) GOTO START ;switch off >> startta geri dön MAIN ; Etiket MOVLW B' ' ; >> W reg MOVWF PORTB ;W reg >> portb ileri GOTO MAIN END 242

256 Çizgi takip eden Robot d) Temel program 2 ( Uygulama 5-32 ) Aşağıdaki şekilde görüldüğü gibi hareketi sağlayan program yapalım PA3 butonuna basılır. İlk once çizgi takip eden robot 2 saniye ileri gidecek 2s M M Daha sonra çizgi takip eden robot 2 saniye ters yöne hareket eder. M M 2s Son olarakta çizgi takip eden robot 2 saniye sağa doğru döner. M M Şekil Temel program 2 243

257 Çizgi takip eden Robot 3) Çizgi takip eden program 1 ( Uygulama 5-33 ) Aşağıdaki şekil de görüldüğü gibi ( PA1 ) sensörüyle tek bir siyah çizgide hareket eden bir program yapalım. Sensör durumu >> Beyaz Sol motor >> ON Sağ motor >> OFF M M Sensör durumu >> Siyah Sol motor >> OFF Sağ motor >> ON M M Sensör durumu >> White Sol motor >> ON Sağ motor >> OFF M M Şekil Çizgi takip eden robot program1 244

258 Çizgi takip eden Robot 4) Program 1 in akış diyagramı Başla Tanımlama Hayır PA3 buton ON Evet Sol motor ON Sensör değerini oku PA1 : Beyaz Hayır Evet Sol motor ON Sağ motor OFF Sol motor OFF Sağ motor ON Şekil Program 1 in akış diyagramı 245

259 Çizgi takip eden Robot Uygulama 5-34 Çizgi takip eden robot iki sensör yardımıyla ( PA0 ve PA2 ) siyah bir çizgi üzerinde aşağıdaki şekildeki gibi hareket etmelidir. ( Akış diyagramını yapınız. ) Sensör durumu >> Sağa dönmeli M M Sensör durumu >> Sağa dönmeli M M Sensör durumu >> Sola dönmeli M M Sensör durumu >> Sola dönmeli M M Sensör durumu >> İleri hareket etmeli M M Sensör durumu >> Siyah çizgiyi bulana kadar geri gitmeli M M Şekil Çizgi takip eden program 1 246

260 Müzik programı 11 MÜZİK PROGRAMI (1) Müzik programı Bizim eğitim setinde buzzer bulunmaktadır. Bu buzzer PIC in PA3 ucuna bağlıdır. Tabiki bu ucu aynı zamanda da LED çıkışı içinde kullandığımızdan dolayı birde kalıcı tip anahtar mevcuttur. Biz müzik programını kullanmak istediğimizde bu anahtarının konumunu değiştirmemiz gerekir. Böylece PA3 ucuna Buzzer bağlanmış olur.. 5V Buzzer 2SC k Anahtar seçimi PA3 PORT 22k 5V 10k Şekil Eğitim setindeki Buzer devresi Aşağıdaki şekilde görüldüğü gibi bir kare dalga gönderdiğimizde buzzerde dalgalı bir ses duyulur. Biz PIC programları yardımıyla bu tür ses dalgası üretebiliriz. Audio frekansı ( Hz) arasındadır. Buzzer Şekil Müzik ( Ses ) dalgası 247

261 Müzik programı (2) Müzik programı 1Khz lik kare dalgada buzerde müzik üreten program yapalım. 1) Program çerçevesi Başla PA0 anahtarını açın Buzzer ON PA0 anahtarını kapayın Buzzer OFF PA3OFF PA3ON PA3OFF PA3ON 0.5ms 0.5ms 1ms Şekil kHz de Buzzer 248

262 2) Program listesi ;************************************************ ; 1Khz Buzer programı ;************************************************ LIST P=16F84,R=DEC INCLUDE "P16F84.INC" COUNT1 EQU H'10' COUNT2 EQU H'11' INI BSF STATUS,RP0 ;Bank1 e geç MOVLW B'10111' ;PORTA3 > çıkış MOVWF TRISA ; MOVLW B' ' ;PORTB > tamamı çıkış MOVWF TRISB BCF STATUS,RP0 ;Bank0 a geç MAIN BTFSC PORTA,0 ;PORTA butonu basılı mı? GOTO MAIN ;PORTA basılı değil >> bekle Müzik programı LOOP BSF PORTA,3 ;PORTA bit3 on MOVLW D 166 ;3 x 166 = 498uS=0.5ms MOVWF COUNT2 ; LOOP1 DECFSZ COUNT2,F ; GOTO LOOP1 BCF PORTA,3 ;PORTA bit3 off MOVLW D 166 ;3 x 166 = 498uS=0.5ms MOVWF COUNT2 ; LOOP2 DECFSZ COUNT2,F ; GOTO LOOP2 GOTO MAIN END 249

263 Müzik programı Uygulama 5-35 PA0 butonuna bastığımızda bir saniye buzzerde ses çıkaran program yapınız. (3) Müzik program Müzik skalası ile frekansı arasındaki ilişki tablosu aşağıda görülmektedir. Biz bu frekansları kullanarak müzik yapabiliriz. C# D# F# G# A# C D E F G A B C C C# D D# E F F# Hz Hz Hz Hz Hz Hz Hz G G# A A# B C Hz Hz Hz Hz Hz Hz Şekil Müzik skalası ile frekansı arasındaki ilişki tablosu Uygulama 5-36 Lütfen sevdiğin bir müziği PIC de programlayınız. 250

264 PIC komutlarının açıklanması PIC KOMUTLARININ AYRINTILI AÇIKLAMALARI 1 ADDLW 19 IORLW 2 ADDWF 20 IORWF 3 ANDLW 21 MOVF 4 ANDWF 22 MOVLW 5 BCF 23 MOVWF 6 BSF 24 NOP 7 BTFSC 25 RETFIE 8 BTFSS 26 RETLW k 9 CALL 27 RETURN CLRF CLRW 28 RLF 29 RRF 12 CLRWDT 30 SLEEP 13 COMF 31 SUBLW 14 DECF 32 SUBWF 15 DECFSZ 33 SWAPF 16 GOTO 34 XORLW 17 INCF 35 XORWF 18 INCFSZ 251

265 25 RETFIE ( Return from interrupt ) PIC komutlarının açıklanması Komut İşleçler İşlem RETFIE Yok Stack Memory(TOS) Program Sayıcı 1 GIE bit Status Etkisi Yok Açıklama Kesme alt programından ana programa dönemek için kullanılır. Saat çevrimi ( Cycle ) için POPed ve TOS ( Top of Stack ) ları PC ye yüklenir. (GIE)(INTCON<7>). (Global Interrupt Enable bit) 1 ( set ) yapılır. İki zamanlı bir komuttur. Kelimeler 1 Saat çevrimi ( Cycle ) 2 Örnek ORG 4 BSF PORTB,2 RETFIE Kodlama Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Birincide Kod çöz İşlem yok GIE bitini set et Stacktan POP et İkincide İşlem yok İşlem yok İşlem yok İşlem yok 276

266 26 RETLW ( Return with Literal in W ) Komut RETLW k İşleçler 0 <= k <= 255 İşlem PIC komutlarının açıklanması Stack Memory(TOS) Program Sayıcı Status Etkisi Açıklama k W register Yok Alt programda W registerine sekiz bitlik k literalini yükleme işini yapar. Program sayıcı döneceği adresi TOS dan PC ye yükleyerek gerçekleştirir. İki zamanlı bir komuttur. Kelimeler 1 Saat çevrimi ( Cycle ) 2 Örnek W << Z flag BTFSC STATUS,Z RETLW 0 RETLW 1 7 Segmen display bilgi tablosu SEGDAT ADDWF PCL,F ;PCL(program sayıcı) + W >>PCL RETLW B' ' ;segmen data 0 >> W (PCL+0) RETLW B' ' ;segmen data 1 >> W (PCL+1) RETLW B' ' ;segmen data 2 >> W (PCL+2) RETLW B' ' ;segmen data 3 >> W (PCL+3) RETLW B' ' ;segmen data 4 >> W (PCL+4) RETLW B' ' ;segmen data 5 >> W (PCL+5) Kodlama x x k k k k k k k k Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz literal k sabiti GIE bitini Stacktaki Birincide oku set et POP u W registere yaz İkincide İşlem yok İşlem yok İşlem yok İşlem yok 277

267 PIC komutlarının açıklanması 27 RETURN ( Return from Subroutine ) Komut İşleçler İşlem RETURN Yok Stack Memory(TOS) Program Counter Status Etkisi Açıklama Yok Alt programdan dönmek için kullanılır. Program sayıcıya POPed ve TOS yüklenir. Böylece program sayıcıdaki adrese geri dönülür. İki zamanlı bir komuttur. Kelimeler 1 Saat çevrimi ( Cycle ) 2 Örnek Altprogramdan geri Saat çevrimi ( Cycle ) CALL SUB1 SUB1 DECF f,f RETURN Kodlama Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Birincide Kod çöz İşlem yok İşlem yok Stacktan POP et. İkincide İşlem yok İşlem yok İşlem yok İşlem yok 278

268 PIC komutlarının açıklanması 28 RLF ( Rotate Left f through Carry ) Komut RLF f,d İşleçler 0 <= f <= 127 İşlem d {0,1} Z D C b7 b6 b5 b4 b3 b2 b1 b0 STATUS d=0 d=1 W register Memory f Status Etkisi Taşıma bayrağı ( C flag ) Açıklama f registerinin içeriğini bir bit SOLA doğru kaydırır. Eğer d=0 ise sonuç w registerine d=1 ise f registerinin içine yüklenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek MEMORY multiplied by four. BCF STATUS,C RLF MEMORY,F BCF STATUS,C RLF MEMORY,F MEMORY multiplied by two and transfer to W register. BCF STATUS,C RLF MEMORY,W Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 279

269 PIC komutlarının açıklanması 29 RRF( Rotate Right f through Carry) Komut RRF f,d İşleçler 0 <= f <= 127 İşlem d {0,1} Z D C b7 b6 b5 b4 b3 b2 b1 b0 STATUS d=0 d=1 W register Memory f Status Etkisi Taşıma bayrağı ( C flag ) Açıklama f registerinin içeriğini bir bit SAĞA doğru kaydırır. Eğer d=0 ise sonuç w registerine d=1 ise f registerinin içine yüklenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek MEMORY devided by four. BCF STATUS,C RRF MEMORY,F BCF STATUS,C RRF MEMORY,F MEMORY divided by two and transfer to W register. BCF STATUS,C RRF MEMORY,W Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 280

270 PIC komutlarının açıklanması 30 SLEEP (Sleep) Komut SLEEP İşleçler Yok İşlem 00h >> WDT 0 >> WDT prescaler 1 >> TO 0 >> PD Status Etkisi TO,PD Açıklama Statustaki güç kesim (power-down PD ) bitini temizler ve sure aşım (Time-out TO ) bitini bir ( set ) yapar. Watchdog Timer ( WDT ) ve önbölücü ( prescaler ) da temizlenir. İşlemciyi uyku moduna geçirir ve daha az güç harcamasını sağlar. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek WKesme ile uykudan uyandırma ve bir alt satırdan çalışmasına devam ettirme. SLEEP CALL JOB Kodlama Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz İşlem yok İşlem yok Sleep e git 281

271 31 SUBLW ( Subtract W from Literal ) Komut SUBLW k PIC komutlarının açıklanması İşleçler 0 <= k <= 255 İşlem k W register W register Status Etkisi C,DC,Z flag Açıklama k literalinden W registeri çıkartılır ( 2 ye tamamlama yöntemi ile ) ve sonuç W registerine yüklenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek W <= k f <= k SUBLW k MOVF f,w BTFSC STATUS,C SUBLW N ; N f >> W GOTO NEXT ;W <= k BTFSC STATUS,C GOTO NEXT ; f <= k W > k f > k SUBLW k MOVF f,w BTFSS STATUS,C SUBLW k ; N f >> W GOTO NEXT ;W > k BTFSS STATUS,C GOTO NEXT ; f > k k > W register Z=0,CY=1 k = W register Z=1,CY=1 k < W register Z=0,CY=0 Kodlama x k k k k k k k k Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz literal k sabiti İşlem yap W registerine oku yaz 282

272 32 SUBWF ( Subtract W from f ) PIC komutlarının açıklanması Komut SUBWF f,d İşleçler 0 <= f <= 127 d {0,1} İşlem d=0 Memory f W register W register d=1 Memory f Status Etkisi C,DC,Z flag Açıklama f registerinden W registeri ( ikiye tamamlama yöntemi ile ) çıkartılır. Eğer d=0 ise sonuç W registerine d=1 ise f registerine yüklenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek (W) << f - (W) f << f +(W) SUBWF f,w SUBWF f,f f > W register f = W register f < W register Z=0,CY=1 Z=1,CY=1 Z=0,CY=0 Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 283

273 33 SWAPF ( Swap Nibbles in f ) Komut SWAPF f,d İşleçler 0 <= f <= 127 d {0,1} İşlem Memory f PIC komutlarının açıklanması Memory f d=0 W register Status Etkisi Yok d=1 Memory f Açıklama f registerinin alt dört biti ile üst dört biti yer değiştirir. Eğer d=0 ise sonuç W registerine d=1 ise f registerine yüklenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek High 4 bit take out SWAPF DATA,W ANDLW B Separate of high 4bit and low 4bit of W register. MOVWF MEM1 MOVWF MEM2 SWAPF MEM1,F MOVLW B ANDWF MEM1,F ; high 4bit ANDWF MEM2,f ;low 4bit Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 284

274 PIC komutlarının açıklanması 34 XORLW ( Exclusive OR literal with W ) Komut IORLW k İşleçler 0 <= k <= 255 İşlem W register W register k Status Etkisi Z flag Açıklama W registerinin içeriği ile 8 bitlik k literaline XOR uygulanır. Sonuç W registerine yüklenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek W registerinin yüksek 4 bitini tersler. XORLW B W registerinin tam tersini alır. XORLW H FF Kodlama k k k k k k k k Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz literal k sabiti İşlem yap W registerine oku yaz 285

275 35 XORWF ( Exclusive OR W with f ) PIC komutlarının açıklanması Komut XORWF f,d İşleçler 0 <= f <= 127 d {0,1} İşlem W register d= W register k d= Memory f Status Etkisi Z flag Açıklama W registeri ile f registerine XOR mantıksal ifadesi uygulanır. Eğer d=0 ise sonuç W registerine d=1 ise f registerine yüklenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek PORTB(bit2) yi tersler MOVLW B XORWF PORTB,F MEMORY(düşük 4bit) tersler ve sonucu MEMORY dosyasına yazar. MOVLW B XORWF MEMORY,F Kodlama MEMORY dosyasının AA olduğunu kontrol eder. AA ise Zero = 1 dir. MOVLW H AA XORWF MEMORY,W BTFSS STATUS,Z GOTO ( AA değilse ) GOTO ( AA ise ) d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 286

276 PIC komutlarının açıklanması 11 CLRW ( Clear W ) Komut CLRW İşleçler Yok İşlem W register Status Etkisi Zero flag = 1 ( Sıfır bayrağı ) Z flag Açıklama W registerinin içeriğini temizler ve Sıfır ( Zero ) bayrağını 1 yapar. ( set eder ) Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek CLRW W register is cleared. Kodlama x x x x x x x Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz İşlem yok İşlemi W registerine yap yaz 262

277 12 CLRWDT ( Clear Watchdog Timer ) PIC komutlarının açıklanması Komut CLRWDT İşleçler Yok İşlem 00h >> WDT 0 >> WDT prescaler ( önbölücü ) 1 >> TO 1 >> PD Zero flag = 1 Status Etkisi Z flag ( Z bayrağı ) Açıklama CLRWDT komutu Watchdog Timer içeriğini temizler ( resetler ) Status da bulunan sıfır bayrağıda 1 ( set ) olur. Aynı zamanda ( TimeOut ) TO ve ( Power Down ) PD bitleride 1 ( set ) olurlar. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek CLRWDT Kodlama Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz İşlem yok İşlemi WDT counter a yap yaz 263

278 PIC komutlarının açıklanması 13 COMF ( Complement f ) Komut COMF f,d İşleçler 0 <= f <= 127 d {0,1} İşlem Status Etkisi d=0 Memory f W register d= Memory f Z flag Açıklama f registerinin içeriği terslenir. Eğer d 0 ise sonuç W registerine d 1 ise f. registerine yazılır. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek COMF MEM,0 ;MEM datasını tersler ve sonucu W registerine yazar COMF MEM,1 ; MEM datasını tersler ve sonucu MEM registerine yazar COMF PORTB,0 ;PORTB değerini tersler ve W registere yazar H FF datasının karşılaştırılması. COMF MEM,0 BTFSC STATUS,Z GOTO NEXT Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 264

279 PIC komutlarının açıklanması 14 DECF ( Decrement f ) Komut DECF f,d İşleçler 0 <= f <= 127 d {0,1} İşlem Memory f 1 d=0 W register d=1 Memory f Status Etkisi Z flag Açıklama f registerinin değeri bir azaltılır Eğer d 0 ise sonuç W registere 1 ise f registere yüklenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek DECF f,0 ;f registerinin değerini bir azaltır sonuç W registerine yüklenir. DECF f,1 ;f registerinin değerini bir azaltır sonuç f registerine yüklenir. DECF DATA,F BTFSC STATUS,Z GOTO NEXT Burada DATA bilgisi bir eksilir eğer DATA 0 olursa sıfır bayrağı ( Z flag ) 1 olur ve program GOTO NEXT ten devam eder. Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 265

280 15 DECFSZ ( Decrement f, Skip if 0 ) PIC komutlarının açıklanması Komut DECFSZ f,d İşleçler 0 <= f <= 127 d {0,1} İşlem Memory f 1 d=0 W register d=1 = 0 PC + 2 Memory f Status Etkisi Yok Açıklama f registerinin değeri bir azaltılır. Eğer d=0 ise sonuç W registerine yüklenir, d=1 ise f registerine yüklenir. İşlem sonucunda sonuç 1 ise bir sonraki satırdan program devam eder, 0 ise NOP ( işlem yok ) uygulayarak 1 satır atlar ve ikinci satırdan program devam eder. Kelimeler 1 Saat çevrimi ( Cycle ) 1(2) Örnek MOVLW 8 MOVWF CNT LOOP INCF f,1 DECFSZ CNT,1 GOTO LOOP Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Birincide Kod çöz F registeri oku İşlem yap Gideceği yere yaz Eğer ikinciye atlarsa İşlem yok İşlem yok İşlem yok İşlem yok 266

281 PIC komutlarının açıklanması 16 GOTO ( GOTO Unconditional Branch ) Komut GOTO k İşleçler 0 <= k <= 2047 İşlem Bölüm Adresi Program Sayıcı Status Etkisi Yok Açıklama GOTO koşulsuz bir yönlendirme komutudur. Onbir bitlik bir adres hemen PC bitine <10:0>.yüklenir. PC nin yüksek bitleri de PCLATH<4:3> den yüklenir ve bu adrese program yönlenmiş olur. GOTO iki çevrimli ( clock ) bir komuttur. Kelimeler 1 Saat çevrimi ( Cycle ) 1(2) Örnek GOTO H 3AA Bu komut 3Aah.bölüm adresine git demektir. GOTO LOOP Bu komut LOOP etiketinin adresine git demektir. Bu adres PC de oluşur. ;1ms gecikme alt programı TIMER MOVLW 200 ; 1clock MOVWF COUNT1 ; 1clock DLY2 GOTO $+1 ; 2clock DECFSZ COUNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock Kodlama k k k k k k k kkkk Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Birincide Kod çöz literal k sabiti oku İkinci çevrimde CLRF( Clear f) NOP NOP F registerine yaz NOP İşlemi yap NOP 267

282 PIC komutlarının açıklanması 17 INCF ( Increment f ) Komut INCF f,d İşleçler 0 <= f <= 127 d {0,1} İşlem Memory f 1 d=0 W register d=1 Memory f Status Etkisi Z flag ( Sıfır bayrağı ) Açıklama f registerinin sahip olduğu değeri bir artırır. Eğer d=0 ise sonuç W registerine d=1 ise f registerine yüklenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek NCF f,0 ; f registerinin değerini 1 artırarak sonucu W registerine yükler. NCF f,1 ; f registerinin değerini 1 artırarak sonucu f registerine yükler. aşıma bayrağı ile kullanılması BTFSC STATUS,C NCF f,1 8 bitlik D/A ( dijital / Analog ) çeviriciden çıkış dalgasını görmek için LOOP INCF PORTB,F GOTO LOOP Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 268

283 PIC komutlarının açıklanması 18 INCFSZ ( Increment f, Skip if 0 ) Komut INCFSZ f,d İşleçler 0 <= f <= 127 İşlem d {0,1} Memory f 1 d=0 W register d=1 Memory f = 0 PC + 2 Status Etkisi Yok Açıklama f registerinin değerini bir artırır Eğer d=0 ise sonucu W registerine d=1 ise f registerine yükler. İşlem sonucunda sonuç 1 ise bir sonraki satırdan program devam eder, 0 ise NOP ( işlem yok ) uygulayarak 1 satır atlar ve ikinci satırdan program devam eder. Kelimeler 1 Saat çevrimi ( Cycle ) 1(2) Örnek INCFSZ f,0 INCFSZ f,1 Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Birincide Kod çöz F registeri oku İşlem yap Gideceği yere yaz Eğer ikinciye atlarsa İşlem yok İşlem yok İşlem yok İşlem yok 269

284 PIC komutlarının açıklanması 19 IORLW ( Inclusive OR literal with W ) Komut IORLW k İşleçler 0 <= k <= 255 İşlem W register k W register Status Etkisi Z flag ( Sıfır bayrağı ) Açıklama W registerinin içeriği 8 bitlik k literali ile OR lanır. Sonuç W registerine yüklenir. İşlem sonucu 0 ise statusun sıfır bayrağı ( Zero flag ) 1 olur. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek IORLW B W registeri 4 biti 1 olanla OR lanır. W registeri FFh. Ile OR lanır. IORLW H FF bit test ( W registerinin 0 testi ) IORLW 0 Kodlama k k k k k k k k Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz literal k sabiti İşlem yap W registerine oku yaz 270

285 PIC komutlarının açıklanması 20 IORWF ( Inclusive OR W with f ) Komut IORWF f,d İşleçler 0 <= f <= 127 İşlem Status Etkisi Açıklama Kelimeler 1 Saat çevrimi ( Cycle ) 1 d {0,1} W register k Z flag W registeri f registeri ile OR mantıksal işlemin yapılır. Sonuç eğer d=0 ise W registerine d=1 ise f registerine yüklenir. Örnek IORWF f,0 (W) << f OR (W) IORWF f,1 MOVLW B IORWF PORTB,F MOVLW B IORWF f,1 d=0 d=1 f<< f OR (W) W register Memory f Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 271

286 21 MOVLW ( Move Literal to W ) PIC komutlarının açıklanması Komut MOVLW k İşleçler 0 <= k <= 255 İşlem k W register Status Etkisi Yok Açıklama Sekiz bit literal k bilgisini W registerine yükler. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek (W) << 30h ADDLW H 30 FSR << AFh MOVLW H AF MOVWF f PORTB << B MOVLW B MOVWF PORTB Kodlama x x k k k k k k k k Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz literal k sabiti İşlem yap W registerine oku yaz 272

287 PIC komutlarının açıklanması 22 MOVF (Move f) Komut MOVF f,d İşleçler 0 <= f <= 127 İşlem Memory f d {0,1} d=0 d=1 W register Memory f Status Etkisi Z flag Açıklama f registerinin içeriği d=0 ise W registerine d=1 ise f registerine ( kendisine ) yüklenir. d=1 olduğu durumlarda f registerinin içeriğini test etmemizde ( 0 olup olmadığına ) fayda vardır. Çünkü bu durumda statustaki sıfır bayrağı etkilenir. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek Memory Test MOVF f,f F registerinin sıfır bayrağına etkisini test etmekte fayda vardır. f1 registerindeki bilgilerin f2 registerine iletilmesi. MOVF f1,w MOVWF f2 F registerindeki bilgilerin PORT B den çıkış olarak alınması MOVF f,w MOVWF PORTB Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz F registeri İşlem yap Gideceği oku yere yaz 273

288 PIC komutlarının açıklanması 23 MOVWF (Move W to f) Komut MOVWF f İşleçler 0 <= f <= 127 İşlem W register Memory f Status Etkisi Yok Açıklama W registerindeki bilgiler f registerine taşınır. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek (0Ah) değeri f registerine iletilir. MOVLW H 0A MOVWF f Kodlama f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz f registerini İşlemi f registerine oku yap yaz 274

289 PIC komutlarının açıklanması 24 NOP ( İşlem yok ) Komut NOP İşleçler Yok İşlem İşlem yok Status Etkisi Yok Açıklama İşlem yok Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek Zamanlayıcı alt programı TIMER MOVLW 200 ; 1clock MOVWF COUNT1 ; 1clock DLY2 GOTO $+1 ; 2clock NOP ;1clock NOP ;1clock DECFSZ COUNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock Kodlama x x o Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod Çöz İşlem yok İşlem yok İşlem yok 275

290 PIC komutlarının açıklanması 5 BCF( Bit Clear f) Komut BCF f,b İşleçler 0 <= f <= <= b <= 7 İşlem 0 AND FSR b7 b6 b5 b4 b3 b2 b1 b0 Status Etkisi Yok Açıklama f registerinin b ninci bitini temizle. ( 0 Sıfır yap ) Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek BCF PORTB,1 PORTB in 1. bitini sıfırlar. BCF STATUS,0 Carry bayrağını sıfır yapar BCF STATUS,RP0 Bank0 a geçiş yapar BCF STATUS,2 Zero bayrağını sıfırlar Kodlama b b b f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz f registerini İşlemi f registerine oku yap yaz 256

291 PIC komutlarının açıklanması 6 BSF ( Bit Set f ) Komut BSF f,b İşleçler 0 <= f <= <= b <= 7 İşlem 1 OR FSR b7 b6 b5 b4 b3 b2 b1 b0 Status Etkisi Yok Açıklama f registerinin içerinde bulunan sayının b ninci bitini 1 yapar. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek BSF PORTB,3 PORTB nin 3.bitini 1 yapar BSF STATUS,0 Carry bayrağını 1 yapar BSF STATUS,RP0 Bank1 e geçiş yapar BSF STATUS,2 Zero bayrağını 1 yapar Kodlama PORTB nin 0.bitinin kare dalga oluşması ( yanıp sönmesi ) BSF PORTB,0 CALL TIMER BCF PORTB, b b b f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Decode Read Process Write register f data register f 257

292 7 BTFSC ( Bit Test f, Skip if Clear ) Komut BTFSC f,b İşleçler 0 <= f <= <= b <= 7 İşlem Skip if (f<b>) = 0 PIC komutlarının açıklanması b7 b6 b5 b4 b3 b2 b1 b0 0 PC + 2 Status Etkisi Yok 1 PC + 1 Açıklama f registerinin b ninci biti 1 ise program akışı bir alt satırdan devam eder, eğer 0 ise bir alt satırı atlayarak sonraki komuttan devam eder. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek BTFSC Memory,7 Eğer Memory nin 7. biti 0 ise işlem bir satır atlayarak sonraki satırdan devam eder. BC ( Branch Carry ) BTFSC STATUS,0 Carry flag= 0 >> 1 satır atlayarak devam eder GOTO LABEL Carry flag=1 >> GOTO LABEL BZ ( Branch Zero ) BTFSC STATUS,2 Zero flag = 0 >> 1 satır atlayarak devam eder GOTO LABEL Zero flag =1 >> GOTO LABEL Kodlama b b b f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Birincide Kod çöz f registeri İşlemi f registerine oku yap yaz İkinci çevrimde ( Atlama varsa ) İşlem yok İşlem yok İşlem yok İşlem yok 258

293 8 BTFSS ( Bit Test f, Skip if Set ) Komut BTFSS f,b İşleçler 0 <= f <= <= b <= 7 İşlem Skip if (f<b>) = 1 PIC komutlarının açıklanması b7 b6 b5 b4 b3 b2 b1 b0 1 PC + 2 Status Etkisi Yok 0 PC + 1 Açıklama f registerinin b ninci biti 0 ise program akışı bir alt satırdan devam eder, eğer 1 ise bir alt satırı atlayarak sonraki komuttan devam eder. NOP( No operation işlem yok demektir ve bu sürede 2 saykıllık 2T zaman harcanır ) Kelimeler 1 Saat çevrimi ( Cycle ) 1(2) Örnek BTFSS Memory,7 Eğer Memory nin 7. biti 1 ise işlem bir satır atlayarak sonraki satırdan devam eder. BNC ( Branch None Carry ) BTFSS STATUS,0 Carry flag= 1 >> 1 satır atlayarak devam eder GOTO LABEL Carry flag=0 >> GOTO LABEL BNZ (Branch Yok Zero) BTFSS STATUS,2 Zero flag = 1 >> 1 satır atlayarak devam eder GOTO LABEL Zero flag =0 >> GOTO LABEL Kodlama b b b f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Birincide Kod çöz f registerini oku İşlemi yap f registerine yaz İkinci çevrimde ( Atlama varsa ) İşlem yok İşlem yok İşlem yok İşlem yok 259

294 PIC komutlarının açıklanması 9 CALL ( Call Subroutine ) Komut CALL k İşleçler 0 <= k <= 2047 İşlem Program Counter + 1 Stack Memory Altprogram adres Program Counter Status Etkisi Yok Açıklama Altprogramı çağırır. Önce program counter ı bir artırır (PC+1) ve bunu stack memory e yükler Sonra ait program adresi PC nin<10:0> bitlerine yüklenir. PC nin üst bitleri PCLATH deki değerlerle yüklenir. CALL işlemi 2 saykıllık bir komuttur.. Kelimeler 1 Saat çevrimi ( Cycle ) 1(2) Örnek CALL H 3AA Bu komut programın 3AAh adresinden itibaren çalışmasını sağlar. CALL SUB1 Bu komut SUB1 den itibaren programın çalışmasını sağlar. 1ms pulse programı BSF PORTB,1 ;pulse on CALL TIMER ;yaklaşık 1ms Timer BCF PORTB,1 ;pulse off ;1ms timer altprogram TIMER MOVLW 200 ; 1clock MOVWF COUNT1 ; 1clock DLY2 GOTO $+1 ; 2clock DECFSZ COUNT1,1 ; 1(2)clock GOTO DLY1 ; 2clock RETURN ; 2clock Kodlama k k k k k k k kkkk Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Birincide Kod çöz literal k sabiti oku PC yi stack a yaz İkinci çevrimde CLRF( Clear f) NOP NOP 260 F registerine yaz NOP İşlemi yap NOP

295 PIC komutlarının açıklanması 10 CLRF ( Clear f ) Komut CLRF f İşleçler 0 <= f <= 127 İşlem Memory f Status Etkisi Zero flag = 1 ( Sıfır bayrağı ) Z flag Açıklama f registerinin içeriğini temizler Z bayrağını 1 yapar. ( set eder ) Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek CLRF MEMORY MEMORY i temizler( sıfırlar ) Kodlama f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz f registerini İşlemi f registerine oku yap yaz 261

296 PIC komutlarının açıklanması 1 ADDLW (Add Literal ve W) Komut ADDLW k İşleçler 0 <= k <= 255 İşlem W register k W register Status Etkisi C,DC,Z flag( bayrak ) Açıklama registerine yazar. W registerinin içeriğini k sabit sayısı ile toplayıp sonucu W Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek (W) << (W)+30h (W) << (W)+1 ADDLW H 30 ADDLW 1 (W) << (W)-1 ADDLW H FF MOVLW H ADDLW H AF (W) << H 12 C flag = 1 Kodlama x k k k k k k k k Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz k literalini İşlemi W ye yaz oku yap 252

297 PIC komutlarının açıklanması 2 ADDWF ( Add W ve f ) Komut ADDWF f,d İşleçler 0 <= f <= 127 d {0,1} İşlem Memory f W register d=0 W register d=1 Memory f Status Etkisi C,DC,Z flag Açıklama W registerinin içeriğini f registeri ile toplar. Eğer d 0 olursa sonucu W registerine 1 olursa f registerine yazar. d = 0 ise W registerine d = 1 ise f registerine Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek (W) << f + (W) FSR << f +(W) ADDWF f,0 ADDWF f,1 ADDWF f,0 İşlem öncesi İşlem sonrası W = 05h, f = F5h W = FAh, f = F5h Kodlama d f f f f f f f Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz f registerini İşlemi Gideceği oku 253 yap yere yaz

298 3 ANDLW ( AND literal with W) Komut ANDLW k İşleçler 0 <= k <= 255 İşlem PIC komutlarının açıklanması W register k W register Status Etkisi Z flag Açıklama W registerin içeriği ile k sabitine AND ( ve ) işlemi uygulanır ve sonuç W registerine yazılır. Kelimeler 1 Saat çevrimi ( Cycle ) 1 Örnek ANDLW B low 4 bits clear ANDLW 0 = CLRW ANDLW H FF test W register bit test( 0 test of low 3 bits of W register) ANDLW B BTFSC STATUS,Z GOTO NEXT bit test( 0 test of low 3 bits of f) MOVF f,w ANDLW B BTFSC STATUS,Z GOTO NEXT Kodlama k k k k k k k k Q Çevrimi ( Q Cycle Activity ) Q1 Q2 Q3 Q4 Kod çöz k literalini İşlemi W ye yaz oku yap 254

299 PIC komutlarının açıklanması 4 ANDWF ( AND W with f ) Komut ANDWF f,d İşleçler 0 <= f <= 127 İşlem Status Etkisi d {0,1} W register f Z flag d=0 d=1 W register Memory f Açıklama W registeri ile f registerine AND işlemi uygulanır ve sonuç d 0 Kelimeler 1 Saat çevrimi ( Cycle ) 1 ise W registerine, d 1 ise f registerine yazılır. d = 0 ise d = 1 ise W registerine f registerine Örnek ANDWF f,0 (W) << f AND (W) Kodlama Q Çevrimi ( Q Cycle Activity ) ANDWF f,1 FSR << f AND (W) Clear of PORTB (bit 0 bit 3 : 4bit) MOVLW B ANDWF PORTB,1 Bit test of F (bit 0 bit 2 : 3bit) MOVLW B ANDWF f,0 BTFSC GOTO Bit test of F STATUS,Z NEXT MOVLW B ANDWF f,0 BTFSC GOTO STATUS,Z NEXT d f f f f f f f Q1 Q2 Q3 Q4 Kod çöz f registerini İşlemi Gideceği oku yap yere yaz 255

300 Include dosyalar INCLUDE DOSYALAR PIC lerin RAM belleklerinde bulunan adresler sabittir ve bunları her progamın başına yazmak gereksiz olmaktadır. Bu nedenle Microchip firması bunu önlemek için INCLUDE dosyaları yazmıştır. Bunları.INC uzantıları şeklinde sunmuştur. Biz program yazarken en başa INCLUDE P mikrodenetleyicinin kodu. INC yazmak suretiyle tüm RAM bellekte bulunan adresleri tek satırla tanıtabiliriz. Örneğin ; INCLUDE P16F84.INC 16F84 Mikrodenetleyici için adreslerin bulunduğu dosya INCLUDE P16F877.INC 16F877 Mikrodenetleyici için adreslerin bulunduğu dosya Aşağida P16F84.INC dosyanın içeriğini verdik. Bu dosya MPLAB dizini içerisinde bulunmaktadır. İstenildiğinde değişikliklerde yapılabilir. 287

301 Include dosyalar Ayrıca Status registerinin her bir bitinede adres verildiğinden dolayı hangi biti kullanacaksak onun isminide yazmak yeterli olmaktadır. Örneğin Bank1 ( Page 1 ) geçmek için ; BSF STATUS,6 yerine BSF STATUS,RP1 kullanabiliriz. Bunun yanında d=0 iken W registerine yükleme, d=1 iken f reigisterine yüklemeyide 0,1 şeklinde kullanabildiğimiz gibi W,f karakterlerinide direk kullanabilmekteyiz. Örneğin COMF PORTB,1 yerine COMF PORTB,F kullanabiliriz. COMF PORTB,0 yerine COMF PORTB,W kullanabiliriz. LIST ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc. NOLIST ; This header file defines configurations, registers, and other useful bits of ; information for the PIC16F84 microcontroller. These names are taken to match ; the data sheets as closely as possible. ; Note that the processor must be selected before this file is ; included. The processor may be selected the following ways: ; 1. Command line switch: ; C:\ MPASM MYFILE.ASM /PIC16F84 ; 2. LIST directive in the source file ; LIST P=PIC16F84 ; 3. Processor Type entry in the MPASM full-screen interface ;========================================================================== ; Revision History ;========================================================================== ;Rev: Date: Reason: ; /24/96 Renamed to reflect the name change to PIC16F84. ; /17/96 Corrected BADRAM map 288

302 Include dosyalar ; /31/95 Initial Release ;========================================================================== ; Verify Processor ;========================================================================== IFNDEF 16F84 MESSG "Processor-header file mismatch. Verify selected processor." ENDIF ;========================================================================== ; Register Definitions ;========================================================================== W EQU H'0000' F EQU H'0001' ;----- Register Files INDF EQU H'0000' TMR0 EQU H'0001' PCL EQU H'0002' STATUS EQU H'0003' FSR EQU H'0004' PORTA EQU H'0005' PORTB EQU H'0006' EEDATA EQU H'0008' EEADR EQU H'0009' PCLATH EQU H'000A' INTCON EQU H'000B' OPTION_REG EQU H'0081' TRISA EQU H'0085' TRISB EQU H'0086' EECON1 EQU H'0088' EECON2 EQU H'0089' ;----- STATUS Bits IRP EQU H'0007' RP1 EQU H'0006' 289

303 Include dosyalar RP0 EQU H'0005' NOT_TO EQU H'0004' NOT_PD EQU H'0003' Z EQU H'0002' DC EQU H'0001' C EQU H'0000' ;----- INTCON Bits GIE EQU H'0007' EEIE EQU H'0006' T0IE EQU H'0005' INTE EQU H'0004' RBIE EQU H'0003' T0IF EQU H'0002' INTF EQU H'0001' RBIF EQU H'0000' ;----- OPTION Bits NOT_RBPU EQU H'0007' INTEDG EQU H'0006' T0CS EQU H'0005' T0SE EQU H'0004' PSA EQU H'0003' PS2 EQU H'0002' PS1 EQU H'0001' PS0 EQU H'0000' ;----- EECON1 Bits EEIF EQU H'0004' WRERR EQU H'0003' WREN EQU H'0002' WR EQU H'0001' RD EQU H'0000' ;========================================================================== 290

304 Include dosyalar ; ; RAM Definition ; ;========================================================================== MAXRAM H'CF' BADRAM H'07', H'50'-H'7F', H'87' ;========================================================================== ; ; Configuration Bits ; ;========================================================================== _CP_ON EQU H'000F' _CP_OFF EQU H'3FFF' _PWRTE_ON EQU H'3FF7' _PWRTE_OFF EQU H'3FFF' _WDT_ON EQU H'3FFF' _WDT_OFF EQU H'3FFB' _LP_OSC EQU H'3FFC' _XT_OSC EQU H'3FFD' _HS_OSC EQU H'3FFE' _RC_OSC EQU H'3FFF' 291

305 292

306 293

307 294

308 295

309 296

310 297

311 298

312 299

313 300

314 301

315 302

316 303

317 304

318 305

319 306

320 307

321 308

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak # PIC enerjilendiğinde PORTB nin 0. biti 1 olacak - LIST=16F84 - PORTB yi temizle - BANK1 e geç - PORTB nin uçlarını çıkış olarak yönlendir - BANK 0 a geç - PORT B nin 0. bitini 1 yap - SON ;pic tanıtması

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ı

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ı

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ı

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: dogan@neu.edu.tr,

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ı

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ı

İÇİ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ı

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ KOMUT AÇIKLAMALARI VE ÖRNEKLERİ Komut açıklamalarında kullanılan harflerin anlamları: F : File(dosya), kaynak ve bilgi alınan yeri ifade eder. D : Destination (hedef), işlem sonucunun kaydedileceği yer.

Detaylı

T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 2

T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 2 T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 2 ANKARA 2013 Bu modül, mesleki ve teknik eğitim okul/kurumlarında uygulanan Çerçeve Öğretim Programlarında yer alan yeterlikleri kazandırmaya yönelik

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ı

W SAYAC SAYAC SAYAC. SAYAC=10110110 ise, d=0 W 01001001

W SAYAC SAYAC SAYAC. SAYAC=10110110 ise, d=0 W 01001001 MOVLW k Move Literal to W k sabit değerini W saklayıcısına yükler. MOVLW h'1a' W 1A. Hexadecimal 1A sayısı W registerine yüklenir. MOVF f,d Move f f saklayıcısının içeriğini W veya f'e yükler. MOVF SAYAC,0

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ı

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ı

İçİ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ı

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ı

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ı

MİKRO DENETLEYİCİLER II DERS NOTLARI (VİZE KONULARI) Prof. Dr. Hakan Ündil Bahar-Vize

MİKRO DENETLEYİCİLER II DERS NOTLARI (VİZE KONULARI) Prof. Dr. Hakan Ündil Bahar-Vize MİKRO DENETLEYİCİLER II DERS NOTLARI (VİZE KONULARI) Prof. Dr. Hakan Ündil 2014-2015 Bahar-Vize BÖLÜM 7 - LOJİK İŞLEM KOMUTLARI 7.1. RLF Komutu (Bir bit Sola Kaydırma) Bir file register içinde bulunan

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: dogan@neu.edu.tr, Tel: (90) 392 2236464 ÖZET Bilgisayarlara

Detaylı

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu Step Motor Step motor fırçasız elektrik motorlarıdır. Step motorlar ile tam bir tur dönmeyi yüksek sayıda adımlara bölebilmek mümkündür (200 adım). Step motorları sürmek için, sürekli gerilim uygulamak

Detaylı

Configuration bitleri ve reset durumları hakkında kavramlar

Configuration bitleri ve reset durumları hakkında kavramlar PİC HAKKINDA KISA KISA BİLGİLER-1 Pic mikrodenetleyicilerinin 8 bit, 16 bit ve 32 bit işlemci çeşitleri vardır. Çoğu uygulamalarımız için 8 bit yeterli olmaktadır. Bu kursta kullanacağımız pic işlemcisi,

Detaylı

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM ÖRNEKLERİ

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM ÖRNEKLERİ BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: f : File register, Herhangi bir değişkenle tarif edilen bir saklayıcı adresi (0h-7Fh) k : Sabit değer (genellikle (0-FF arasında) d : Destination

Detaylı

PIC MİKRODENETLEYİCİLERİN HAFIZA YAPISI. Temel olarak bir PIC içerisinde de iki tür hafıza bulunur:

PIC MİKRODENETLEYİCİLERİN HAFIZA YAPISI. Temel olarak bir PIC içerisinde de iki tür hafıza bulunur: PIC MİKRODENETLEYİCİLERİN HAFIZA YAPISI Temel olarak bir PIC içerisinde de iki tür hafıza bulunur: 1. Program Hafızası (ROM,PROM,EPROM,FLASH) Programı saklar, kalıcıdır. 2. Veri Hafızası (RAM, EEPROM)

Detaylı

T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 1

T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 1 T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 1 Ankara, 2013 Bu modül, mesleki ve teknik eğitim okul/kurumlarında uygulanan Çerçeve Öğretim Programlarında yer alan yeterlikleri kazandırmaya yönelik

Detaylı

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER 1 - DERS NOTLARI (Kısım 3) Doç. Dr. Hakan Ündil Program Örneği 9 : Gecikme altprogramı kullanarak Port B ye bağlı tüm LED leri yakıp söndüren bir program için akış

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 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ı

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ı

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ı

PIC PROGRAMLAMA STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ NEDİR? Unipolar Step Motorlar. Uç TESPİTİ NASIL YAPILIR?

PIC PROGRAMLAMA STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ NEDİR? Unipolar Step Motorlar. Uç TESPİTİ NASIL YAPILIR? PIC PROGRAMLAMA hbozkurt@mekatroniklab.com www.mekatroniklab.com.tr STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ Bu ayki sayımızda, özellikle CNC ve robotik uygulamalarda oldukça yaygın olarak kullanılan step motorlar

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ı

8 Ledli Havada Kayan Yazı

8 Ledli Havada Kayan Yazı 8 Ledli Havada Kayan Yazı Hazırlayan Eyüp Özkan Devre Şemasının ISIS Çizimi Devre şemasından görüldüğü gibi PIC16F84A mikro denetleyicisinin Port B çıkışlarına 8 adet LED ve dirençler bağlı. 4MHz lik kristal

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ı

DONANIM KURULUMU. Öğr. Gör. Murat YAZICI. 1. Hafta.

DONANIM KURULUMU. Öğr. Gör. Murat YAZICI. 1. Hafta. 1. Hafta DONANIM KURULUMU Öğr. Gör. Murat YAZICI www.muratyazici.com Artvin Çoruh Üniversitesi, Artvin Meslek Yüksekokulu Bilgisayar Teknolojisi Programı Dersin İçeriği BELLEKLER Belleğin Görevi Bellek

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ı

Donanım İÇERİK. Bölüm 1:FATEK FBs PLC Serisine Genel Bakış. Bölüm 2:Sistem Mimarisi

Donanım İÇERİK. Bölüm 1:FATEK FBs PLC Serisine Genel Bakış. Bölüm 2:Sistem Mimarisi Donanım İÇERİK Bölüm 1:FATEK FBs PLC Serisine Genel Bakış 1.1 Ana Ünitenin Görünümü... H1-1 1.2 Genişleme Modülünün Görünümü... H1-2 1.3 Haberleşme Modülünün Görünümü... H1-4 1.4 FBS-PLC Modellerinin Listesi...

Detaylı

PIC Mikrodenetleyiciler. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 1

PIC Mikrodenetleyiciler. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 1 PIC Mikrodenetleyiciler PIC MCU= CPU + I/O pinleri+ Bellek(RAM/ROM) Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 1 PIC Mikro denetleyici Programlama Assembly programlama dili, çoğu zaman özel alanlarda geliştirilen

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ı

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ı

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ı

3.2 PIC16F84 Yazılımı PIC Assembly Assembler Nedir?

3.2 PIC16F84 Yazılımı PIC Assembly Assembler Nedir? 3.2 PIC16F84 Yazılımı 3.2.1 PIC Assembly 3.2.1.1 Assembler Nedir? Assembler,bir text editöründe assembly dili kurallarına göre yazılmış olan komutları pıc in anlayabileceği heksadesimal kodlara çeviren

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ı

PIC UYGULAMALARI. Öğr.Gör.Bülent Çobanoğlu

PIC UYGULAMALARI. Öğr.Gör.Bülent Çobanoğlu PIC UYGULAMALARI STEP MOTOR UYGULAMLARI Step motor Adım motorları (Step Motors), girişlerine uygulanan lojik sinyallere karşılık analog dönme hareketi yapan fırçasız, sabit mıknatıs kutuplu DC motorlardır.

Detaylı

KONFİGÜRASYON BİTLERİ

KONFİGÜRASYON BİTLERİ MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER 1 - DERS NOTLARI (Kısım 2) Doç. Dr. Hakan Ündil INCLUDE Dosyalar Assembly programlarını yazarken kullanılacak register adreslerini (EQU) komutu ile tanımlamak hem

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ı

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ı

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ı

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ı

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ı

MİKROİŞLEMCİ (MİKROPROSESÖR - CPU) NEDİR? Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

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

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ı

BİLİŞİM TEKNOLOJİLERİ

BİLİŞİM TEKNOLOJİLERİ T.C. MİLLÎ EĞİTİM BAKANLIĞI BİLİŞİM TEKNOLOJİLERİ MİKRODENETLEYİCİ Ankara, 2014 Bu modül, mesleki ve teknik eğitim okul/kurumlarında uygulanan Çerçeve Öğretim Programlarında yer alan yeterlikleri kazandırmaya

Detaylı

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ı

Hacettepe Robot Topluluğu

Hacettepe Robot Topluluğu Hacettepe Robot Topluluğu PIC Assembly Dersleri 3. Ders: Bazı Özel İşlev Yazmaçları ve Altprogram Kavramı HUNRobotX - PIC Assembly Dersleri 3. Ders: Bazı Özel İşlev Yazmaçları ve Altprogram Kavramı Yazan:

Detaylı

PIC 16F84 VE TEK BUTONLA BĐR LED KONTROLÜ

PIC 16F84 VE TEK BUTONLA BĐR LED KONTROLÜ DERSĐN ADI : MĐKROĐŞLEMCĐLER II DENEY ADI : PIC 16F84 VE ĐKĐ BUTONLA BĐR LED KONTROLÜ PIC 16F84 VE TEK BUTONLA BĐR LED KONTROLÜ PIC 16F84 VE VAVĐYEN ANAHTAR ĐLE BĐR LED KONTROLÜ ÖĞRENCĐ ĐSMĐ : ALĐ METĐN

Detaylı

DERS NOTLARI. Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi

DERS NOTLARI. Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi DERS NOTLARI Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi Ders-3 11.10.2016 555-Zaman Entegresi 555 Zaman Entegre Devresi monastable multivibratör (asimetrik kare dalga osilatör), astable

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ı

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak # PIC enerjilendiğinde PORTB nin 0. biti 1 olacak - başla - LIST=16F84 - PORTB yi temizle - BANK1 e geç - PORTB nin uçlarını çıkış olarak yönlendir - BANK 0 a geç - PORT B nin 0. bitini 1 yap - SON ;pic

Detaylı

Bank değiştirme Bir banktan diğerine geçmek için STATUS register denilen özel registerin 5. ve 6. bitinin durumunu değiştirmek gerekir.

Bank değiştirme Bir banktan diğerine geçmek için STATUS register denilen özel registerin 5. ve 6. bitinin durumunu değiştirmek gerekir. File register haritası Bank 0 Bank 1 0 00 INDF 0 80 INDF 0 01 TNF0 0 81 OPTION 0 02 PCL 0 82 PCL 0 03 STATUS 0 83 STATUS 0 04 FSR 0 84 FSR 0 05 PORT A 0 85 TRISA 0 06 PORT B 0 86 TRISB 0 07 0 87 EEPROM

Detaylı

Electronic Letters on Science & Engineering 5(1) (2009) Available online at www.e-lse.org

Electronic Letters on Science & Engineering 5(1) (2009) Available online at www.e-lse.org Electronic Letters on Science & Engineering 5(1) (2009) Available online at www.e-lse.org Traffic Signaling with Sensor and Manual Control Sıtkı AKKAYA Erciyes Üniversitesi, Mühendislik Fakültesi, Elektrik

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 Giriş Mikro işlemler Fetch cycle Indirect cycle Interrupt cycle Execute cycle Instruction

Detaylı

EEProm 24C08 UYGULAMA AMAÇ 24C08 MCU_VCC. e r : d e G. Sayfa - 1

EEProm 24C08 UYGULAMA AMAÇ 24C08 MCU_VCC. e r : d e G. Sayfa - 1 V0 DT2 PIC16F877 1KΩ 1KΩ Prom UYGULAMA AMAÇ prom kalıcı hafıza entegresine, PIC16F77 mikrodenetleyicisinin PD0 ve PD1 portları üzerinden bilgi kayıt edip, kayıt edilen bilgiyi Prom dan okuyarak LCD ekranda

Detaylı

Arduino Uno ile Hc-Sr04 ve Lcd Ekran Kullanarak Mesafe Ölçmek

Arduino Uno ile Hc-Sr04 ve Lcd Ekran Kullanarak Mesafe Ölçmek Arduino Uno ile Hc-Sr04 ve Lcd Ekran Kullanarak Mesafe Ölçmek 1 Adet Arduino Uno 1 Adet Hc-Sr04 Ultrasonik mesafe sensörü 1 Adet 16 2 Lcd Ekran 1 Adet Breadbord 1 Adet Potansiyometre 2 Ader led Yeteri

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ı

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ı

Yrd.Doç. Dr. Bülent ÇOBANOĞLU. Sakarya Üniversitesi, Teknoloji Fakültesi

Yrd.Doç. Dr. Bülent ÇOBANOĞLU. Sakarya Üniversitesi, Teknoloji Fakültesi B Yrd.Doç. Dr. Bülent ÇOBANOĞLU Sakarya Üniversitesi, Teknoloji Fakültesi Kesmeler Kesme (Interrupt), mikro denetleyicinin gerçekleştirdiği işleme bakmaksızın belirli durumların/olayların olması durumunda

Detaylı

Hacettepe Robot Topluluğu

Hacettepe Robot Topluluğu Hacettepe Robot Topluluğu Makaleler PIC ile LED Yakıp Söndüren Devre PIC ile LED Yakıp Söndüren Devre Canol Gökel - 13 Ekim 2006 Giriş Merhaba arkadaşlar, bu makalemizde PIC'e yeni başlayanlar için basit

Detaylı

MİKROİŞLEMCİ (Microprocessor) NEDİR?

MİKROİŞLEMCİ (Microprocessor) NEDİR? MİKROİŞLEMCİ (Microprocessor) NEDİR? 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.(yerine getirir) CPU belleğinde bulunan

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ı

Temel elektronik laboratuvarı olarak kullanılmaktadır. Bu laboratuvarda ders alan öğrencilerimiz;

Temel elektronik laboratuvarı olarak kullanılmaktadır. Bu laboratuvarda ders alan öğrencilerimiz; L4 Laboratuvarı Temel elektronik laboratuvarı olarak kullanılmaktadır. Bu laboratuvarda ders alan öğrencilerimiz; Temel pasif devre elemanlarını öğrenir. Temel Elektrik-Elektronik büyüklükleri ve elemanların

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ı

ROBOT KOL BİTİRME PROJESİ DÖNEM İÇİ RAPORU

ROBOT KOL BİTİRME PROJESİ DÖNEM İÇİ RAPORU ROBOT KOL BİTİRME PROJESİ DÖNEM İÇİ RAPORU İSMAİL KAHRAMAN-ŞEYMA ÖZTÜRK 200713151027 200513152008 Robot Kol Mekanizması: Şekildeki robot-insan benzetmesinden yola çıkarak, bel kısmı tekerlekli ve sağa-sola-ileri-geri

Detaylı

MİKRO DENETLEYİCİLER II DERS NOTLARI (Vize) Prof. Dr. Hakan Ündil Bahar

MİKRO DENETLEYİCİLER II DERS NOTLARI (Vize) Prof. Dr. Hakan Ündil Bahar MİKRO DENETLEYİCİLER II DERS NOTLARI (Vize) Prof. Dr. Hakan Ündil 2016-2017 Bahar (MİKRODENETLEYİCİLER I DERS NOTLARI nın devamıdır. Sadece VİZE için olan kısımdır) 6. BÖLÜM - ALT PROGRAMLAR Program içerisinde

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ı

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ı

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ı

Program Kodları. void main() { trisb=0; portb=0; while(1) { portb.b5=1; delay_ms(1000); portb.b5=0; delay_ms(1000); } }

Program Kodları. void main() { trisb=0; portb=0; while(1) { portb.b5=1; delay_ms(1000); portb.b5=0; delay_ms(1000); } } Temrin1: PIC in PORTB çıkışlarından RB5 e bağlı LED i devamlı olarak 2 sn. aralıklarla yakıp söndüren programı yapınız. En başta PORTB yi temizlemeyi unutmayınız. Devre Şeması: İşlem Basamakları 1. Devreyi

Detaylı

Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici

Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici Mahmut KISACIK ve Doç.Dr. Hasan KÖMÜRCÜGIL Bilgisayar Mühendisligi Bölümü, Dogu Akdeniz Üniversitesi Gazimagusa-Kuzey Kibris Türk Cumhuriyeti

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ı

DERS 13 PIC 16F84 ile DONANIM SAYICI KULLANIMI İÇERİK KESME

DERS 13 PIC 16F84 ile DONANIM SAYICI KULLANIMI İÇERİK KESME DERS 13 PIC 16F84 ile DONANIM SAYICI KULLANIMI İÇERİK KESME Ders 13, Slayt 2 1 TMR0 SAYICISI Ram belleğin h 01 adresi TMR0 adlı özel amaçlı bir saklayıcı olarak düzenlenmiştir. Bu saklayıcı bir sayıcıdır.

Detaylı

PD103 BUTON LED UYGULAMA DEVRESİ UYGULAMA ÖRNEKLERİ MALZEME LİSTESİ

PD103 BUTON LED UYGULAMA DEVRESİ UYGULAMA ÖRNEKLERİ MALZEME LİSTESİ PD103 BUTON LED UYGULAMA DEVRESİ UYGULAMA ÖRNEKLERİ MALZEME LİSTESİ AÇIK DEVRE ŞEMASI BASKI DEVRESİ PIC16F84 UYGULAMA-1 İŞLEM BASAMAKLARI 1. PIC16F84 te A portunun ilk bitine (RA0) bağlı butona basıldığında,

Detaylı

PROGRAMLANABİLİR ZAMANLAYICI

PROGRAMLANABİLİR ZAMANLAYICI 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Ü PROGRAMLANABİLİR ZAMANLAYICI BİTİRME ÇALIŞMASI SULTAN ÜÇOK 203786 HAZİRAN,2011 TRABZON T.C. KARADENİZ TEKNİK

Detaylı

Arduino nedir? Arduino donanım ve yazılımın kolayca kullanılmasına dayalı bir açık kaynak elektronik platformdur.

Arduino nedir? Arduino donanım ve yazılımın kolayca kullanılmasına dayalı bir açık kaynak elektronik platformdur. Arduino nedir? Arduino donanım ve yazılımın kolayca kullanılmasına dayalı bir açık kaynak elektronik platformdur. Açık kaynak nedir? Açık kaynak, bir bilgisayar yazılımının makina diline dönüştürülüp kullanımından

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ı

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ı

Sistem Gereksinimleri: Uygulama Gelistirme: PIC Mikroislemcisinin Programlanmasi: PIC Programlama Örnekleri -1

Sistem Gereksinimleri: Uygulama Gelistirme: PIC Mikroislemcisinin Programlanmasi: PIC Programlama Örnekleri -1 PIC Programlama Örnekleri -1 Sistem Gereksinimleri: PIC programlayicinin kullanilabilmesi için; Win98 ve üstü bir isletim sistemi Paralel port 60 MB veya daha üstü disk alani gerekmektedir. Ancak programlama

Detaylı

KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ ELEKTRONİK LAB 1 DERSİ İŞLEMSEL KUVVETLENDİRİCİ - 2 DENEYİ

KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ ELEKTRONİK LAB 1 DERSİ İŞLEMSEL KUVVETLENDİRİCİ - 2 DENEYİ KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ ELEKTRONİK LAB 1 DERSİ İŞLEMSEL KUVVETLENDİRİCİ - 2 DENEYİ Amaç: Bu deney, tersleyen kuvvetlendirici, terslemeyen kuvvetlendirici ve toplayıcı

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ı

Mikroişlemciler. Microchip PIC

Mikroişlemciler. Microchip PIC Mikroişlemciler Microchip PIC Öğr. Gör. M. Ozan AKI r1.1 Microchip PIC Mikrodenetleyiciler www.microchip.com Microchip PIC Mikrodenetleyiciler Microchip PIC Mikrodenetleyiciler Microchip PIC Mikrodenetleyiciler

Detaylı

C-Serisi PLC İleri Seviye Eğitim

C-Serisi PLC İleri Seviye Eğitim C-Serisi PLC İleri Seviye Eğitim 1 PLC ye Giriş 2 PLC ye Giriş 3 PLC ye Giriş CJ1 I/O Modülleri - 8/16/32/64pts Max I/O - 160,640 Max Program Kapasitesi - 20K Steps Komut sayısı - 400 4 PLC Ladder Diyagram

Detaylı

T.C. MİLLİ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ-6

T.C. MİLLİ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ-6 T.C. MİLLİ EĞİTİM BAKALIĞI DEİZCİLİK MİKRODEETLEYİCİ-6 Ankara, 2013 Bu modül, mesleki ve teknik eğitim okul/kurumlarında uygulanan Çerçeve Öğretim Programlarında yer alan yeterlikleri kazandırmaya yönelik

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ı

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR Bülent ÖZBEK Örnek Program -1- B Portuna bağlı LED leri Yakma Bu programda PIC16F84 mikrodenetleyicisinin B portuna bağlı 8 adet LED in yanması sağlanacaktır. Bunu

Detaylı

BÖLÜM X OSİLATÖRLER. e b Yükselteç. Be o Geri Besleme. Şekil 10.1 Yükselteçlerde geri besleme

BÖLÜM X OSİLATÖRLER. e b Yükselteç. Be o Geri Besleme. Şekil 10.1 Yükselteçlerde geri besleme BÖLÜM X OSİLATÖRLER 0. OSİLATÖRE GİRİŞ Kendi kendine sinyal üreten devrelere osilatör denir. Böyle devrelere dışarıdan herhangi bir sinyal uygulanmaz. Çıkışlarında sinüsoidal, kare, dikdörtgen ve testere

Detaylı

MİKRODENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-Final Kısmı

MİKRODENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-Final Kısmı MİKRODENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan ÜNDİL 2014-2015 Bahar-Final Kısmı (NOT: Derslerde işlenen diğer örnekler de Final sınavına dahildir) BÖLÜM 7 - LOJİK İŞLEM KOMUTLARI 7.1. RLF Komutu (Bir

Detaylı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı MIKRODENETLEYICILER Ege Üniversitesi Ege MYO Mekatronik Programı BÖLÜM 2 MSC-51 Ailesi MCS-51 Ailesi Ekim 2014 Yrd. Doç. Dr. Mustafa Engin 8051 in Blok Şeması 4 Denetim Hatları Veri Yolu DPTR P.C. 8051

Detaylı

MİKROİŞLEMCİLER VE MİKRO DENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan Ündil 2013-2014 Bahar-Final

MİKROİŞLEMCİLER VE MİKRO DENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan Ündil 2013-2014 Bahar-Final MİKROİŞLEMCİLER VE MİKRO DENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan Ündil 2013-2014 Bahar-Final BÖLÜM 7 - LOJİK İŞLEM KOMUTLARI 7.1. RLF Komutu (Bir bit Sola Kaydırma) Bir file register içinde bulunan

Detaylı

BÖLÜM 1 MİKROİŞLEMCİLERİN YAPISI VE ÇALIŞMASI 1.GİRİŞ

BÖLÜM 1 MİKROİŞLEMCİLERİN YAPISI VE ÇALIŞMASI 1.GİRİŞ 1 BÖLÜM 1 MİKROİŞLEMCİLERİN YAPISI VE ÇALIŞMASI 1.GİRİŞ Günümüzde teknolojinin ilerlemesini inceleyecek olursak; bu ilerlemede hem araç hem de amaç olan özel bir elemanı keşfetmemiz uzun sürmez. Nedir

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ı

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ı