PICBIT_PLC İLE LOJİK TASARIM Doç. Dr. Murat UZAM Niğde Üniversitesi Mühendislik-Mimarlık Fakültesi Elektrik-Elektronik Mühendisliği Bölümü EYLÜL 2008
Bu kitap Niğde Üniversitesi Yayın Komisyonunun 22.04.2008 tarih ve B.30.2.NĞÜ.0.00.00.00/008 sayılı yazısıyla verilen izin sonucunda basılmıştır. 1. Basım: Eylül 2008 ii
Bu kitabı; anne ve babama, çalışmalarımı büyük bir özveri ve sabırla destekleyen eşime ve çocuklarıma, ve bu günlere gelmemde maddi ve manevi emeği geçen tüm hocalarıma ithaf ediyorum. iii
ÖNSÖZ İçinde bulunduğumuz çağda pek çok alanda çok hızlı bilimsel ve teknolojik gelişmelere şahit olmaktayız. Hiç şüphe yok ki bu gelişmelerin temelinde bilgisayar teknolojisi bulunmaktadır. Bilgisayar teknolojisinin temelini de sıfırlar (0) ve birler (1) üzerine kurulmuş olan lojik adı verilen bilim dalı oluşturur. Bu kitap, çıkış noktası olarak lojik derslerinde incelenen konuların uygulamalı olarak öğrenilmesine yardımcı olmak için yazılmıştır. Kitap ayrıca, günümüzde endüstride çok yaygın olarak kullanılan PLC lerin (Programmable Logic Controllers Programlanabilen Lojik Denetleyiciler) anlaşılmasına yardımcı olmayı hedeflemektedir. İlave olarak, kitap günümüzde çok popüler olan PIC mikrodenetleyicilerinin, Assembly dili yardımıyla programlanmaları ile ilgilidir. Bu kitap 1999-2008 yılları arasındaki 10 yıl içerisinde değişik zaman aralıklarında yazar tarafından gerçekleştirilen çok yoğun çalışmalar sonucunda ortaya çıkmıştır. Bu kitabın asıl çıkış noktası PICBIT adındaki yazılımdır. Bu yazılım, bir PIC16F84 mikrodenetleyicisi kullanılarak elde edilmiş olan 5 girişli, 8 çıkışlı bir PLC yi desteklemektedir. Fakat orijinal donanım bazı noktalardan yetersiz kaldığı için bu kitap kapsamında tek bir baskı devre üzerine PICBIT_PLC adı verilen bir donanım gerçekleştirilmiştir. Kitapta uygulama yaparak öğrenme yöntemi esas alınmıştır. Buna göre If we hear, we forget; If we see, we remember; If we do, we understand şeklindeki deyim referans teşkil etmektedir. Bunun anlamı kısaca şu şekildedir: duyduğumuzu çabucak unuturuz; gördüğümüzü hatırlarız; uyguladığımızı ise öğreniriz. Bu bağlamda Niğde Üniversitesi Mühendislik-Mimarlık Fakültesi Elektrik-Elektronik Mühendisliği Bölümünde yürüttüğüm lojik devreler, mikroişlemciler, endüstriyel elektronik, endüstriyel kontrol sistemleri gibi derslerde incelenen konuların uygulamaları, bu kitap kapsamında PICBIT yazılımı ve PICBIT_PLC donanımı yardımıyla gerçekleştirilmektedir. Bu kitaptan istifade etmek için PICBIT_PLC donanımı mutlaka elde edilmelidir. Aksi halde kitaptan yeterince faydalanılamayacaktır. Kitabı genelde dört kısma ayırmak mümkündür. İlk kısım PICBIT yazılımı ve PICBIT_PLC donanımının tanıtılması ve kullanılmasıyla ilgilidir. İkinci kısım PICBIT yazılımı ve PICBIT_PLC donanımının lojik devreler derslerinde incelenen konuların pek çok uygulama yardımıyla öğrenilmesini içermektedir. Üçüncü kısım PICBIT yazılımı ve PICBIT_PLC donanımının PLC derslerinde incelenen konuların pek çok uygulamalar yardımıyla öğrenilmesini içermektedir. Son kısım da PICBIT_PLC donanımından istifade ederek PIC Assembly dilinin öğrenilmesine yardımcı olmayı amaçlamaktadır. Tüm kitapta pratikte çok karşılaşılan bazı problemlerin çözümü hakkında da detaylı bilgi verilmiştir. Bu kitap pek çok eğitim kurumunda verilen pek çok ders için yardımcı kitap niteliği taşımaktadır. Bu kapsamda, Meslek Liselerinin, Teknik Liselerin, Meslek Yüksek Okullarının, Üniversitelerin Teknik Eğitim ve Mühendislik Fakültelerinin, Elektrik, Elektronik ve Bilgisayar bölümlerinde okuyan tüm öğrencilere yardımcı olacak niteliktedir. Ülkemiz son yıllarda bir kalkınma hamlesi yapma gayreti içerisindedir. Bu bağlamda bu çalışmanın ülkemizin kalkınma hamlesine yardımcı olması dileğiyle Doç. Dr. Murat UZAM Ocak 2008, NİĞDE iv
KİTABIN KULLANIMI Kitabın çok geniş okuyucu kitlesine hitap etmesi düşünüldüğünden kimi konularda çok fazla detay verilmiştir. Bu tür durumlarda eğer okuyucu bu detayların fazla olduğu kanaatindeyse bu kısımları atlayıp kendisi için farklı ya da yeni olan konulara geçmelidir. Genellikle konular kısa bir anlatımdan sonra uygulamalarla incelenmektedir. Tabii ki yapılan uygulamalar PICBIT_PLC donanımının girişçıkış sayısı dikkate alınarak seçilmiştir. Bu sebepten bazı konuların uygulamaları istenildiği gibi olmamıştır. Bu bağlamda okuyucu, kitapta incelenen uygulamaları PICBIT_PLC donanımının müsaade ettiği çerçevede, kendisi istediği şekilde çeşitlendirip çoğaltabilir. Kitap bir önceki kısımda ifade edildiği gibi kapsam olarak dört kısma ayrılmıştır. İlk kısım PICBIT yazılımı ve PICBIT_PLC donanımının tanıtılması ve kullanılmasıyla ilgilidir. İkinci kısım lojik devreler derslerinde incelenen konuların öğrenilmesini içermektedir. Üçüncü kısım PLC lerin öğrenilmesini içermektedir. Son kısım da PICBIT_PLC donanımından istifade ederek PIC Assembly dilinin öğrenilmesine yardımcı olmayı amaçlamaktadır. Bu kısımlar, kitabı oluşturan bölümler dikkate alındığı zaman aşağıdaki gibi gruplandırılabilir: 1nci kısım: PICBIT yazılımı ve PICBIT_PLC donanımının tanıtılması Bölüm 1: PICBIT_PLC donanımına ait şema bu bölümde verilmektedir. Ayrıca bu bölümde PICBIT yazılımı ve PICBIT_PLC donanımı ile çalışmak için gerekli olan diğer donanım ve yazılımdan bahsedilmektedir. Bölüm 2: PICBIT yazılımının çalıştırılması ve bu yazılımdaki menüler detaylı olarak bu bölümde anlatılmaktadır. Bölüm 3: PICBIT yazılımında kullanılan elementlerle ilgili detaylı bir inceleme bu bölümde mevcuttur. Ayrıca PICBIT kullanımına yardımcı olacak bazı ipuçlarına bu bölümde yer verilmiştir. Bölüm 4: PICBIT yazılımıyla beraber gelen on bir tane örnek program bu kısımda incelenmektedir. 2nci kısım: lojik devreler konularının incelenmesi Bölüm 5: Bu kısımda PICBIT yazılımı ve PICBIT_PLC donanımı kullanılarak lojik devreler dersleriyle ilgili pek çok konunun pratik uygulamaları değişik örneklerle incelenmektedir. 3ncü kısım: PLC lerin öğrenilmesi Bölüm 6: Bu bölümde PLC nin ne anlama geldiği ve PLC lerin çalışması kısaca incelendikten sonra PICBIT yazılımı ve PICBIT_PLC donanımı yardımıyla PLC programlama teknikleri anlatılmaktadır. Bu bölümün ikinci kısmında pek çok problem ve bunların PLC yardımıyla çözümlerine ait uygulamalar yer almaktadır. 4ncü kısım: PIC Assembly dilinin öğrenilmesi Bölüm 7: Bu bölümde, PICBIT_PLC donanımından istifade ederek PIC Assembly dilinin öğrenilmesine yardımcı olmak amaçlanmaktadır. Buna göre öncelikle PIC Assembly dilindeki komutlar uygulamalarla incelenmektedir. Daha sonra PICBIT yazılımında kullanılan PICBIT makroları detaylı olarak anlatılmıştır. Ayrıca pratikte çok önemli bir problem olan kontak atlaması problemi tanıtılmış ve bu problemin çözümü ile ilgili açıklamalar da bu bölümde verilmiştir. Son olarak, Ek-A da step (adım) motorlar hakkında bazı açıklamalar verilmiştir. v
İÇİNDEKİLER sayfa BÖLÜM 1 - PICBIT VE PICBIT_PLC YE GİRİŞ... 1 1.1. PICBIT ve PICBIT_PLC ile Çalışmak İçin Yapılması Gerekenler... 5 1.2. PICBIT_PLC İçin Örnek Programlama Devreleri... 6 1.3. PICBIT_PLC yi Programlamak İçin Kullanılabilecek Örnek Bir Seri Port PIC Programlama Donanımı ve Bu Donanımı Destekleyen Yazılımlar... 7 BÖLÜM 2 - PICBIT PROGRAMININ ÇALIŞTIRILMASI VE MENÜLER... 9 2.1. File Menüsü... 10 2.2. Tools Menüsü... 13 2.3. Compile Menüsü... 15 2.4. Hardware Menüsü... 17 2.5. Help Menüsü... 19 BÖLÜM 3 - PICBIT PROGRAMINDA KULLANILAN ELEMENTLER... 23 3.1. IN Elementi... 23 3.2. IN-NOT Elementi... 25 3.3. OUT Elementi... 26 3.4. OUT-NOT Elementi... 27 3.5. AND Elementi... 29 3.6. AND-NOT Elementi... 30 3.7. NAND Kapısı... 32 3.8. OR Elementi... 33 3.9. OR-NOT Elementi... 34 3.10. NOR Kapısı... 35 3.11. XOR Elementi... 36 3.12. XOR-NOT Elementi... 38 3.13. I/O Elementi... 40 3.14. I/O-NOT Elementi... 40 3.15. SET Elementi... 42 3.16. RESET Elementi... 43 3.17. LAT(CH) Elementi... 44 3.18. INV-LAT(CH) Elementi... 45 3.19. DFF Elementi... 46 3.20. COUNTER Elementi... 48 3.21. MONOFLOP Elementi... 51 3.22. IMPULSE Elementi... 53 3.23. INCLUDE Elementi... 56 3.24. STEPPER Elementleri... 60 3.25. PICBIT Kullanımında Bazı İpuçları... 64 BÖLÜM 4 - PICBIT ÖRNEKLERİ... 68 4.1. EX1... 68 4.2. EX2... 68 4.3. EX3... 68 4.4. EX4... 69 4.5. EX5... 69 vi
sayfa 4.6. EX6... 69 4.7. EX7... 70 4.8. EX8... 70 4.9. SEQUENZER... 74 4.10. SEQLATCH... 75 4.11. SEQ_RST... 75 BÖLÜM 5 - PICBIT İLE LOJİK DEVRE TASARIMI... 77 5.1. Lojik (Boole) Fonksiyonların Lojik Kapılarla Gerçekleştirilmesi... 77 5.1.1. Miniterimlerin Toplamı... 79 5.1.2. Maksiterimlerin Çarpımı... 80 5.1.3. Muhtemel Lojik Kapı Kombinasyonları... 84 5.1.4. NAND ve NOR Kapılarının Eşdeğerleri... 92 5.2. Kombinasyonel (Combinational) Devreler... 96 5.2.1. Aritmetik Devreler... 97 5.2.1.1. Yarım Toplayıcı (Half Adder-HA)... 97 5.2.1.2. Tam Toplayıcı (Full Adder-FA)... 98 5.2.1.3. Paralel Toplayıcı (Parallel Adder-PA)... 99 5.2.1.4. Yarım Çıkarıcı (Half Subtractor-HS)... 101 5.2.1.5. Tam Çıkarıcı (Full Subtractor-FS)... 102 5.2.2. Kod Dönüştürücüler (Code Convertors)... 103 5.2.3. Kodlayıcılar (Encoders)... 105 5.2.4. Kod Çözücüler (Decoders)... 106 5.2.5. Karşılaştırıcılar (Comparators)... 118 5.2.6. Data Seçiciler (Multiplexers)... 121 5.2.7. Data Dağıtıcılar (Demultiplexers)... 122 5.3. Flip-Floplar... 125 5.3.1. R-S Flip-Flop... 126 5.3.1.1. Temel R-S Flip-Flop Devreleri... 126 5.3.1.2. Lojik 1 Seviye Tetiklemeli R-S Flip-Flop... 128 5.3.1.3. Lojik 0 Seviye Tetiklemeli R-S Flip-Flop... 131 5.3.2. D Flip-Flop... 133 5.3.2.1. Lojik 1 Seviye Tetiklemeli D Flip-Flop... 133 5.3.2.2. Lojik 0 Seviye Tetiklemeli D Flip-Flop... 135 5.3.2.3. Yükselen Kenar Tetiklemeli D Flip-Flop... 137 5.3.2.4. Düşen Kenar Tetiklemeli D Flip-Flop... 139 5.3.2.5. D Flip-Flopta Asenkron Girişler... 140 5.3.3. J-K Flip-Flop... 142 5.3.3.1. Lojik 1 Seviye Tetiklemeli J-K Flip-Flop... 142 5.3.3.2. Lojik 0 Seviye Tetiklemeli J-K Flip-Flop... 145 5.3.3.3. Yükselen Kenar Tetiklemeli J-K Flip-Flop... 147 5.3.3.4. Düşen Kenar Tetiklemeli J-K Flip-Flop... 149 5.3.3.5. JK Flip-Flopta Asenkron Girişler... 151 5.3.4. T Flip-Flop... 153 5.3.4.1. Lojik 1 Seviye Tetiklemeli T Flip-Flop... 153 5.3.4.2. Lojik 0 Seviye Tetiklemeli T Flip-Flop... 155 5.3.4.3. Yükselen Kenar Tetiklemeli T Flip-Flop... 157 5.3.4.4. Düşen Kenar Tetiklemeli T Flip-Flop... 159 5.3.4.5. T Flip-Flopta Asenkron Girişler... 161 vii
sayfa 5.3.5. Flip-flop ların Birbirine Dönüştürülmesi... 163 5.3.5.1. D Flip-Flop tan J-K Flip-Flop Elde Etmek... 163 5.3.5.2. D Flip-Flop tan T Flip-Flop Elde Etmek... 164 5.3.5.3. J-K Flip-Flop tan D Flip-Flop Elde Etmek... 167 5.3.5.4. J-K Flip-Flop tan T Flip-Flop Elde Etmek... 167 5.3.5.5. T Flip-Flop tan D Flip-Flop Elde Etmek... 167 5.3.5.6. T Flip-Flop tan J-K Flip-Flop Elde Etmek... 168 5.4. Sayıcılar (Counters)... 169 5.4.1. Asenkron Sayıcılar... 169 5.4.1.1. İkili (Binary) Asenkron Sayıcılar... 169 5.4.1.1.1. Yukarı Sayan İkili (Binary) Asenkron Sayıcılar... 169 5.4.1.1.2. Aşağı Sayan İkili (Binary) Asenkron Sayıcılar... 174 5.4.1.1.3. Yukarı/Aşağı Sayan İkili (Binary) Asenkron Sayıcılar... 176 5.4.1.2. Sıfırlamalı ve Kurmalı Asenkron Sayıcılar... 179 5.4.1.2.1. S ve R Asenkron Girişli 4 Bitlik Yukarı Sayan İkili Asenkron Sayıcı.. 180 5.4.1.2.2. Sıfırlamalı 4 bitlik Yukarı Sayan İkili Asenkron Sayıcı... 184 5.4.1.2.3. Belirli Bir Değere Kadar Yukarı Sayan 4 Bitlik Sıfırlamalı Asenkron Sayıcı... 185 5.4.1.2.4. Belirli Bir Değerden Başlayıp Yukarı Sayan 4 Bitlik Kurmalı Asenkron Sayıcı... 187 5.4.1.2.5. Yukarı Sayan 4 Bitlik Çok Seçenekli Kurmalı Asenkron Sayıcı.. 189 5.4.1.2.6. Belirli Sınırlar Arasında Yukarı Sayan 4 Bitlik Kurmalı Asenkron Sayıcı... 190 5.4.2. Senkron Sayıcılar... 192 5.4.2.1. 4 Bitlik (Mod-16) Senkron Yukarı Sayıcı... 193 5.4.2.2. BCD (Mod-10) Senkron Yukarı Sayıcı... 195 5.4.2.3. 4 Bitlik Senkron Yukarı/Aşağı Sayıcı... 196 5.4.2.4. Senkron Sayıcı Tasarımı... 198 5.4.2.5. Senkron Sayıcı Tasarımı İçin Alternatif Bir Yöntem... 206 5.5. Shift Registerler... 215 5.5.1. Seri Girişli Seri Çıkışlı Shift Register... 215 5.5.2. Seri Girişli Paralel Çıkışlı Shift Register... 219 5.5.3. Paralel Girişli Seri Çıkışlı Shift Register... 221 5.5.4. Paralel Girişli Paralel Çıkışlı Register... 227 5.5.5. İki Yönlü Shift Register... 228 5.5.6. Shift Register Sayıcıları... 231 5.5.6.1. Halka Sayıcı (Ring Counter)... 231 5.5.6.2. Johnson Sayıcısı... 233 5.5.7. Shift Register Kullanımına Bir Örnek Seri Bilgi Transferi... 235 5.6. Hafıza Devreleri... 238 5.6.1. 4 2 SRAM... 239 5.6.2. 16 8 ROM... 246 5.7. Sıralı (Sequential) Devreler... 251 5.7.1. D Flip-Floplar Kullanarak Senkron Sıralı Devrelerin Tasarımı... 253 5.7.2. D Flip-Floplar Kullanılan Yöntem İçin Tasarım Örneği... 253 5.7.3. Her Durum İçin Bir D Flip-Flop Kullanarak Senkron Sıralı Devrelerin Tasarımı... 259 5.7.4. Her Durum İçin Bir D Flip-Flop Kullanılan Yöntem İçin Tasarım Örneği... 260 viii
sayfa 5.7.5. Data Seçiciler (Multiplexer) Kullanarak Senkron Sıralı Devrelerin Tasarımı.. 265 5.7.6. Data Seçiciler (Multiplexer) Kullanılan Yöntem İçin Tasarım Örneği... 265 5.7.7. ROM Kullanarak Senkron Sıralı Devrelerin Tasarımı... 272 5.7.8. ROM Kullanılan Yöntem İçin Tasarım Örneği... 273 5.7.9. Uygulama Örneği (İkili Şifre Çözücü Devre)... 280 BÖLÜM 6 - PICBIT İLE PLC ÖĞRENELİM... 286 6.1. Programlanabilir Lojik Denetleyicilerin Tanımı ve Çalışma Prensibi... 286 6.2. Röle ve Kontaktörlerin Çalışma Prensibi... 287 6.3. Merdiven Diyagramı (Ladder Diagram) Programlar... 288 6.4. Lojik Kapıların Merdiven Diyagramı Karşılıkları ve PICBITte Gerçekleştirilmeleri 293 6.4.1. AND Kapısı, Basamak Diyagramı Karşılığı ve PICBIT te Gerçekleştirilmesi. 294 6.4.2. OR Kapısı, Basamak Diyagramı Karşılığı ve PICBIT te Gerçekleştirilmesi... 295 6.4.3. NOT Kapısı, Basamak Diyagramı Karşılığı ve PICBIT te Gerçekleştirilmesi. 296 6.4.4. NAND Kapısı, Basamak Diyagramı Karşılığı ve PICBIT te Gerçekleştirilmesi... 297 6.4.5. NOR Kapısı, Basamak Diyagramı Karşılığı ve PICBIT te Gerçekleştirilmesi 298 6.4.6. EXOR Kapısı, Basamak Diyagramı Karşılığı ve PICBIT te Gerçekleştirilmesi... 300 6.4.7. EXNOR Kapısı, Basamak Diyagramı Karşılığı ve PICBIT te Gerçekleştirilmesi... 300 6.5. Zaman Röleleri... 301 6.5.1. Düz Zaman Rölesi (On Delay Timer)... 301 6.5.1.1. MONOFLOP Elementi ile Düz Zaman Rölesi Elde Etmek... 302 6.5.1.2. CNT Elementi ile Düz Zaman Rölesi Elde Etmek... 303 6.5.2. Ters Zaman Rölesi (Off Delay Timer)... 304 6.5.2.1. MONOFLOP Elementi ile Ters Zaman Rölesi Elde Etmek... 305 6.5.2.2. CNT Elementi ile Ters Zaman Rölesi Elde Etmek... 306 6.5.3. Osilatör Zaman Rölesi... 307 6.5.3.1. TIMER Elementi ile Osilatör Zaman Rölesi Elde Etmek... 308 6.5.3.2. TIMER ve CNT Elementleri ile Osilatör Zaman Rölesi Elde Etmek... 309 6.5.4. Puls Zaman Rölesi (Puls Timer)... 310 6.5.4.1. MONOFLOP Elementi ile Puls Zaman Rölesi Elde Etmek... 311 6.5.4.2. CNT Elementi ile Puls Zaman Rölesi Elde Etmek... 312 6.6. Sayıcılar... 313 6.7. PLC Programlama Teknikleri ve PICBITte Gerçekleştirilmeleri... 315 6.7.1. Çoğunluk Devresi... 315 6.7.2. Osilatör... 319 6.7.3. Sürekli 1 ve Sürekli 0 Olan Kontaklar... 322 6.7.4. Tek Atım Devreleri... 324 6.7.5. R-S Flip-Flop... 329 6.7.6. D Flip-Flop... 330 6.7.7. T Flip-Flop... 335 6.7.8. J-K Flip-Flop... 341 6.7.9. 4 Bitlik Senkron Sayıcı Devresi... 346 6.7.10. 4 Bitlik Seri Girişli Paralel Çıkışlı Shift Register Devresi... 349 6.8. Uygulama Örnekleri... 352 6.8.1. Start/Stop Devresi 1... 353 6.8.2. Start/Stop Devresi 2... 354 ix
sayfa 6.8.3. Tek Butonla Start/Stop devresi... 355 6.8.4. Bilgi Yarışması Problemi 1... 355 6.8.5. Bilgi Yarışması Problemi 2... 358 6.8.6. Merdiven Otomatiği Problemi 1... 362 6.8.7. Merdiven Otomatiği Problemi 2... 363 6.8.8. Trafik Işığı Kontrolu 1... 366 6.8.9. Trafik Işığı Kontrolu 2... 370 6.8.10. Trafik Işığı Kontrolu 3... 373 6.8.11. Endüstriyel Kapı Kontrolu 1... 377 6.8.12. Endüstriyel Kapı Kontrolu 2... 379 6.8.13. Kutu Dolum Problemi 1... 382 6.8.14. Kutu Dolum Problemi 2... 384 6.8.15. Kutu Dolum Problemi 3... 387 6.8.16. Kutu Dolum Problemi 4... 391 6.8.17. Sıvı Karıştırma Problemi... 395 6.8.18. Renk Ayrım Sistemi... 399 6.8.19. Yürüyen Işıklar 1... 403 6.8.20. Yürüyen Işıklar 2... 406 6.8.21. Yürüyen Işıklar 3... 408 6.8.22. Yürüyen Işıklar 4... 411 6.8.23. Yürüyen Işıklar 5... 415 6.8.24. Yürüyen Işıklar 6... 420 BÖLÜM 7 - PICBIT_PLC İLE PIC ASSEMBLY ÖĞRENELİM... 424 7.1. MPLAB IDE PIC Assembly Programı Geliştirme Ortamı... 424 7.2. PIC Assembly Program Örnekleri... 425 7.2.1. Port A ve Port B nin Giriş ya da Çıkış Olarak Düzenlenmesi... 425 7.2.1.1. ornek1_1.asm... 425 7.2.1.2. ornek1_2.asm... 426 7.2.1.3. ornek1_3.asm... 427 7.2.2. Bit Test, Bit Set, Bit Reset Örnekleri... 428 7.2.2.1. ornek2_1.asm... 428 7.2.2.2. ornek2_2.asm... 429 7.2.2.3. ornek2_3.asm... 430 7.2.2.4. ornek2_4.asm... 431 7.2.3. Sayaç Kullanarak Döngü Düzenlemek... 432 7.2.3.1. ornek3_1.asm... 432 7.2.3.2. ornek3_2.asm... 433 7.2.4. Zaman Gecikmesi Elde Etmek... 434 7.2.4.1. Zaman Gecikmesi Elde Etmek İçin Kullanılan 1. Grup Yöntemlere Ait Örnekler... 434 7.2.4.1.1. ornek4_1.asm... 434 7.2.4.1.2. ornek4_2.asm... 435 7.2.4.1.3. ornek4_3.asm... 437 7.2.4.2. Zaman Gecikmesi Elde Etmek İçin Kullanılan 2. Yönteme Ait Örnekler... 438 7.2.4.2.1. ornek4_4.asm... 438 7.2.4.2.2. ornek4_5.asm... 440 7.2.4.2.3. ornek4_6.asm... 442 x
sayfa 7.2.5. Bazı PIC Assembly Komutlarının Kullanımı... 445 7.2.5.1. SUBLW Komutunun Kullanımı ornek5_1.asm... 445 7.2.5.2. SUBWF Komutunun Kullanımı ornek5_2.asm... 446 7.2.5.3. SUBWF Komutunun Kullanımı ornek5_3.asm... 447 7.2.5.4. ADDLW Komutunun Kullanımı ornek5_4.asm... 448 7.2.5.5. ADDWF Komutunun Kullanımı ornek5_5.asm... 450 7.2.5.6. ANDLW Komutunun Kullanımı ornek5_6.asm... 451 7.2.5.7. ANDWF Komutunun Kullanımı ornek5_7.asm... 453 7.2.5.8. IORLW Komutunun Kullanımı ornek5_8.asm... 454 7.2.5.9. IORWF Komutunun Kullanımı ornek5_9.asm... 455 7.2.5.10. XORLW Komutunun Kullanımı ornek5_10.asm... 456 7.2.5.11. XORWF Komutunun Kullanımı ornek5_11.asm... 457 7.2.5.12. COMF Komutunun Kullanımı ornek5_12.asm... 458 7.2.5.13. SWAPF Komutunun Kullanımı ornek5_13.asm... 460 7.2.5.14. RLF Komutunun Kullanımı ornek5_14.asm... 461 7.2.5.15. RRF Komutunun Kullanımı ornek5_15.asm... 463 7.2.5.16. RLF ve RRF Komutlarının Kullanımı ornek5_16.asm... 465 7.2.5.17. RETLW Komutunun Kullanımı ornek5_17.asm... 467 7.2.6. TMR0 ın Kullanılması... 468 7.2.7.1. TMR0 Sayıcısı 1 ornek6_1.asm... 468 7.2.7.2. TMR0 Sayıcısı 2 ornek6_2.asm... 470 7.2.7. PICBIT Makroları... 471 7.2.7.1. Temel PICBIT Makroları... 472 7.2.7.1.1. Tanımlar Dosyası... 475 7.2.7.1.2. Temel Program... 477 7.2.7.1.3. ld, ld_not, inv, out, out_not, in_out, inv_out Makrolarının Kullanımı - ornek7_1.asm... 478 7.2.7.1.4. or, or_not ve nor Makrolarının Kullanımı - ornek7_2.asm 481 7.2.7.1.5. and, and_not ve nand Makrolarının Kullanımı - ornek7_3.asm... 483 7.2.7.1.6. xor, xor_not ve xnor Makrolarının Kullanımı - ornek7_4.asm... 486 7.2.7.2. _set ve _reset Makroları... 488 7.2.7.3. latch ve inv_lat Makroları... 491 7.2.7.4. r_edge ve f_edge Makroları... 493 7.2.7.5. dff ve idff Makroları... 498 7.2.7.6. ctr08 Makrosu... 502 7.2.7.7. ctr16 Makrosu... 506 7.2.7.8. mflop08 Makrosu... 511 7.2.7.9. mflop16 Makrosu... 516 7.2.7.10. dzr08 Makrosu... 521 7.2.7.11. dzr16 Makrosu... 526 7.2.7.12. stepp_1 Makrosu... 531 7.2.7.13. stepp_2 Makrosu... 539 7.2.8. Kontak Atlaması Problemini Gidermek... 547 7.2.8.1. Kontak Atlaması Problemiyle Yüzleşelim ornek8_1.asm... 549 7.2.8.2. Kontak Atlaması Probleminin Çözümü 1 ornek8_2.asm... 553 7.2.8.3. Kontak Atlaması Probleminin Çözümü 2 ornek8_3.asm... 559 7.2.8.4. Kontak Atlaması Probleminin Çözümü 3 ornek8_4.asm... 566 xi
sayfa 7.2.8.5. Kontak Atlaması Probleminin Çözümü 4 ornek8_5.asm... 573 7.2.9. EEPROM dan Bilgi Okumak ve EEPROM a Bilgi Yazmak... 581 7.2.9.1. EEPROM dan Bilgi Okumak ornek9_1.asm... 581 7.2.9.2. EEPROM a Bilgi Yazmak ve EEPROM dan Bilgi Okumak 1 ornek9_2.asm... 584 7.2.9.3. EEPROM a Bilgi Yazmak ve EEPROM dan Bilgi Okumak 2 ornek9_3.asm... 586 7.2.9.4. EEPROM a Bilgi Yazmak ve EEPROM dan Bilgi Okumak 3 ornek9_4.asm... 593 EK -A - STEP MOTORLAR... 598 Step Motorların Genel Karakteristikleri... 598 Step Motor Türleri... 599 Tek Kutuplu (unipolar) Sabit Mıknatıslı Step Motor... 599 İki Kutuplu (bipolar) Sabit Mıknatıslı Step Motor... 601 Universal Sabit Mıknatıslı Step Motor... 603 Değişken Relüktanslı Step Motorlar... 603 Bilinmeyen Step Motorun Karakteristiklerini Tanımlama... 604 KAYNAKÇA... 606 DİZİN... 607 xii