Data Loading...
mikroC ve pic18f4550 Flipbook PDF
mikroC ve pic18f4550
564 Views
345 Downloads
FLIP PDF 859.93KB
MikroC ve PIC18F4550
Hikmet ŞAHİN
K. Serkan DEDEOĞLU
Aynı okulda çalıştığımız ve hepsi birbirinden değerli öğretmen arkadaşlarımız; Fikret BASAN’a, Burhan KUTLUCA’ya, Mustafa ARSLAN’a, Turan GÜLMEZ’e, Orhan ADIGÜZELOĞLU’na, Yalçın AKKAYA’ya ve Keramettin ŞAHİN’e katkılarından dolayı sonsuz teşekkürlerimizi sunarız.
İÇİNDEKİLER 1. BÖLÜM - MikroC .............................................................................................11 1.1 MikroC PRO Demo Programının Bilgisayara Kurulması.....................................................11 1.2 MikroC Yazım Kuralları....................................................................................................... 12 1.3 Ayrılmış (Reserved) Kelimeler............................................................................................. 13 1.4 Açıklama Satırları................................................................................................................ 13 1.5 Tanımlayıcı Kelimeler (Tür İsimleri).....................................................................................14 1.6 Tam Sayılar......................................................................................................................... 14 1.7 Ondalıklı Sayılar.................................................................................................................. 15 1.8 Karakter İfadeler.................................................................................................................. 15 1.9 String İfadeler...................................................................................................................... 15 1.10 Boşluk (Kaçış) Karakterleri.................................................................................................. 15 1.11 Ayırıcı İşaretler (Separators)...............................................................................................16 1.11.1 Köşeli Parantez ( [ ] ).................................................................................................16 1.11.2 Parantez ( ( ) )............................................................................................................ 17 1.11.3 Küme Parantezi ( { } )................................................................................................ 17 1.11.4 Virgül ( , )................................................................................................................... 17 1.11.5 Noktalı Virgül ( ; )....................................................................................................... 17 1.11.6 İki Nokta ( : ).............................................................................................................. 17 1.11.7 Nokta ( . )................................................................................................................... 18 1.11.8 Yıldız İşareti ( * )........................................................................................................ 18 1.11.9 Eşittir İşareti ( = )....................................................................................................... 18 1.11.10 Diyez İşareti ( # )........................................................................................................ 18 1.12 Depolama Sınıfları............................................................................................................... 18 1.12.1 Auto........................................................................................................................... 19 1.12.2 Register..................................................................................................................... 19 1.12.3 Static.......................................................................................................................... 19 1.12.4 Extern........................................................................................................................ 19 1.13 MikroC’de ASM Kod Kullanma............................................................................................ 19 1.14 Tip Niteleyicileri................................................................................................................... 20 1.14.1 Const......................................................................................................................... 20 1.14.2 Volatile....................................................................................................................... 20 1.15 Başlangıç Değeri Atama İşlemi........................................................................................... 20 1.16 MikroC’de Veri Türleri.......................................................................................................... 20 1.16.1 Aritmetik Türler.......................................................................................................... 20 1.16.2 Void Türü................................................................................................................... 21 1.17 Göstericiler.......................................................................................................................... 22 1.18 Yapılar................................................................................................................................. 22 1.18.1 Enumaration Tanımlama...........................................................................................23 1.19 Diziler.................................................................................................................................. 23 1.20 Fonksiyonlar........................................................................................................................ 24 1.21 Operatörler.......................................................................................................................... 26
1.21.1 Operatörlerin Öncelik Sırası......................................................................................26 1.21.2 Aritmetik Operatörler.................................................................................................. 27 1.21.3 Karşılaştırma Operatörleri..........................................................................................27 1.21.4 Atama Operatörleri.................................................................................................... 28 1.21.5 Mantıksal Operatörler................................................................................................28 1.21.6 Diğer Operatörler....................................................................................................... 28 1.22 Deyimler.............................................................................................................................. 29 1.23 İfadeler................................................................................................................................ 29 1.24 Kontrol Yapıları.................................................................................................................... 29 1.24.1 if - else Kontrol Yapısı................................................................................................ 29 1.24.2 switch - case Kontrol Yapısı......................................................................................31 1.25 Döngü Yapıları.................................................................................................................... 33 1.25.1 While Döngüsü.......................................................................................................... 33 1.25.2 Do-While Döngüsü..................................................................................................... 34 1.25.3 For Döngüsü.............................................................................................................. 35 1.26 Önişlemci Komutları............................................................................................................ 36
2. BÖLÜM - MİKROC PRO DERLEYİCİSİ VE KÜTÜPHANESİ .........................39 2.1 MikroC PRO Derleyicisini Tanıyalım...................................................................................39 2.1.1 File Menüsü............................................................................................................... 40 2.1.2 Edit Menüsü............................................................................................................... 41 2.1.3 View Menüsü............................................................................................................. 42 2.1.4 Project Menüsü.......................................................................................................... 44 2.1.5 Build Menüsü............................................................................................................. 45 2.1.6 Run Menüsü.............................................................................................................. 45 2.1.7 Tools Menüsü............................................................................................................ 46 2.1.8 Help Menüsü.............................................................................................................. 50 2.2 MikroC PRO Kütüphanesi................................................................................................... 50
3. BÖLÜM - İLK MikroC PROJEM .......................................................................55 3.1 3.2
Uygulama devremiz............................................................................................................. 55 Yeni Proje Oluşturmak........................................................................................................ 56
4. BÖLÜM - BASİT MikroC UYGULAMALARI ...................................................59 4.1 UYGULAMA 1: Led Yakma ve Söndürme...........................................................................59 4.2 UYGULAMA 2: PIC18F4550 Dahili Osilatörünü Kullanma..................................................61 4.3 UYGULAMA 3: 8 Adet Led’i Yakma ve Söndürme..............................................................63 4.4 UYGULAMA 4: Buton ile Led Kontrol..................................................................................65 4.5 UYGULAMA 5: 7 Segmet Display - 1 (0-9 Sayıcı)...............................................................67 4.6 UYGULAMA 6: 7 Segment Display - 2 (0-9 Yukarı/Aşağı Sayıcı).......................................71 4.7 UYGULAMA 7: 7 Segment Display - 3 (0-99 Yukarı/Aşağı Sayıcı).....................................72 4.8 UYGULAMA 8: LCD Display - 1.......................................................................................... 75 4.8.1 MikroC ‘de kullanılan LCD Fonksiyonları:..................................................................76 4.8.2 MikroC ‘de kullanılan LCD Komutları:........................................................................77 4.9 UYGULAMA 9: LCD Display - 2.......................................................................................... 77
5. BÖLÜM - PIC18F4550 DONANIM MİMARİSİ ..................................................81
5.1 Microchip Mikrodenetleyici Ailesi.........................................................................................81 5.2 Genel özellikleriyle PIC18F4550.........................................................................................83 5.2.1 PIC18F4550 USB Özellikleri......................................................................................87 5.2.2 Güç Tasarruf Modları.................................................................................................87 5.2.3 Esnek Osilatör Yapısı................................................................................................ 87 5.2.4 Çevrebirim Özellikleri................................................................................................. 87 5.2.5 PIC18F4550 Mikrodenetleyicisinin Kendine Has Özellikleri.......................................88 5.2.6 ÖZELLİKLER TABLOSU........................................................................................... 89 5.3 PIC18F4550 Osilatör Ayarları.............................................................................................. 90 5.3.1 Osilatör Tipleri............................................................................................................ 90 5.3.2 Kullanılabilecek Kristal Çeşitleri.................................................................................91 5.3.3 USB Veri İletişimi İçin Osilatör Ayarları......................................................................91 5.4 Güç Yönetim Modları........................................................................................................... 93 5.5 Reset (Sıfırlama) İşlemi....................................................................................................... 94 5.5.1 Reset Durumu ve Kaydediciler..................................................................................94 5.6 PIC18F4550 Bellek Organizasyonu....................................................................................95 5.6.1 Flash Program Belleği...............................................................................................95 5.6.2 RAM Veri Belleği........................................................................................................ 96 5.6.3 Data EEprom Belleği................................................................................................. 97 5.7 8 X 8 Donanımsal Çarpma Modülü (Hardware Multiplier)...................................................99 5.8 Kesmeler (Interrupts)......................................................................................................... 100 5.8.1 MikroC ‘de Kesme İşlemleri.....................................................................................111 5.9 Giriş/Çıkış (I/O) Portları..................................................................................................... 111 5.9.1 PORTA.................................................................................................................... 112 5.9.2 PORTB.................................................................................................................... 112 5.9.3 PORTC.................................................................................................................... 113 5.9.4 PORTD.................................................................................................................... 114 5.9.5 PORTE.................................................................................................................... 115 5.10 PIC18F4550 Mikrodenetleyicisi Konfigürasyon Kaydedicileri............................................116
6. BÖLÜM - TIMER (ZAMANLAYICI/SAYICI) DONANIM BİRİMLERİ .............125 6.1 Timer0 Donanım Birimi...................................................................................................... 125 6.1.1 UYGULAMA 1: TIMER0 ‘ın Zamanlayıcı Olarak Kullanılması.................................127 6.1.2 UYGULAMA 2 : TIMER0 ‘ın Sayıcı Olarak Kullanılması..........................................129 6.2 Timer1 Donanım Birimi...................................................................................................... 130 6.2.1 UYGULAMA 3 : TIMER1 ‘in Zamanlayıcı Olarak Kullanılması.................................132 6.2.2 UYGULAMA 4 : TIMER1 ‘in Sayıcı Olarak Kullanılması..........................................133 6.3 Timer2 Donanım Birimi...................................................................................................... 134 6.3.1 UYGULAMA 5 : TIMER2 ‘nin Zamanlayıcı Olarak Kullanılması...............................135 6.4 Timer3 Donanım Birimi...................................................................................................... 137 6.4.1 UYGULAMA 6 : TIMER3 ‘ün Zamanlayıcı Olarak Kullanılması...............................138 6.4.2 UYGULAMA 7 : TIMER3 ‘ün Sayıcı Olarak Kullanılması.........................................140
7. BÖLÜM - CCP ve ECCP DONANIM BİRİMLERİ ..........................................143 7.1 Capture (Yakalama) Modu................................................................................................144 7.1.1 UYGULAMA 1: Capture (Yakalama) Modu..............................................................145 7.2 Compare (Karşılaştırma) Modu.........................................................................................147 7.2.1 UYGULAMA 2: Compare (Karşılaştırma) Modu.......................................................148
7.3 PWM (Pals Genişlik Modülasyonu) Modu.........................................................................150 7.3.1 UYGULAMA 3: PWM (Pulse Width Modulation) Modu............................................152 7.4 Enhanced Capture/Compare/Pwm (ECCP) Donanım Modülü..........................................154 7.4.1 Geliştirilmiş PWM Modu...........................................................................................154 7.4.2 UYGULAMA 4: ECCP Donanım Biriminin Tek Çıkış PWM Modunda Kullanılması. 156 7.4.3 Yarım Köprü (Half-Bridge) Modu.............................................................................158 7.4.4 UYGULAMA 5: ECCP Donanım Biriminin PWM Half-Bridge Modunda Kullanılması 159 7.4.5 Tam Köprü (Full-Bridge) Modu................................................................................161 7.4.6 ECCP Donanım Birimi PWM Ayarları......................................................................162 7.4.7 UYGULAMA 6 : ECCP Donanım Biriminin PWM Full-Bridge Modunda Kullanılması 165
8. BÖLÜM - SPP DONANIM BİRİMİ .................................................................167 8.1
USB Kontrol İçin Yapılandırma.......................................................................................... 170
9. BÖLÜM - MSSP DONANIM BİRİMİ ...............................................................173 9.1 MSSP Donanım Birimi İle SPI Modunda Seri İletişim........................................................174 9.1.1 UYGULAMA 1: MSSP Donanım Biriminin SPI İletişimde Kullanılması....................177 9.2 MSSP Donanım Birimi ile I²C Modunda Seri İletişim.........................................................178 MSSP’de I²C Modu:............................................................................................................... 179 9.2.1 UYGULAMA 2 : MSSP Donanım Biriminin I²C İletişimde Kullanılması....................183
10. BÖLÜM - EUSART DONANIM BİRİMİ ........................................................185 10.1 Seri Veri İletişimi................................................................................................................ 185 10.1.1 Asenkron Seri Veri İletişimi......................................................................................185 10.1.2 Senkron Seri Veri İletişimi........................................................................................186 10.2 EUSART Donanım Birimi Özellikleri..................................................................................187 10.3 Baud Rate Generator (BRG).............................................................................................191 10.4 EUSART ile Asenkron Seri Veri İletişimi...........................................................................192 10.4.1 UYGULAMA 1: EUSART Donanım Birimi İle Asenkron Veri İletişimi.......................194 10.5 EUSART ile Senkron Seri Veri İletişimi.............................................................................198
11. BÖLÜM - A/D DONANIM BİRİMİ .................................................................203 11.1 UYGULAMA 1 : A/D Dönüştürücü.....................................................................................208
12. BÖLÜM - KARŞILAŞTIRICI (COMPARATOR) DONANIM BİRİMİ .............211 12.1 12.2 12.3 12.4
Referans Gerilimi............................................................................................................... 214 UYGULAMA 1: Comparator (Karşılaştırıcı) - 1..................................................................214 UYGULAMA 2: Comparator (Karşılaştırıcı) ve Voltaj Referans Modülü Uygulaması........215 KARŞILAŞTIRICI VOLTAJ REFERANS BİRİMİ................................................................217
13. BÖLÜM - HLVD DONANIM BİRİMİ .............................................................219 13.1 HLVD Donanım Birimi Ayarları..........................................................................................220 13.2 UYGULAMA 1: HLVD Donanım biriminin kullanılması......................................................222
14. BÖLÜM - USB DONANIM BİRİMİ ...............................................................225
14.1 USB VERİ İLETİŞİMİ......................................................................................................... 225 14.1.1 USB Konnektör Tipleri............................................................................................. 226 14.1.2 Topoloji.................................................................................................................... 227 14.1.3 Terminoloji............................................................................................................... 228 14.1.4 USB Veri Transferi................................................................................................... 229 14.1.5 USB Veri Transfer Çeşitleri......................................................................................232 14.1.6 Listeleme İşlemi....................................................................................................... 238 14.1.7 Tanımlayıcılar.......................................................................................................... 239 14.1.8 HID (Human Interface Device).................................................................................244 14.2 PIC18F4550 USB DONANIM BİRİMİ................................................................................245 14.3 USB UYGULAMALARI...................................................................................................... 254 14.3.1 UYGULAMA 1: USB İLE LED KONTROLÜ - 1........................................................257 14.3.2 UYGULAMA 2: USB İLE LED KONTROLÜ – 2.......................................................270 14.3.3 UYGULAMA 3: USB İLE LCD DİSPLAY KONTROLÜ - 1........................................274 14.3.4 UYGULAMA 4: USB İLE LCD DİSPLAY KONTROLÜ - 2........................................281 14.3.5 UYGULAMA 5: USB PORTTAN BİLGİSAYARA VERİ ALINMASI...........................287 14.3.6 UYGULAMA 6: USB PORT İLE TERMOMETRE.....................................................292
15. BÖLÜM - RTC, ISI, SES ve ROTARY PULSE ENCODER UYGULAMALARI ......301 15.1 15.2 15.3 15.4 15.5
UYGULAMA 1: DS1307 RTC (Real Time Clock)..............................................................301 UYGULAMA 2: DS18B20 Isı Sensörü...............................................................................305 UYGULAMA 3: Ses Üretme.............................................................................................. 308 UYGULAMA 4: Rotary Pulse Encoder..............................................................................310 UYGULAMA 5: Keypad (Tuş Takımı)................................................................................312
16. BÖLÜM - PIC18F4550 ve MOTOR UYGULAMALARI ................................317 16.1 DC MOTORLAR................................................................................................................ 317 16.1.1 L298 (DC Motor Sürücüsü)......................................................................................319 16.1.2 UYGULAMA 1: DC Motor Yön ve Hız Kontrolü........................................................320 16.2 STEP (ADIM) MOTORLARI..............................................................................................322 16.2.1 Bipolar ve Unipolar Step Motorlar............................................................................323 16.2.2 Step Motor Uç Tesbiti.............................................................................................. 323 16.2.3 Step Motorun Çalıştırılması.....................................................................................323 16.2.4 ULN2003 (Step Motor Sürücü)................................................................................324 16.2.5 UYGULAMA 2: Step motor kontrolü........................................................................325 16.3 RC SERVO MOTORLAR.................................................................................................. 327 16.3.1 UYGULAMA 3: 8 Adet RC Servo Motor Kontrolü....................................................328 16.3.2 UYGULAMA 4: USB Port ile 8 Adet RC Servo Motor Kontrolü................................336
17. BÖLÜM - KIZILÖTESİ (INFRARED - IR) İLETİŞİM .....................................355 17.1 KIZILÖTESİ VERİ İLETİŞİM PROTOKOLLERİ.................................................................356 17.1.1 UYGULAMA 1: PIC18F4550 ile Kızılötesi (Infrared) İletişim....................................358 17.2 RF İLETİŞİM UYGULAMASI............................................................................................. 363 17.2.1 ATX-34 RF verici.................................................................................................... 363 17.2.2 ARX-34 RF alıcı...................................................................................................... 365 17.2.3 UYGULAMA 2: PIC18F4550 ile RF İletişimi............................................................365
18. BÖLÜM - GRAFİK LCD’LER ve SD&MMC KART’LAR ..............................369 18.1 Grafik Tabanlı LCD Display’ler.......................................................................................... 369 18.1.1 T6963C Tabanlı Grafik LCD Display........................................................................369 18.1.2 UYGULAMA 1: PIC18F4550 ile T6963C Grafik LCD Kontrolü................................373 18.1.3 KS108 Tabanlı Grafik LCD Display..........................................................................378 18.1.4 UYGULAMA 2: PIC18F4550 ile KS108 Grafik LCD Kullanımı.................................379 18.2 SD & MMC Kartlar............................................................................................................. 382 18.2.1 SD Kartlar................................................................................................................ 382 18.2.2 MMC Kartlar............................................................................................................. 383 18.2.3 UYGULAMA 3: PIC18F4550 ile SD/MMC Kart Kullanımı........................................384
19. BÖLÜM - Multi-Tasking ve RTOS ..............................................................389 19.1 Gerçek Zamanlı İşletim Sistemi (RTOS-Real Time Operating System)............................390 19.1.1 Görev Düzenleyicisi (Scheduler)..............................................................................390 19.1.2 RTOS Servisleri....................................................................................................... 391 19.1.3 Senkronizasyon ve Mesajlaşma..............................................................................391 19.2 OSA RTOS........................................................................................................................ 391 19.3 OSA RTOS ile Proje Oluşturmak.......................................................................................391 19.4 UYGULAMA 1: RTOS Uygulaması - 1..............................................................................395 19.5 UYGULAMA 2: RTOS Uygulaması - 2..............................................................................399 19.6 UYGULAMA 3: RTOS Uygulaması - 3..............................................................................402
20. BÖLÜM - USB PIC Programlama Kartı (USB Pic-OS) .............................409 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9
USB Pic-OS Programlayıcısının Tanıtılması.....................................................................410 Kartın Yapımı İçin Gerekli Olan Malzemeler......................................................................411 PNP Yöntemi İle Kartın Baskı Devresinin Çıkarılması ve Montajı.....................................411 USB Pic-OS V1.0 Programının Tanıtılması ve Kullanımı..................................................414 USB Pic-OS V1.0 Programı ile Kartın Test Edilmesi.........................................................415 USB Pic-OS Programlayıcı ile PIC’den okuma yapılması.................................................416 USB Pic-OS Programlayıcı ile PIC’e Programın Yüklenmesi............................................418 USB Pic-OS V1.0 Programının Diğer Özellikleri................................................................419 USB Pic-OS’un Desteklediği Mikrodenetleyiciler...............................................................421
BÖLÜM
1
MikroC 1 MikroC MikroC dünyasına hoş geldiniz! Daha önce hiç C dili kullanmamış olan programcı arkadaşlar, sakın gözünüz korkmasın! Çünkü bu kitap ile hem mikroC ile mikrodenetleyici programlamayı, hem de farkına bile varmadan C programcılığını öğrenmiş olacaksınız. Bu kitabı yazmaya başlamadan önce, bilgisayar programcılığında hiçbir C dili veya türevini kullanmamıştım. Bütün programlarımı Pascal tabanlı olan, Delphi programında yazmakta idim. Fakat şu anda mikroC’nin sayesinde, çok kısa bir sürede Visual C# programında ihtiyacım olan programı yazabilecek duruma geldim. Sizlerde kullandıkça göreceksiniz ki, mikroC’nin kurallarını öğrendikçe, bir taraftan da C dilinin bilgisayar programcılığını öğrenmiş olacaksınız. Ayrıca C dilinin ne kadar güçlü bir programlama dili olduğunu keşfedeceksiniz. MikroC mikrodenetleyici programlama dili; kullanım kolaylığı ve zengin kütüphanesi, hemen hemen her konu da örnek devre şeması ve program kodları ile diğer dillerden ayrılmaktadır. Kısacası, çok kısa bir sürede kullanıcıyı iyi bir mikrodenetleyici programcısı yapabilecek düzeyde tasarlanmış bir programdır. Programcı arkadaşlara tavsiyemiz; önce Bölüm 3’de anlatılan “İlk MikroC Projem” konusuna bir göz atmaları ve ardından Bölüm 4’de verilen “Basit MikroC Uygulamaları” ‘nda verilen uygulamaları birebir yapmalarıdır. İhtiyaç hissettikleri anda 1. ve 2. Bölüm’e dönerek, ihtiyaç duydukları konuya bakmalarıdır. Bütün programcı arkadaşlara kolay gelsin diyerek, mikroC dilini öğrenmeye başlayalım!
1.1 MikroC PRO Demo Programının Bilgisayara Kurulması MikroC PRO Windows İşletim Sistemi altında çalışan bir programdır. Windows XP, Windows Vista, Windows 7 İşletim sistemlerinin bütün versiyonları üzerine kurulabilmektedir. MikroC PRO’yu internetten download edebilmek için; www.mikroe.com internet sayfasının COMPILERS bölümünden, karşınıza gelen pencerede MikroC seçeneğini seçerek bilgisayarınıza indirebilirsiniz NOT: Dikkat etmeniz gereken husus; “MikroC PRO for PIC” programını indirmeniz gerektiğidir. Çünkü aynı internet sayfasında şirketin diğer mikrodenetleyiciler için üretmiş olduğu derleyiciler de yer almaktadır.
12
MikroC & PIC18F4550
Şekil 1.1 MikroC PRO Demo programı internet sayfası Aşağıda verilen ekran görüntüsünde, mikroC PRO’yu indirebileceğiniz internet sayfasının görüntüsü ve adres satırında ise internet sayfasının tam adresi verilmiştir. Birkaç dakika içerisinde bilgisayarınıza indirdiğiniz mikroC PRO demo versiyonudur. Demo versiyonu 2kB boyutunda olabilecek bütün pic yazılımlarını derleme imkanı vermektedir. Ancak bu kitapta yaptığımız birçok uygulama 2 kB boyutunu aştığı için, demo versiyonda derleme şansınız olmayacaktır.
Şekil 1.2 MikroC PRO Demo programının bilgisayara indirilmesi MikroC PRO programını bilgisayarınıza Zip formatında sıkıştırılmış olarak inecektir, herhangi bir klasöre kopyalayınız ve bilgisayarınıza kurmak için karşınıza gelen pencerelerden devamlı “Next” düğmesine basarak kurulum işlemini tamamlayınız.
1.2 MikroC Yazım Kuralları Günlük hayatta konuştuğumuz her dil gibi MikroC dilinin de kendine özgü yazım kuralları vardır. Bu kuralların dışına çıkıldığında MikroC Pro derleyicimiz hata verecektir. Aslında MikroC dili gömülü sistem programcılığı için C dilinden türetilmiş, C dilinin temel özelliklerini ve yazım kurallarını içeren bir dildir. Bu bölümde MikroC dilinin ve C dilinin yazım kurallarından ve özelliklerinden bahsedeceğiz. Bunun için de bu dili kullanırken bir değişken veya sabit tanımlarken kullanamayacağımız kelimeleri göstererek konuya başlayalım.
1. Bölüm - MikroC
13
1.3 Ayrılmış (Reserved) Kelimeler Aşağıdaki kelimeler anahtar kelimeler olarak adlandırılır ve bu kelimeler kullanıcı tarafından bir sabit ya da değişken ismi olarak kullanılamayan kelimelerdir. Örneğin bir değişken tanımlayacağınızda değişkenin adını “catch” olarak belirleyemezsiniz.
1.4 Açıklama Satırları Açıklama satırları, bir programın okunulabilirliğini arttırmak için kullanılan programcı tarafından yazılan ama programın derlenebilir bir parçası olmayan ifadelerdir. Çoğu programcı açıklama satırlarını yazmaya üşenir. Bu doğru bir yaklaşım değildir. Örneğin bir bilgisayar kontrollü kayan yazı panosu programı yazdınız. İki yıl sonra bu programa tekrar ihtiyacınız oldu ve yazdığınız kodu tekrardan incelemeye başladınız. Eğer açıklama satırlarını kodunuza eklediyseniz kodu tekrar incelediğinizde zorlanmadan hangi fonksiyonun ya da kod parçasının ne iş yaptığını anlayabilirsiniz ama açıklama kullanmadıysanız size kolay gelsin uzun saatler; bu kodun ne iş yaptığını anlamaya çalışacaksınız ve muhtemelen anlamayıp sıfırdan bu kodu tekrardan yazmak zorunda kalacaksınız (tecrübeyle sabittir). Anladığınız üzere açıklama satırları bir programcı için çok önemlidir (tecrübeyle öğrenmektense en başından itibaren açıklama satırlarını kullanmaya alışmak daha mantıklı). Eğer açıklamanız tek satırdan oluşacaksa “//“ işaretinden sonra yazılmalıdır. // Buraya açıklamamızı yazarız. // Bu açıklama yanlızca bir satırdan oluşur.
Açıklama birden fazla satırdan oluşuyorsa; ”/*
*/“ açıklama işaretlerinin arasına yazılır.
/* Açıklamamız birden fazla satırı kapsayacağı için bu açıklama işaretlerini kullandık */
Aşağıda bir mikroC programı yazmaya başlamadan önce yazılan açıklama satırları verilmiştir, tavsiyemiz her programın başına böyle bir açıklama bloğu eklemenizdir. /* Timer0 zamanlayıcı uygulaması PIC : PIC18F4550 Board : Pic-OS V2.0 Osilatör : XT, 20 MHz */
1.5 Tanımlayıcı Kelimeler (Tür İsimleri) Değişkenler, sabitler, fonksiyonlar gibi bazı ifadelere isim verilirken bazı kurallara uyulması gerekir. Bunlara isim verilirken, İngiliz alfabesindeki bütün harfler büyük ya da küçük harf olarak kullanılabilir.(Türkçe karakterler kullanılamaz) 0’dan 9’a kadar rakamlar değişken isminde kullanılabilir. “_” karakteri(Alt çizgi karakteri) de belirlediğiniz isimlerin içinde bulunabilir. Burada dikkat etmeniz gereken nokta belirlediğiniz ismin ilk karakteri ya bir harf olmalı ya da “_” karakteri
14
MikroC & PIC18F4550
olmalıdır. Rakamlar isimlerin ilk karakterinde kullanılamaz. MikroC büyük küçük harf duyarlılığına sahiptir. Bir örnek vermek gerekirse Toplam, toplam ve toplaM şeklindeki 3 değişken adı birbirinden farklıdır. Aşağıda bazı geçerli ve geçersiz değişken isimleri görülmektedir. Toplam3 Basinc sicaklik_v1 _metin
// // // //
Geçerli Geçerli Geçerli Geçerli
%yükseklik 5veri Sayaç while
// // // //
Geçersiz Geçersiz Geçersiz Geçersiz
(İlk karakter % işareti olamaz) (İlk karakter bir sayı olamaz) (Türkçe karakter olduğuna dikkat edin) (Anahtar kelime olduğuna dikkat edin)
1.6 Tam Sayılar Tam sayılar onluk (decimal), sekizlik (octal), onaltılık (hexadecimal) yada ikilik (binary) sayı sistemlerinde yazılabilir. Derleyici bu sayı sistemlerinin hepsini kullanabilir. (Bu sayı sistemleri hakkında bilginiz olduğunu varsayıyoruz, eğer bilmiyorsanız ve mikrodenetleyicileri programlamak istiyorsanız mutlaka öğrenmelisiniz!) Sayı onaltılık sayı sisteminde yazılacaksa “0x” ifadesi ile başlamak zorundadır. Örneğin, 0xFE,0x1A, 0x3CF8, vb. İkilik sayı sistemini kullanacaksak sayımız “0b” ifadesi ile başlamalıdır. Örneğin, 0b01101110, 0b1000, vb. Oktal sayı sistemini kullanacaksak sayımız “0” ile başlamak zorundadır. Örneğin, 0234, 0777, vb. Sayıyı onluk sistemde yazmak istiyorsak başına herhangi bir ifade yazmamıza gerek yoktur. Yalnızca sayının pozitif veya negatif olmasına göre “+” yada “-“ işaretlerini kullanabiliriz. Pozitif sayılar için “+” işaretini kullanmaya gerek yoktur, varsayılan olarak önünde işaret olmayan bir sayı pozitif kabul edilir. Örneğin, 458, -135, vb.
1.7 Ondalıklı Sayılar Ondalıklı sayılara, kayan noktalı sayılarda denir. Kayan noktalı sayılar, sayının tam kısmı, nokta ve noktadan sonra gelen ondalıklı kısmından oluşur. Aşağıda bununla ilgili bazı örnekler gösterilmiştir: 0. -1.23 23.45e6 2e-5 3E+10 .09E34
// // // // // //
= = = = = =
0.0 -1.23 23.45 * 106 2.0 * 10-5 3.0 * 1010 0.09 * 1034
1. Bölüm - MikroC
15
1.8 Karakter İfadeler Karakter ifadeleri tek tırnak arasına yazılan tek bir ASCII karakterden oluşan ifadelerdir. ‘a’,’G’,’k’, vb. gibi.
1.9 String İfadeler String ifadeler, ASCII karakterlerden oluşan çift tırnak işaretlerinin arasına yazılan ifadelerdir. Derleyici, çift tırnakla başlayan ve çift tırnakla sonlandırılan bir ifade gördüğünde bunun string bir ifade olduğunu anlar. String ifadelerin içinde, kelimeler arasında boşluklar yer alabilir(Normal bir cümle yazımındaki gibi kelimeler arasındaki boşluk), derleyici tarafından bu boşluklar bir karakter olarak algılanır. String ifadelerin sonunda, string ifadenin sonunu belirten bir boş karakter(ASCII sıfır) bulunur. Bu karakter string ifadenin toplam uzunluğuna eklenmez. “Merhaba Dünya” “ “ “Sicaklik : “ ““
// // // //
13 karakter uzunluğunda bir string ifade 2 boşluk karakteri, 2 karakter uzunluğunda 11 karakter uzunluğunda bir string ifade Boş bir string, 0 karakter uzunluğunda
1.10 Boşluk (Kaçış) Karakterleri Harfler ve sayıların dışında bir takım özel karakterler de char tipi ile kullanılabilir. Bunlara kaçış (boşluk) karakterleri denir. Bir “\” karakteriyle başlayan ekrana doğrudan yazılmayan ama görüntülemeyle ilgili görevleri olan karakterlerdir. Bunlardan en çok kullanılanı, ‘\n’ karakteridir. ‘\n’ karakteri iki karakterden oluşuyor gibi görünsede aslında tek karakterdir. ‘\n’ karakterinin görevi, yeni bir satıra geçmektir. Bu karaktere yeni satır (new line) karakteri adı verilir. Karakter
Değeri
PC karşılığı
Anlamı ve Görevi
\a
0x07
BEL
Uyarı amaçlı bir ses çıkarır.
\b
0x08
BS
Backspace, kendinden önceki karakteri siler.
\f
0x0C
FF
Yeni bir sayfanın başına gitmeye yarar.
\n
0x0A
LF
Newline (Linefeed), bir sonraki satıra geçer.
\r
0x0D
CR
Carriage Return, satır başı yapılır.
\t
0x09
HT
Tab (horizontal), bir tab boşluk bırakır.
\v
0x0B
VT
\\
0x5C
\
\’
0x27
‘
Vertical Tab, bir tab dikey boşluk bırakır. Backslash, \ karakterini kullanabilmek için \\ şeklinde yazılır. Kesme işareti.
\"
0x22
"
Çift tırnak.
\?
0x3F
?
Soru işareti.
\O
Yok
O = oktal sayının string gösterimi
\xH
Yok
H = Hex sayıların string gösterimi
\XH
Yok
H = Hex sayıların string gösterimi
18
MikroC & PIC18F4550 char int
*char_pt; *veri_pt;
1.11.9
// karakter tipinde bir verinin adresini saklayacak // tamsayı tipinde bir verinin adresini saklayacak
Eşittir İşareti ( = )
Eşittir işareti, değişkenlere ya da sabitlere değer atamak için kullanılır. unsigned short test[5] = { 1, 2, 3, 4, 5 }; unsigned short x = 5;
Karşılaştırma ifadelerinde == kullanılır. = ile == birbirine karıştırılmamalıdır. Biri karşılaştırma işleminde eşit mi diye kontrol eder, diğeri değer atama işlemlerinde kullanılır.
1.11.10 Diyez İşareti ( # ) Önişlemci komutları için kullanılır. İşlemin bir derleyici eylemi olduğunu belirtmek için kullanılır. Önişlemci komutları, yazdığınız kodun en üst kısmında yer almalıdır. #include #define BLOCK_SIZE 512
// math.h kütüphanesini programa ekler. // 512 yerine BLOCK_SIZE kullanılabilir.
1.12 Depolama Sınıfları Depolama sınıfları, bir değişken ya da fonksiyonun C programı içindeki ömrünü belirler. MikroC’de kullanabileceğimiz depolama sınıfları auto, register, static ve extern belirliyici türleri vardır. Bu belirleyiciler ile tanımlanan değişkenler ömürleri itibariyle ikiye ayrılırlar. Bunlar otomatik depolama ömürlüler ve durağan depolama ömürlülerdir.
1.12.1
Auto
Auto veri depolama yöntemi, değişkenin lokal bir değişken olduğunu belirtir. Auto olarak
tanımlanmış bir değişkene oluşturulduğu fonksiyon ya da kod bloğunun içinde erişilebilir. Varsayılan olarak bütün değişkenler auto olarak kabul edilir.
1.12.2
Register
Register veri depolama yöntemi, RAM yerine bir kaydediciye depolanan bir lokal değişken
tanımlamak için kullanılır. MikroC’de register veri depolama yöntemi kullanılamaz. C dili için geçerli bir kuraldır.
1.12.3
Static
Static olarak tanımlanan bir değişken, programın çalışmaya başlaması ile hafızaya yerleşir ve
program sonlanana kadar hafızadan silinmez.
22
MikroC & PIC18F4550
char
*gösterici_ismi;
Gösterici tarafından gösterilen hafıza alanındaki veriye ulaşmak için, gösterici isminin önüne * işaretinin konulması gerekir. unsigned int *p; *p = 5;
// işaretsiz tamsayı olarak göstericimizi tanımladık // göstericinin tutacağı adres alanının içine 5 sayısını yükledik
1.18 Yapılar Yapılar sayesinde aynı yada farklı türdeki değişkenleri bir araya getirip kendi türümüzü oluşturabiliriz. Yapılar özellikle büyük programlarda birbirleriyle bağlantılı değişkenlerin bir araya getirilerek tek bir değişken gibi kullanılmasına olanak sağlar. struct OgrenciYapi{ char isim[25]; char soyisim[25]; int yas; int numara; };
// OgrenciYapi türünde bir // yapı tanımlamış olduk
struct OgrenciYapi ogrenci;
// ogrenci OgrenciYapi içindeki // değişkenlere erişebilir
Yapı içindeki elemanlara doğrudan erişim ya da dolaylı erişim metodlarını kullanabilirz. Bunlar için . ve -> operatörleri kullanılır. Nokta operatörü yapı içindeki elemana doğrudan erişim için kullanılır, -> operatörü ise gösterici olarak belirlenen bir yapıya erişim için kullanılır. ogrenci.isim pa->m
// Yapı içindeki isim değişkenine eriştik // Yapı içindeki m değişkenine erişim // (*pa).m ile aynı işi yapar
1.18.1
Enumaration Tanımlama
Enümarasyon, uygun isimlerle birbirinden farklı ifadeleri dizi şeklinde göstermek için kullanılan bir veri tanımlama şeklidir. Çok sık kullanılmasa da, kullanıldığı programlarda kullanıcıya büyük kolaylıklar sağlar. Kullanımına örnek verecek olursak: enum haftanin_gunleri { P, Pt, S, Cr, Pe, Cu, Ct };
Örneğimiz de, haftanın günleri isimli bir değişken ile; farklı isimlerdeki günleri bir dizi şeklinde tanımlamış olduk. Günlerden istediğimizi aşağıda gösterilen biçimlerde çağırabiliriz: gun = Pt; ya da gun = 1;
1. Bölüm - MikroC
35
for (sayac=0; sayac < n; sayac++ ) s+= a[i] * b[i]; Dikkat ederseniz; for döngüsünde { } blok parantezlerini kullanmadık. Kontrol ve döngü ifadelerinden sonra işletilmesi gereken yalnızca bir satır varsa { } blok parantezlerini kullanmak zorunda değiliz. Ama yinede programlamaya yeni başlayanların alışkanlık kazanmak için { } blok parantezlerini kullanmalarını tavsiye ederiz!
Aşağıda verilen kod satırları incelendiğinde for döngüsü daha iyi anlaşılacaktır: void main() { trisb = 0x00; portb = 0x00; for(portb = 0; portb < 0x05; portb++) { delay_ms(500); } }
Yukarıda verilen kod satırlarında, for döngüsü; portb’nin içeriği 0’dan başlayarak 5 değerine kadar 0.5 sn süre aralıklarla 1 artırılır ve 5 değerini aşınca şart sağlanmadığı için döngüden çıkılır. Daha önceki konularda, kontrol yapılarında break ifadesinden bahsetmiştik. Break ifadesi sadece switch-case kontrol yapısında kullanılmaz, aynı zamanda döngülerde de kullanılabilir. Bir döngü içinde break deyimine rastlanıldığında döngünün sonuna gelinip gelinmediğine bakılmaksızın döngü dışına çıkılır. Break ifadesi kontrol yapısından yada döngülerden istediğimiz an çıkmamızı sağlamaktadır. while (..) { ... if (val > 0) break; // val > 0 olunca // döngüden çıkılır ... }
do { ... if (val > 0) break; // val > 0 olunca // döngüden çıkılır ... while (..);
for (..;..;..) { ... if (val > 0) break; // val > 0 olunca // döngüden çıkılır ... }
continue ifadesi döngü başlangıcına dönmek için kullanılır. Program içinde continue deyimine
rastlanıldığında program sonraki satırları çalıştırmadan döngünün ilk satırına döner. while (..) { ... if (val > 0) continue; ... // continue programı // buraya atlatır }
do { ... if (val > 0) continue; ... // continue programı // buraya atlatır while (..);
for (..;..;..) { ... if (val > 0) continue; ... // continue programı // buraya atlatır }
50
MikroC & PIC18F4550
girintili yazma ayarları, kodlardaki renk ayarları gibi işlemleri yapabiliriz. Output sekmesinde çıkış dosyasında hangi verilerin olacağını belirleyebiliriz.
Şekil 2. 21 Options
2.1.8
Help Menüsü
Help menüsündeki seçenekleri tek tek açıklamayacağız. Help menüsünü kullanarak, MikroC derleyicisi hakkında genel bir bilgiye sahip olabilirsiniz. Yardım dosyalarını kullanarak programınızı yazabilirsiniz.
2.2 MikroC PRO Kütüphanesi Bu konu içerisinde, mikroC kütüphanesi tek tek tanıtılmayacak; kütüphanenin nasıl kullanılacağı ve yapacağımız bir projeye nasıl uyarlanabileceği anlatılacaktır. MikroC’nin kütüphanesi pic programlama dilleri içerisinde en zengin olanı ve en hızlı güncellenenidir. Ayrıca MikroC’nin kütüphanesi hem öğretici, hem de kullanımı en kolay olanıdır. MikroC ile program yazdıkça ve kütüphanesini kullandıkça bu yorumlara eminim sizler de katılacaksınız. MikroC programında “Library Manager” , “View” ana menüsü altında bulunmaktadır. Şekil 2.22’de “Library Manager” penceresinin görüntüsü verilmiştir. Biraz incelendiğinde kütüphanenin zenginliği, verilen örnek kod ve devre şemalarının ne kadar anlaşılır ve öğretici olduğu görülecektir. İnanının, pic programlamayı hiç bilmeyen bir kullanıcı bile, mikroC kütüphanesinde verilen örnekleri inceleyerek iyi bir pic programcısı olabilir. Bu kitapta verilen uygulamaların bir çoğu mikroC kütüphanesinden faydalanılarak PIC18F4550 mikrodenetleyicisine uyarlanmıştır. Zaten bu konu anlatılırken kullanıcıya mikroC kütüphanesinden nasıl faydalanılır, bu anlatılmaya çalışılacaktır. MikroC programının ve Proteus programının herhangi bir versiyonunun bilgisayarınızda yüklü olması gerekmektedir. Hatırlayacağınız gibi mikroC programının demo versiyonu 2 KB’a kadar olan
60
MikroC & PIC18F4550
Şekil 3. 6 Kod penceresi görüntüsü
Şekil 3. 7 Derleme işlemi
Yazdığımız programı .hex koduna dönüştürmek için Project menüsünü seçeriz ve şekil 3.7’deki menü açılır. Buradan “Build” seçeneğini seçerek yazdığımız kodun derlenip .hex kodunun oluşturulmasını sağlarız. Oluşturulan bu .hex kodunu mikrodenetleyicimizi programlamak için kullanacağız. Derleme işlemi sonrasında “MikroC Pro” derleyicisi içerisine .asm, .hex, .mcl ve .lst uzantılı dosyaları oluşturur.
projenin
oluşturulduğu
klasör
Eğer oluşturduğunuz projenin konfigürasyon (yapılandırma) ayarlarını değiştirmek isterseniz, “Project” menüsünden “Edit Project” seçeneğini seçersiniz ve karşınıza aşağıdaki pencere gelir. Bu pencereyi kullanarak bütün konfigürasyon ayarlarını değiştirebilirsiniz. Kullandığınız PIC mikrodenetleyicinin özellikleri arttıkça bu pencerede bulunan konfigürasyon ayarları da artmaktadır. Şekil 3.8’de, PIC18F4550 mikrodenetleyicisi için mikroC programındaki “Edit Project” penceresi görülmektedir. Bu verilen konfigürasyon penceresi mikroC programında PIC18F4550 için default olan konfigürasyon ayarlarıdır. Kullanıcı oluşturacağı projeye göre bu pencereyi açıp, gerekli düzenlemeleri yapmalıdır. Kitabımız da verilen bütün uygulama devreleri için bu ayarlar uygulama içerisinde verilmiştir. Ayrıca elimizden geldiğince bu ayarların ve osilatör tiplerinin farklı seçenekleri verilmeye çalışılarak, kullanıcının bu ayarları daha iyi anlaması amaçlanmıştır.
Şekil 3. 8 Edit Project (mikrodenetleyici konfigürasyon ayarları) penceresi PIC18F4550 mikrodenetleyicisi osilatör seçenekleri ve diğer yapılandırma seçenekleri ile ilgili ayrıntılı açıklamalar, Bölüm 4’de uygulama 1 ile uygulama 2 içerisinde ve Bölüm 5’de verilmiştir.
72
MikroC & PIC18F4550
Şekil 4. 8 PIC18F4550 mikrodenetleyicisi konfigürasyon ayarları Bu devre şeması kullanılarak, aşağıda verilen örneklerde farklı program kodları verilmiştir. Örnek 1’de 9-0 arası aşağı sayıcı program, örnek 2’de ise 0-9 yukarı ve ardından 9-0 arası aşağı sayıcı program kodları verilmiştir. Örnek 1
Örnek 2
const char display[10] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F };
const char display[10] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F };
unsigned short i = 9;
unsigned short i = 9;
void main() { ADCON1 |= 0x0F; CMCON |= 7;
void main() { ADCON1 |= 0x0F; CMCON |= 7;
trisb = 0; portb = 1;
trisb = 0; portb = 1;
while(1) { for(i = 10; i > 0; i--) { portb = display[i-1]; delay_ms(300); } }
while(1) { for(i=0; i 0; i--) { portb = display[i-1]; delay_ms(300); } }
}
}
4. Bölüm - BASİT MikroC UYGULAMALARI
75
İlk yazacağımız MikroC programında butonlar kullanılmadan, yalnızca yukarı saydırma işlemi yaptırılacaktır. Devre çalışmaya başladığında display’de 00 rakamları görülecek ve birer birer 99‘a kadar yukarı sayma işlemi gerçekleştirilecektir. Ayrıca bu uygulamada da bir önceki uygulamada olduğu gibi her display için bir adet olmak üzere 7448 ortak katot display sürücü entegreleri kullanılmıştır.
Şekil 4. 10 7 Segment display - 3 (0-99 yukarı/aşağı sayıcı) uygulama devre şeması Aşağıdaki tabloda verilen MikroC programında butonlar olmadan yukarı/aşağı saydırma işlemi yaptırılmıştır. Bu programda PIC18F4550 mikrodenetleyicisi için şekil 4.8‘de gösterilen konfigürasyon ayarları kullanılacaktır. MikroC program kodları : short display = 0;
// display isminde değişken tanımlandı
void main() { ADCON1 |= 0x0F; CMCON |= 0x07; trisb = 0; portb = 0;
// // // // //
}
while(1) { // portb = dec2bcd(display); // display++; // delay_ms(250); // if (display > 99) display = 0; } // //
ana program başlangıcı AN pinleri dijital I/O olarak yapılandırıldı karşılaştırıcılar pasif edildi B portu çıkış olarak yönlendirildi B portunun tüm pinleri sıfırlandı sonsuz döngü başlangıcı display değişkeninin değerini portb’ye gönder display değişkeninin değerini 1 artır 250 ms bekle // display değişkeni 99’dan büyük olunca 0 yap sonsuz döngü sonu ana program sonu
Bu programda şimdiye kadar yazılan MikroC programlarımızdan farklı olarak dec2bcd fonksiyonu kullanılmıştır. Bu fonksiyon işaretli kısa tamsayı ( short) tipinde tanımlanan display isimli
4. Bölüm - BASİT MikroC UYGULAMALARI
4.8.2
79
MikroC ‘de kullanılan LCD Komutları:
LCD Komutu
Açıklama
_LCD_FIRST_ROW
İmleci 1. satıra taşır.
_LCD_SECOND_ROW
İmleci 2. satıra taşır.
_LCD_THIRD_ROW
İmleci 3. satıra taşır.
_LCD_FOURTH_ROW
İmleci 4. satıra taşır.
_LCD_CLEAR
Ekranı siler.
_LCD_RETURN_HOME
İmleci orijinal pozisyonuna (1. sütuna) taşır.
_LCD_CURSOR_OFF
İmleci kapatır.
_LCD_UNDERLINE_ON
İmlecin altında çizgi oluşturur.
_LCD_BLINK_CURSOR_ON
İmlecin yanıp-sönmesini sağlar.
_LCD_MOVE_CURSOR_LEFT
İmleci 1 sola taşır.
_LCD_MOVE_CURSOR_RIGHT
İmleci 1 sağa taşır.
_LCD_TURN_ON
LCD display ekranını açar.
_LCD_TURN_OFF
LCD display ekranını kapatır.
_LCD_SHIFT_LEFT
Displaydeki verileri sola kaydırır.
_LCD_SHIFT_RIGHT
Displaydeki verileri sağa kaydırır.
Tabloda verilen LCD display komutları tek başına kullanılmazlar. Bir önceki tabloda verilen LCD_Cmd() fonksiyonu ile birlikte kullanılabilmektedirler. Örneğin LCD display ekranında bulunan imleç (bilgisayar da word ya da notepad programlarında olduğu gibi) yanıp - söndürülecek (blink) ise, aşağıdaki gibi bir komut satırı kullanılır: Lcd_Cmd(_LCD_BLINK_CURSOR_ON);
Bu yazılan komut satırı ile LCD display ekranında imlecin o andaki pozisyonu ne olursa olsun artık blink (yanıp - sönme) yapmaya başlayacaktır. Kullanıcıya tavsiyemiz; yukarıda verilen fonksiyon ve komutları tek tek denemeleri ve en azından Proteus programında simülasyon yöntemi ile sonuçları incelemeleridir.
4.9 UYGULAMA 9: LCD Display - 2 Bu uygulamada, LCD display fonksiyon ve komutlarının kullanımı üzerine MikroC programı yazılacaktır. Şekil 4.12‘de verilen devre şeması incelendiğinde, B portuna bağlı bulunan 3 adet buton ile LCD display ekranı üzerinde işlem yapılacaktır. Butonlar PIC18F4550 mikrodenetleyicisine pull-down dirençleri ile bağlanmış ve basılınca mikrodenetleyiciye lojik 1 sinyali verecek şekilde ayarlanmıştır. PIC18F4550 ‘nin B portunun RB5, RB6 ve RB7 pinlerine bağlanan butonlar sırasıyla; sil, yaz ve sola olarak isimlendirilmiştir. Bu devrede yine şekil 4.2‘de verilen yapılandırma ayarlarını kullanabilirsiniz. Dahili osilatörü tercih edecek olan kullanıcı şekil 4.4’de verilen ayarları kullanmalıdır.
5. Bölüm - PIC18F4550 DONANIM MİMARİSİ
85
PIC16C5X Ailesi
Microchip ailesinin en hesaplı mikrodenetleyicileri bu ailedendir. 12 bit’lik komut setine sahiptir. Oldukça kısıtlı özellikleri olan bu mikrodenetleyicilerin en büyük özellikleri ucuz olmaları ve 2V kadar düşük gerilimlerde çalışabilmeleridir. Ayrıca bu ailenin 16HVCXX mikrodenetleyicileri direkt 15V (araba aküsü gerilimi) ile de çalışabilmektedir.
1.
XT
Kristal/Rezonatör
2.
XTPLL
Kristal/Rezonatör (PLL seçili)
3.
HS
Yüksek – Hız Kristal/Rezonatör
4.
HSPLL
Yüksek – Hız Kristal/Rezonatör (PLL seçili)
5.
EC
Harici Saat FOSC/4 çıkışı ile
6.
ECIO
Harici Saat RA6 üzerindeki I/O ile
7.
ECPLL
Harici Saat (PLL seçili) ve RA6 üzerindeki FOSC/4 ile
8.
ECPIO
Harici Saat (PLL seçili) RA6 üzerindeki I/O ile
9.
INTHS
Dâhili Osilatör (mikrodenetleyici saat kaynağı olarak kullanılır, HS osilatör USB saat kaynağı olarak kullanılır.)
10.
INTXT
Dâhili Osilatör (mikrodenetleyici saat kaynağı olarak kullanılır, XT osilatör USB saat kaynağı olarak kullanılır.)
11.
INTIO
Dâhili Osilatör (mikrodenetleyici saat kaynağı olarak kullanılır, EC osilatör USB saat kaynağı olarak kullanılır, RA6 üzerindeki dijital I/O ile.)
12.
INTCKO
Dâhili Osilatör (mikrodenetleyici saat kaynağı olarak kullanılır, EC osilatör USB saat kaynağı olarak kullanılır, RA6 üzerindeki FOSC/4 ile.)
Tablo 5. 2 PIC18F4550’de kullanılabilecek osilatör seçenekleri
5.3.2
Kullanılabilecek Kristal Çeşitleri
PIC18F4550 mikrodenetleyicisinin çalışabilmesi için harici olarak bağlanabilecek kristal osilatör çeşitleri aşağıdaki tabloda verilmiştir. Görüleceği üzere 4, 8 ve 20 MHz ‘lik kristaller kullanılabilmektedir ve bu kristaller ile bağlanabilecek kondansatör değerleri de yine tabloda gösterilmiştir.
HS
27 pF 22 pF 15 pF
27 pF 22 pF 15 pF
Tablo 5. 3 PIC18F4550’de kullanılabilecek kristal çeşitleri
126
MikroC & PIC18F4550
Bu uygulama da Timer0 donanımını 16-bit çalıştırmamızın amacı kullanıcının donanım birimlerini farklı çalışma modlarında da görmesini istememizdendir. Yoksa bu uygulama 8-bit sayıcı modunda da aynı şekilde çalışmaktadır. 16-bit sayıcı modunun avantajı çok büyük değerlere kadar sayma işlemini yapabilmesidir. Fakat Timer0 donanım birimi 8-bit sayıcı olarak çalıştırılmak istenirse; Kesme Oluşma Sayısı
= (256 – TMR0L ön değeri) x prescaler değeri
ile kesme oluşma sayısı ayarlanabilir. MikroC program kodlarında, sonsuz döngü içerisinin boş olduğu görülecektir. Bütün işlem interrupt() fonksiyonu içerisinde halledilmiştir. Bu da bize donanımın programdan bağımsız şekilde çalıştığının en açık göstergesi olmaktadır. Yani bu uygulama bize, mikrodenetleyici donanımının kullanılmasının profesyonel bir program yazmak için ön şart olduğunu göstermektedir. Bu uygulama için de şekil 4.8’de verilen PIC18F4550 yapılandırma ayarları kullanılmalıdır.
6.2 Timer1 Donanım Birimi Timer1 donanım birimi 16-bit’lik olması ile ön plana çıkmakta ve aynı Timer0 donanım birimi gibi hem sayıcı, hem de zamanlayıcı olarak kullanılabilmektedir. Timer1 zamanlayıcı/sayıcı modülü şu özelliklere sahiptir: Yazılımla yapılandırılabilen 16-bit zamanlayıcı/sayıcı. Okunabilir ve yazılabilir 8-bit kaydedici çifti (TMR1H ve TMR1L). Seçilebilir saat kaynağı (dahili veya harici) ile sistem saati veya Timer1 dahili osilatör seçeneği. Taşma durumunda kesme üretme. CCP özel olay tetikleyicisi ile resetleme. Saat (device clock) durum bayrağı (T1RUN). Timer1 modülü 16 bit’lik bir zamanlayıcıdır ve TMR1H ve TMR1L olmak üzere 8’er bit’lik iki kaydediciden oluşmaktadır. Bu kaydediciler hem okunabilir, hem de yazılabilirler. Timer1 (TMR1H ve TMR1L kaydedicileri) 0000h’dan başlar ve FFFFh’a kadar değerini artırır. Timer1’in değeri FFFFh olduğunda tekrar 0000h değerine geçer ve bu arada bir taşma olduğundan bir kesme üretir. Bu kesme TMR1IF bayrağının durum değiştirmesiyle anlaşılır. (TMR1IF bayrağı PIR1 kaydedicisinin 0. bit’idir.) Bir taşma esnasında üretilen kesme, PIE1 kaydedicisinin 0. bit’i olan TMR1IE’nin durumuna göre aktif veya pasif yapılabilir. Bu zamanlayıcı/sayıcı modülünün kontrolü T1CON adı verilen kaydedici aracılığı ile yapılır. Ayrıca CCP (Capture/Compare/PWM) donanım birimi Compare - Karşılaştırma modunda çalıştırılıyor iken Timer1 modülünü kullanır. Aşağıda verilen T1CON kaydedicisinin bit işlevleri ve Timer1 donanım biriminin yukarıda anlatılan özellikleri, uygulama yapıldıkça daha iyi anlaşılacaktır. Bu sebeple kullanıcıya tavsiyemiz, verilen uygulamaları kesinlikle yapmaları ve sonra da verilen kod satırlarında düzenleme yaparak farklı uygulamalar yapmasıdır.
6. Bölüm - TIMER DONANIM BİRİMLERİ
127
T1CON Kaydedicisi
Tablo 6. 3 T1CON kaydedicisi ve bit işlevleri
NOT :
– yerler kullanılmaz ve ‘0’ okunur. Gölgeli hücreler TIMER1 için kullanılmamaktadır.
Tablo 6. 4 TIMER1 ile ilgili kaydediciler ve bit’leri
6.2.1 UYGULAMA 3 : TIMER1 ‘in Zamanlayıcı Olarak Kullanılması Bu uygulamamızda Timer1 donanım birimi 16-bit zamanlayıcı olarak kullanılacaktır. Timer1 donanımı her 10000 µs yani 10 ms‘de bir kesme oluşturacak şekilde ayarlanmıştır. Her 100 kesme de bir (10 ms x 100 = 1000 ms = 1 sn) PORTB ‘ye bağlanan ledlerin durumları değiştirilecektir.
fkomut = Mikrodenetleyici Osilatör Frekansı / 4 = 20 MHz / 4 = 5 MHz Tkomut = 1 / fkomut = 1 / 5 MHz = 0,2 x 10-6 = 0,2 µs Kesme zamanı
= Tkomut x Prescaler oranı x (65536 – TMR1 ön değeri) = 0,2 µs x 8 x (65536 – 59286) = 1,6 µs x 6250 = 10000 µs = 10 ms
PORTB Konum değiştirme zamanı
= Kesme zamanı x 100 = 10 ms x 100 = 1000 ms = 1 saniye
7. Bölüm - CCP ve ECCP DONANIM BİRİMLERİ
while(1) { if (RB6_bit) { delay_ms(40); aktif_duty1++; PWM1_Set_Duty(aktif_duty1); }
}
if (RB7_bit) { delay_ms(40); aktif_duty1--; PWM1_Set_Duty(aktif_duty1); }
149
// Sonsuz döngü. // // // //
RB6 butonuna basıldı mı? 40 ms bekle aktif_duty1 değerini 1 artır PWM1 için yeni duty_cycle set edildi
// // // //
RB7 butonuna basıldı mı? 40 ms bekle aktif_duty1 değerini 1 azalt PWM1 için yeni duty_cycle set edildi
}
7.4 Enhanced Capture/Compare/Pwm (ECCP) Donanım Modülü PIC18F4550 mikrodenetleyicisinde standart CCP donanım modülünün yanı sıra, bir de bu donanım modülünün daha gelişmişi olan ECCP donanım modülü bulunmaktadır. ECCP donanım modülü CCP1 modülü olarak da isimlendirilir. ECCP donanım birimi geliştirilmiş PWM yetenekleri sayesinde kullanıcıya 2 veya 4 çıkış kanalı ile birlikte; kullanıcı tercihli polarite imkanı, dead-band (ölü-bant) kontrolü, otomatik kapanma-açılma gibi imkanlar sağlamaktadır. ECCP donanım modülü, standart CCP donanım modülü ile capture (yakalama), compare (karşılaştırma) ve tek çıkış PWM özellikleri tamamen aynıdır. ECCP donanım modülü CCP1CON kontrol kaydedicisi tarafından kontrol edilmektedir ve yapı itibarıyla standart CCP modülü için kullanılan kontrol kaydedicisinden farklı bir yapıya sahiptir. ECCP modülü ayrıca, geliştirilmiş PWM işlemi ve otomatik kapanma özelliklerini yerine getirebilmesi amacıyla düşünülmüş olan ECCP1DEL ve ECCP1AS kaydedicilerine sahiptir.
7.4.1
Geliştirilmiş PWM Modu
ECCP donanım biriminin standart CCP donanım biriminden farkı, kullanıcıya geliştirilmiş PWM sinyali üretebilme imkanı sağlamasıdır. CCP1CON kaydedicisinin P1M1:P1M0 bitleri kullanılarak aşağıda verilen şekillerde PWM sinyali üretilebilir:
Tek çıkış Yarım köprü (Half-Bridge) çıkış Tam köprü (Full-Bridge) çıkış, forward (ileri) modu Tam köprü (Full-Bridge) çıkış, reserve (geri) modu
Tek çıkış çalışma modu standart CCP donanım biriminde elde ettiğimiz şekilde PWM sinyali elde etmek için kullanılır.
184
MikroC & PIC18F4550
NOT: 12-bit ‘lik Break (character) karakteri; bir start, 12-bit 0 ve bir stop bit’inden oluşur. Break karakter iletimi ile FIFO yeni gelecek olan (byte) bilgi için hazırlanır.
EUSART donanım kullanılmaktadır:
biriminin
kontrolü
ve
yapılandırılması
için
aşağıdaki
Transmit Status and Control (TXSTA) Receive Status and Control (RCSTA) Baud Rate Control (BAUDCON)
TXSTA Kaydedicisi (TRANSMIT STATUS AND CONTROL REGISTER)
Tablo 10. 1 TXSTA kaydedicisi ve bit işlevleri
RCSTA Kaydedicisi (RECEIVE STATUS AND CONTROL REGISTER)
R W U
: İlgili bit’in yalnızca okunabileceğini gösterir. : İlgili bit’in yazılabilir bit olduğunu gösterir. : Kullanılmayan bit’i gösterir.
Tablo 10. 2 RCSTA kaydedicisi ve bit işlevleri
BAUDCON Kaydedicisi (BAUD RATE CONTROL REGISTER)
kaydediciler
PIC18F4550 mikrodenetleyicisin de şekil 13.1’de verilen blok diyagramı HLVD donanım biriminin yapısını ve donanımsal olarak nasıl kullanıldığını göstermektedir. RA5/AN4/SS’/HLVDIN/C2OUT isimli 7 numaralı pinden HLVD donanım birimine harici voltaj (trip point) izleme noktası oluşturulur. Bu nokta blok şemada gösterildiği gibi iki adet gerilim bölücü direnç yardımı ile yapılır. Gerekli HLVD donanım ayarları yapıldıktan sonra, tablo 13.3’de gösterilen ve HLVDCON kaydedicisindeki HLVD3 ile HLVD0 bit’leri ile ayarlanabilen voltaj aralığı izlenmeye alınır. Ne zaman ki HLVDIN pini üzerinde izlemeye alınan gerilim, HLVD3:HLVD0 pinleri ile ayarlanan gerilim değerinin dışına çıktı, HLVDIF bayrağı etkin olur ve bir kesme üretilir. Bu donanım birimi HLVDCON adı verilen (tablo 13.1) kaydedici ile aktif hale getirilmekte ve ayarları yapılmaktadır.
13.1 HLVD Donanım Birimi Ayarları HLVD donanım biriminin kullanılabilmesi için aşağıdaki adımların izlenmesi gerekir: 1. HLVDEN bit’i sıfırlanmalıdır (HLVDCON). 2. İstenilen HLVD trip noktası seçilmesidir (HLVDL3:HLVDL0 bit’leri ile). 3. Yüksek voltaj algılama için VDIRMAG = 1 veya düşük voltaj algılama için VDIRMAG = 0 yapılmalıdır. 4. HLVDEN bit’i ile HLVD donanım birimi etkinleştirilir. 5. HLVD kesme bayrağı (HLVDIF(PIR2)) temizlenmelidir (kesme bayrağı durumu önceki kesmeden kalmış olabilir). 6. HLVDIE ve GIE/GIEH bit’leri (PIE2 ve INTCON) ile HLVD donanım birimi kesmesi aktif hale getirilmelidir. IRVST bit’i set (lojik 1) edilene kadar bir kesme üretilmeyecektir.
Şekil 13. 2 Düşük voltaj algılama durumu (VDIRMAG = 0)
220
MikroC & PIC18F4550
PIR2.HLVDIF = 0;
// Adım 5 : Kesme bayrağı sıfırlandı
PIR2.HLVDIE = 1; INTCON.GIE = 1;
// Adım 6 : HLVD donanım birimi kesmesi aktif edildi // : Çevresel kesmeler etkinleştirildi
while(1) { }
}
Verilen mikroC kodları incelendiğinde, önce void interrupt() fonksiyonu ile kesme bayrağı (HLVDIF) kontrol edilmiş ve lojik 1 olduğunda RB0’a bağlanan led diyot yakılmıştır. Daha önceki konularda anlatıldığı üzere, mikroC’de (ve diğer programlama dillerinde) öncelikle kesme fonksiyonu tanımlanır. Ana program içerisinde ise adım adım, (HLVD donanım birimi ayarları konusunda anlatıldığı gibi) HLVD donanım birimi ayarları yapılmış ve aktif hale getirilmiştir. HLVDL3:HLVDL0 bit’lerine lojik 1101 değeri yüklenerek, HLVDIN girişinden (izleme noktası) alınan voltaj değeri 4.33 Vdc’nin altına düştüğünde kesme oluşması sağlanmıştır.
14. Bölüm - USB DONANIM BİRİMİ
231
14.1.5.3 Bulk (Yığın) Transfer Yöntemi Büyük miktarlardaki verinin gönderimi için bulk transfer yöntemi kullanılır. Bulk transfer yönteminde verinin düzgün bir şekilde gönderilip gönderilmediğini anlamak için 16 bitlik CRC kullanılır. Diğer transaction işlemleri kendilerine ayrılan bant genişliklerini kullanırken bulk transfer yöntemi geriye kalan bant genişliğini kullanır. Eğer hat izokron (isochronous) ya da interrupt (kesme) tarafından kullanılıyorsa bulk transfer yöntemini kullanan endpoint beklemek durumunda kalır. Bu yüzden bulk (yığın) transfer yöntemi zamanlamanın çok önemli olmadığı uygulamalarda tercih edilir. High-speed (yüksek hızlı) ve full-speed(tam hızlı) cihazlarda bu transfer yöntemi kullanılır. Low-speed (düşük hızlı) cihazlarda bulk transfer yöntemi kullanılmaz. Full-speed (tam hızlı) endpoint’lerde maksimum paket boyutu 8,16,32,64 byte olabilir. High-speed (yüksek hızlı) endpoint’lerde maksimum paket boyutu 512 byte’a kadar çıkabilir.
Şekil 14. 9 Bulk transfer IN ve OUT transaction IN token paketinin bilgisayar (host) tarafından gönderilmesinden sonra 3 durum gerçekleşebilir. Birinci durumda cihaz tarafından data paketi doğru gönderilir ve iletim gerçekleşirse handshake (el sıkışma) paketinde ACK bilgisi gönderilir. Eğer endpoint’te bir sorun varsa STALL bilgisi gönderilir. Eğer IN token paketine rağmen gönderilecek bir veri yoksa NAK bilgisi gönderilir. OUT token paketi gönderilirse, bilgisayar (host) tarafından cihaza data paketiyle veri gönderilir. Veri doğru bir şekilde gönderilirse ACK verisi cihaz tarafından bilgisayara (host) iletilir. Eğer endpoint’te bulunan gelen veriyi depolayan alan doluysa cihaz bilgisayara (NAK) bilgisini gönderir. Eğer endpoint’te bir sorun varsa cihaz bilgisayara (host) STALL bilgisini gönderir.
14.1.5.4
Kontrol (Control) Transfer Yöntemleri
Şimdiye anlatılan transfer yöntemlerinin en karmaşığı bu yöntemdir. Kontrol (control) transferi yöntemi genellikle komut verme ve durum bilgileri için kullanılır. Bir USB cihazla bağlantı kurulurken gerçekleştirilen bütün tanımlama (enumeration) işlemleri kontrol transfer yöntemiyle yapılır.
Kontrol transferinin paket boyutu, low-speed (düşük hızlı) cihazlar için 8 byte’tır.
14. Bölüm - USB DONANIM BİRİMİ
14.1.8
241
HID (Human Interface Device)
Günlük hayatta USB porta çok sayıda cihaz bağlayarak kullanmaktayız. Bu cihazların her birinin kullanımını tanımlayan, ait oldukları sınıflar vardır. Bu sınıflardan bazıları aşağıda gösterilmiştir. HID( human interface device-insan arayüz cihazlar) sınıfı da bu sınıflardan biridir ve bizim kitabımızda bu sınıf kullanılacaktır. HID sınıfı Windows tarafından desteklenen ilk USB sınıflarından biridir. HID sınıfı Windows işletim sisteminde ön tanımlı bir sınıf olduğu için herhangi bir ek sürücü yazılımına ihtiyaç duymaksızın tasarladığınız cihaz otomatik tanınır.(tak-çalıştır) Tabi bu cihazla spesifik bir işlem yapmak istiyorsanız(bizim yaptığımız gibi) ek yazılımlar geliştirmeniz gerekebilir. Cihaz Sınıfı
Örnek Cihaz
Display
Monitör
Communication
Modem
Audio
Hoparlör
Mass Storage
Taşınabilir hard-disk
HID
Fare, joystick ve bu kitapta kullandığımız devreler
Tablo 14. 9 HID cihaz sınıfları Eğer cihazınız bir USB/HID cihaz olacaksa yukarıda anlatılan tanımlayıcı hiyerarşisinde biraz farklılık olacaktır. Burada Arayüz Tanımlayıcısından sonra HID Tanımlayıcısı diyeceğimiz bir tanımlayıcı kullanmanız gerekir. Aşağıdaki şekilde bu durum görülmektedir.
Şekil 14. 15 HID tanımlayıcı Cihazın HID sınıfından bir cihaz olduğu Arayüz Tanımlayıcısında belirlenir. Burada bInterfaceClass alanındaki değer 0x03 olarak belirlenirse cihazımız HID sınıfından bir cihazdır.
14. Bölüm - USB DONANIM BİRİMİ
259
Tablo 14. 22 PIC18F4550 osilatör yapılandırma tablosu Ayrıca tablo 14.13‘de verilen “OSCILLATOR CONFIGURATION” tablosundan faydalanarak, mikrodenetleyicimiz 4 MHz‘de; USB donanım modülü ise 16 MHz‘de çalıştırılacaktır. Kullanıcı arzu ettiği takdir de (ki ilerleyen uygulamalarda farklı hızlar da tercih edilecektir), mikrodenetleyiciyi de, USB donanımını da farklı hızlarda kullanabilmektedir. Bütün bu anlatılanlardan sonra artık pic yazılımımız MikroC PRO programı tarafından derlenerek, HEX dosya elde edilebilir. HEX dosya elde edildikten sonra pic‘imiz herhangi bir programlayıcı kartı ile (tavsiyem PicKit2) programlanmalıdır. PIC18F4550 programlanıp, USB deneme kartının üzerine takılır ve herhangi bir USB portundan bilgisayara bağlandıktan sonra karşımıza sırasıyla aşağıdaki pencereler gelmelidir.
Şekil 14. 26 USB HID sürücüsü yükleme pencereleri Şekil 14.26‘da verilen pencereler bize, USB HID deneme kartımızın Windows işletim sistemi tarafından tanındığını ve kullanılabileceğini göstermektedir. Yine Windows işletim sistemi üzerinde, Aygıt Yöneticisinden - İnsan Arabirim Aygıtları altında USB Giriş Aygıtı olarak yaptığımız kartı görebilirsiniz. Şimdi sıra Microsoft Visual C# programını yazmaya geldi. Yeni bir proje dosyası açın ve aşağıda verilen form görüntüsünü oluşturun. Form üzerinde USB Hid komponenti gözükmemekte, fakat USB veri iletişimi bu komponent üzerinden sağlanacağı için eklemeniz gerekmektedir. Formu oluşturduktan sonra şekil 14.27’de gösterildiği gibi nesneler üzerinde gerekli olan düzenlemeleri yapınız.
412
MikroC & PIC18F4550
Şekil 20.26 Top Silk (Üst) yüzeyi İşlem Basamakları 1. Verilen PCB şemanın alt ve üst görünüşünü asetata fotokopi alınız. 2. Bakır plaketi 12.5x8.5 cm ölçülerinde kesiniz ve bakır yüzeyi temizleyerek, kurutunuz. 3. Asetatları makasla kesiniz ve alt görünüş şemasını bakır yüzeye dört köşesinden yapıştırınız. 4. Ütü bezi ile ütünüzün sıcaklık derecesine göre birkaç dakika ütüleyiniz. 5. Bakır plaketi soğumaya bırakınız ve soğuduktan sonra asetatı sökünüz. 6. İyi çıkmayan hatlar varsa, baskı devre kalemi ile üzerinden gidiniz. 7. Baskı devre kalemi ile boş bir alana numaranız ile isim ve soyadınızı yazınız. 8. Plaketi hazırlanan çözelti içerisine atarak, boş alandaki bakırlar eriyene kadar sallayınız. 9. Boş alandaki bakır yüzeyler eriyince plaketi çözelti içerisinden alınız ve (vim ile) iyice yıkayınız. 10. Plaketi kurutunuz ve üst baskı çıktısını dört köşesinden plakete yapıştırınız. 11. Yine ütü bezi ile birkaç dakika ütüleyiniz ve plaket soğuduktan sonra asetatı sökünüz. 12. Artık bakır plaketimiz hazır olmalıdır, delme işlemine geçebilirsiniz. 13. Entegre, soket, kristal, led, buton gibi elemanların pin deliklerini 0,8 mm’lik matkap ucu ile, diğer delikleri 1 mm’lik uç ile deliniz. 14. İsteyen öğrenci kartın dört köşesini 5 mm’lik matkap ucu ile delerek, kartın altına vidalar ile fleks yerleştirebilir. Bu işlem kartınızın daha şık durmasını sağlayacak ve herhangi bir durumda alttan kısa devre olmasını önleyecektir. 15. Kart üzerindeki atlamaları takınız ve lehimleyiniz. 16. Sırasıyla diğer elemanları karta takarak, lehimleyiniz.
418
MikroC & PIC18F4550
10. Kaydedilen hex dosyanın üzerine gidiniz ve çift tıklayarak (dosyayı) “Not Defteri” ile açınız ve aşağıda gösterildiği gibi hex kodun içeriğini görünüz.
Şekil 20.37 Okunan HEX kodun ‘Not Defteri’ nde açılması
20.7 USB Pic-OS Programlayıcı ile PIC’e Programın Yüklenmesi 1. 2. 3. 4.
Programlayıcı kartını bilgisayara takınız ve “Cihaz bulundu…” mesajını ekranda görünüz. Kart üzerindeki yeşil led saniyede 1 Hz aralığında yanıp-sönmelidir. Program yüklenecek olan PIC’i uygun sokete takınız. Cihaz sekmesinden PIC16F628A mikrodenetleyicisini seçiniz ve tekrar “Veri” sekmesine basınız. 5. USB Pic-OS V1.0 programı üzerindeki düğmesine basınız ve karşınıza gelen “Dosya Aç” penceresinden hex dosyayı bularak açınız.
Şekil 20.38 HEX kodun buffer’a alınması 6. Programın “Veri” bölümü aktif iken hex kodu aşağıda verildiği gibi görmelisiniz.