PIC Programlamaya giriş ve mikrodenetleyiciler 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 bu eleman?" denildiğinde; cevap tabi ki bilgisayarlardır. yle ki; yaptığımız her işte adeta elimiz ayağımız haline gelmiş olan bilgisayarlar, günlük hayatımızın ayrılmaz bir parçası haline gelmiştir. Burada bilgisayarlar denildiğinde, hepimizin aklına klavyesi ve ekranıyla PC dediğimiz bilgisayarlar gelmektedir. Halbuki çevremizde o kadar farklı "bilgisayarlar!" vardır ki, bunları dikkatli bakmadığımızda gremeyebiliriz. rnek vermek gerekirse kolumuzdaki saatten, televizyonumuzun uzaktan kumandasına, aracımızın frenlerinden fırınımızın pişirme sistemine kadar her yerde bilgisayarlar karşımıza çıkar. Burada bilgisayar denildiğinde gerçek anlamda "istenilen işlemler dizisini, istenilen zamanda ya da istenilen süreçte yapabilen sistemler" içerisinde mikroişlemci bulunduran elemanlardan sz etmekteyiz. İşte bu şekilde hayatımızın içine girerek araç haline gelen bilgisayar sistemleri, aynı zamanda teknolojinin geliştirilmesi durumunda bir amaçtır. Bu şartlarda, bu sistemleri, üretim aşamasında ya da tüketim aşamasında bilmek veya kullanabilmek günümüzde büyük nem kazanmıştır. Tüketici olarak basit mikroişlemcili aletleri hemen hemen herkes, hatta okuma yazması olmayanlar bile kullanır hale gelmiştir. Günümüzde PC bilgisayarlar da işletim sistemlerinin geliştirilmesiyle herkes tarafından kullanılır hale getirilmeye çalışılmaktadır. Üretim aşamasında ise, kullanılacak malzemenin cinsine gre ince bir ayrıntı işin içine girmektedir, ki bu ayrıntı işlemin cinsine gre mikroişlemci ya da mikrokontrollr olarak kendini gstermektedir. Bu iki terim aslında temelde aynı olmakla birlikte, aralarındaki farkı şyle çarpıcı bir rnekle grmek mümkündür. Bir televizyon uzaktan kumandası için bir mikroişlemci kullanmak demek, adeta bir cep bilgisayarı şeklinde kumanda demektir ki buda maliyet açısından büyük külfet demektir. Halbuki bu işi bir mikrokontrollr ile yaptığımız zaman maliyet, imalat ve boyut açısından büyük avantajlar elde ederiz. yleyse bu iki elemanın farkı nedir? Mikroişlemci dediğimiz eleman temelde bir programı icra etme yeteneğine sahip bir elemandır; ancak bu icra işlemi için çok fazla sayıda yan aparata ihtiyaç duyar. Bu aparatları kısaca hafızalar, osilatr elemanları, besleme elemanları, girişçıkış elemanları şeklinde sıralamak mümkündür. Bu listedeki besleme elemanları, zaten her türlü elektrikli devrede kullanılması gereken elemanlardır. Osilatr devresi ise yerine gre tek bir elemanla bile yapılabilen bir devre parçasıdır. Bunları bir tarafa bıraktığımızda, bir mikroişlemci ile iş gren bir devre yapmak istediğimizde, en çok uğraşılacak blüm hafıza ve Giriş-Çıkış elemanlarıdır ki plaket üzerinde mikroişlemcinizin kaplayacağı alandan kat kat fazlasını işgal ederler. Mikrokontrollr elemanında ise, hafıza ve giriş-çıkış blümleri ve hatta bazı modellerde A/D ve D/A dnüştürücü elemanları da tek chip üzerine yerleştirilmiştir. Bylece mikrokontrollr ile işlem yapabilmek için, devreye ilave olarak sadece besleme devresi ve osilatr devresi elemanlarını eklemek yeterli olacaktır. Bylece gerekli durumda pil ile besleme yapılırsa, kibrit kutusunun yarısı büyüklüğünde devreler üretmek ve bir çok işi yaptırmak mümkün olacaktır. Yukarıda anlattığımız zelliklerinden dolayı günümüzde, zellikle sanayi tipi uygulamalarda mikrokontrollrler PC ve PLC türü devrelerin yerini almaya başlamıştır. PIC 16F8X KOMUTLARI 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 gstergesi (Genellikle 0 ya da 1) b : Bit belirten sayı (0-7 arası) veya Binary sayı (b'00101111') h : Hexadecimal sayı x : Değeri nemli olmayan bit (1 ya da 0 olabilir) : Duruma gre kullanılıp kullanılmaması serbest olan seçenek : İse veya... işleminin sonunda : Değer atama etiket : Değişken adı veya adres bildirmek için kullanılan isim.2. KOMUTLAR VE KULLANIM RNEKLERİ ADDLW : Bir sayı ile W'nin içeriğini topla İngilizce Yazılımı:Add Literal with W Kullanım Şekli: ADDLW k İşlevi: WW+k Etkilenen Bayraklar: C, DC, Z Periyot:1 rnek: ADDLW 05h Komuttan nce W=60h ise Komuttan sonra W=65h olur. ADDWF : Bir register ile W'nin içeriğini topla İngilizce Yazılımı:Add W with File register Kullanım Şekli:ADDWF f, d İşlevi: WW+f veya fW+f Etkilenen Bayraklar:C, DC, Z Periyot:1 rnek: ADDWF SAYI,1 Komuttan nce W=60h ve SAYI=05h ise Komuttan sonra W=60h, SAYI=65 h olur. rnek 2: ADDWF SAYI,0 Komuttan nce W=60h ve SAYI=05h ise Komuttan sonra W=65h, SAYI=05 h olur. ANDLW : Bir sayı ile W'Yi AND işlemi yapar İngilizce Yazılımı:And Literal with W Kullanım Şekli: ANDLW k İşlevi: WW AND k Etkilenen Bayraklar: Z Periyot:1 rnek: ADDLW 05h Komuttan nce W=67h ise Komuttan sonra W=05h olur. ANDWF : Bir register ile W'yi AND yapar. İngilizce Yazılımı:And W with File register Kullanım Şekli:ANDWF f, d İşlevi: WW AND f veya fW AND f Etkilenen Bayraklar:Z Periyot:1 rnek: ADDWF SAYI,1 Komuttan nce W=6Fh ve SAYI=15h ise Komuttan sonra W=6Fh, SAYI=05 h olur. rnek 2: ADDWF SAYI,0 Komuttan nce W=65h ve SAYI=0Fh ise Komuttan sonra W=65h, SAYI=05 h olur. BCF : Registerin istenilen bitini 0 yap İngilizce Yazılımı:Bit Clear f Kullanım Şekli:BCF f, b İşlevi: f 0 Etkilenen Bayraklar:Yok Periyot:1 rnek: BCF SAYI,3 Komuttan nce SAYI=FFh ise Komuttan sonra SAYI=F7h olur. BSF : Registerin istenilen bitini İngilizce Yazılımı:Bit Set f Kullanım Şekli:BSF f, b İşlevi: f 1 Etkilenen Bayraklar:Yok Periyot:1 rnek: BCF SAYI,5 Komuttan nce SAYI=00h ise Komuttan sonra SAYI=20h olur. BTFSC : Registerin istenilen bitini test et ve bu bit 0 ise 1 konut atla İngilizce Yazılımı:Bit Test f, Skip if Clear Kullanım Şekli:BTFSC f, b İşlevi: f = 0 bir komut atla Etkilenen Bayraklar:Yok Periyot:f =1 ise 1 periyot f =0 ise 2 periyot rnek 1: BTFSC SAYI,3 GOTO İŞLEM1 GOTO İŞLEM2 Komuttan nce SAYI=00h ise Komuttan sonra işlem işlem 2 ye gider. rnek 2: BTFSC SAYI,3 GOTO İŞLEM1 GOTO İŞLEM2 Komuttan nce SAYI=FFh ise Komuttan sonra işlem işlem 1 e gider. BTFSS : Registerin istenilen bitini test et ve bu bit 1 ise 1 konut atla İngilizce Yazılımı:Bit Test f, Skip if Set Kullanım Şekli:BTFSS f, b İşlevi: f = 1 bir komut atla Etkilenen Bayraklar:Yok Periyot : f =0 ise 1 periyot f =1 ise 2 periyot rnek 1: BTFSS SAYI,3 GOTO İŞLEM1 GOTO İŞLEM2 Komuttan nce SAYI=00h ise Komuttan sonra işlem işlem 1 e gider. rnek 2: BTFSS SAYI,3 GOTO İŞLEM1 GOTO İŞLEM2 Komuttan nce SAYI=FFh ise Komuttan sonra işlem işlem 2 ye gider. CALL Alt program çağırma komutudur. İngilizce Yazılımı:Call Subrutine Kullanım Şekli:CALL Altprogram İşlevi: TOS PC+1 PC Alt Program Başlangıç Adresi Etkilenen Bayraklar:Yok Periyot:2 rnek: İŞLEM CALL TOPLAMA DEVAM... ... TOPLAMA... Komuttan sonra İşlem TOPLAMA adresinden devam eder. Bu arada DEVAM etiketinin adresi stact'ta tutulur. CLRF : Registerin içeriğini 00h yap İngilizce Yazılımı:Clear f Kullanım Şekli:CLRF f İşlevi: f 00h Etkilenen Bayraklar:Z Periyot:1 rnek: CLRF SAYI Komuttan nce SAYI=xxh ise Komuttan sonra SAYI=00h olur. CLRW : Akümülatrün içeriğini 00h yap İngilizce Yazılımı:Clear W Kullanım Şekli:CLRW İşlevi: W 00h Etkilenen Bayraklar:Z Periyot:1 rnek: CLRW Komuttan nce W=xxh ise Komuttan sonra W=00h olur. CLRWDT : Watchdog timer içeriğini 00h yap İngilizce Yazılımı:Clear Watch Dog Timer Kullanım Şekli:CLRWDT f İşlevi: WDT 00h WDT nblücüsü 0 TO 1, PD 1 Etkilenen Bayraklar: TO, PD Periyot:1 rnek: CLRWDT Komuttan nce WDT=xxh ise Komuttan sonra WDT=00h olur. İşlevde belirtilen diğer değerler atanır COMF : Bir registerin komplementini alır İngilizce Yazılımı:Complement f Kullanım Şekli:COMF f, d İşlevi: W f veya f f Etkilenen Bayraklar:Z Periyot:1 rnek 1: COMF SAYI,0 Komuttan nce W=07h ve SAYI= 30h ise Komuttan sonra W=CFh ve SAYI= 30h olur. rnek 2: COMF SAYI,1 Komuttan nce W=07h ve SAYI= 30h ise Komuttan sonra W=07h ve SAYI= CFh olur. DECF : Register içeriğini 1 azalt. İngilizce Yazılımı:ecrement file register. Kullanım Şekli:ECF f, d İşlevi: Wf-1 veya ff-1 Etkilenen Bayraklar:Z Periyot:1 rnek 1: DECF SAYI,1 Komuttan nce W=6Fh ve SAYI=15h ise Komuttan sonra W=6Fh, SAYI=14h olur. rnek 2: DECF SAYI,0 Komuttan nce W=6Fh ve SAYI=15h ise Komuttan sonra W=14h, SAYI=15h olur. DECFSZ : Register içeriğini 1 azalt, sonuç 0 ise bir komut atla. İngilizce Yazılımı:ecrement f, Skip if Zero Kullanım Şekli:ECFSZ f, d İşlevi: ff-1 ve eğer f=0 ise 1 komut atla. Etkilenen Bayraklar:Yok Periyot: f0 ise 1 periyot f=0 ise 2 periyot rnek : MOVLW 0Fh MOVWF SAYAC TEKRAR DECFSZ SAYAC,1 GOTO TEKRAR DEVAM... Açıklama: Sayac 0 olana dek işlem tekrar ve goto tekrar satırları arasında 15 kez tekrarlar. Sonra sayac 0 olunca işlem devam satırından devam eder. GOTO : Verilen adrese git. İngilizce Yazılımı:Go to adress Kullanım Şekli:GOTO k İşlevi: PCAdres Etkilenen Bayraklar : Yok Periyot:2 rnek : İŞLEM1 GOTO İŞLEM2 Komuttan sonra işlem sırası, işlem2 ye gider. INCF : Register içeriğini 1 artır. İngilizce Yazılımı:Increment file register. Kullanım Şekli:INCF f, d İşlevi: Wf+1 veya ff+1 Etkilenen Bayraklar:Z Periyot:1 rnek 1: INCF SAYI,1 Komuttan nce W=6Fh ve SAYI=15h ise Komuttan sonra W=6Fh, SAYI=16h olur. rnek 2: DECF SAYI,0 Komuttan nce W=6Fh ve SAYI=15h ise Komuttan sonra W=16h, SAYI=15h olur. INCFSZ : Register içeriğini 1 artır, sonuç 0 isebir komut atla. İngilizce Yazılımı:Increment f, Skip if Zero Kullanım Şekli:INCFSZ f, d İşlevi: ff+1 ve eğer f=0 ise 1 komut atla. Etkilenen Bayraklar:Yok Periyot:f0 ise 1 periyot f=0 ise 2 periyot rnek : MOVLW 00h MOVWF SAYAC TEKRAR INCFSZ SAYAC,1 GOTO TEKRAR DEVAM... Açıklama: Sayac 0 olana dek işlem tekrar ve goto tekrar satırları arasında 256 kez tekrarlar. Sonra sayac 0 olunca işlem devam satırından devam eder. IORLW : Bir sayı ile W'yi OR işlemi yapar İngilizce Yazılımı:Inclusive Or Literal with W Kullanım Şekli: IORLW k İşlevi: WW OR k Etkilenen Bayraklar: Z Periyot:1 rnek: ADDLW 05h Komuttan nce W=62h ise Komuttan sonra W=67h olur. IORWF : Bir register ile W'yi OR yapar. İngilizce Yazılımı:Inclusive Or W with File register Kullanım Şekli:IORWF f, d İşlevi: WW OR f veya fW OR f Etkilenen Bayraklar:Z Periyot:1 rnek 1: IORWF SAYI,1 Komuttan nce W=6Fh ve SAYI=15h ise Komuttan sonra W=6Fh, SAYI=7F h olur. rnek 2: ADDWF SAYI,0 Komuttan nce W=65h ve SAYI=0Fh ise Komuttan sonra W=7Fh, SAYI=0F h olur. MOVLW : Accumulatora bir sayı yükle. İngilizce Yazılımı:Move Literal to W Kullanım Şekli: MOVLW k İşlevi: Wk Etkilenen Bayraklar:Yok Periyot:1 rnek: MOVLW 05h Komuttan nce W=xxh ise Komuttan sonra W=05h olur. MOVF : Bir register içeriğini hedefe taşı. İngilizce Yazılımı:Move f Kullanım Şekli:MOVF f, d İşlevi: Wf veya ff Etkilenen Bayraklar:Z Periyot:1 rnek: MOVF SAYI,0 Komuttan nce W=6Fh ve SAYI=15h ise Komuttan sonra W=15h, SAYI=15h olur. MOVWF : W'nin içeriğini bir registere taşı. İngilizce Yazılımı:Move w to f Kullanım Şekli:MOVWF f İşlevi: fW Etkilenen Bayraklar:Yok Periyot:1 rnek: MOVWF SAYI Komuttan nce W=6Fh ve SAYI=15h ise Komuttan sonra W=6Fh, SAYI=6Fh olur. NOP : İşlem yapma İngilizce Yazılımı:No Operation Kullanım Şekli:NOP İşlevi: 1 periyot pekle Etkilenen Bayraklar:Yok Periyot:1 rnek: NOP Açıklama : 1 periyot süresince bekletir. RETFIE : Interupt altprogramından geri dn. İngilizce Yazılımı:Return From Interrupt. Kullanım Şekli:RETFIE İşlevi: PCTOS GIE 1 (INTCON(7)1) Etkilenen Bayraklar:Yok Periyot:2 rnek: RETFIE: Açıklama : İşlevde belirtilenleri yaparak interrupt alt programının çağırıldığı yerden işlemin devam etmesini sağlar. Yani interrupt altprogramını sonlandırma komutudur. RETLW : Altprogramdan accumulatora bir sayı yükleyerek geri dn. İngilizce Yazılımı:Return with Literal in W. Kullanım Şekli:RETLW k İşlevi: Wk ve PCTOS Etkilenen Bayraklar:Yok Periyot:2 rnek: CALL LİSTE komutu işletilecekse ve LİSTE isimli altprogramda aşağıdaki gibi ise W=01h ise işlem bitişinde W=11h olur ve geri dner. W=02h ise işlem bitişinde W=12h olur ve geri dner. Bu şekilde listeden değer seçme işlemlerinde kullanılır. LİSTE ADDWF PC RETLW 11h RETLW 12h RETLW 13h RETLW 14h RETURN : Altprogramdan geri dn. İngilizce Yazılımı:Return From Subrutine. Kullanım Şekli:RETURN İşlevi: PCTOS Etkilenen Bayraklar:Yok Periyot:2 rnek: RETURN Açıklama : İşlevde belirtilenleri yaparak altprogramın çağırıldığı yerden işlemin devam etmesini sağlar. Yani alt programı sonlandırma komutudur. RLF : Registerin bitlerini 1 bit sola dndür. İngilizce Yazılımı:Rotate Left f Kullanım Şekli:RLF f, d İşlevi: Etkilenen Bayraklar:C Periyot:1 rnek 1: RLF SAYI,1 Komuttan nce W=6Fh ve SAYI=15h C=0 ise Komuttan sonra W=6Fh, SAYI=2Ah, C=0 olur. İşlem 4 kez tekrarlarsa W=6Fh, SAYI=05h ve C=1 olur. rnek 2: RLF SAYI,0 Komuttan nce W=6Fh ve SAYI=15h C=0 ise Komuttan sonra W=2Ah, SAYI=15h, C=0 olur. RRF : Registerin bitlerini 1 bit sağa dndür. İngilizce Yazılımı:Rotate Right f Kullanım Şekli:RRF f, d İşlevi: Etkilenen Bayraklar:C Periyot:1 rnek 1: RRF SAYI,1 Komuttan nce W=6Fh ve SAYI=15h, C=0 ise Komuttan sonra W=6Fh, SAYI=0Ah, C=1 olur. İşlem 2 kez tekrarlarsa W=6Fh, SAYI=85h ve C=0 olur. rnek 2: RRF SAYI,0 Komuttan nce W=6Fh ve SAYI=15h C=0 ise Komuttan sonra W=0Ah, SAYI=15h, C=1 olur. SUBLW : Bir sayıdan W'nin içeriğini çıkarır. İngilizce Yazılımı:Subtract W from Literal Kullanım Şekli: SUBLW k İşlevi: Wk-W Etkilenen Bayraklar: C, DC, Z Periyot:1 rnek: SUBLW 65h Komuttan nce W=60h ise Komuttan sonra W=05h olur. SUBWF : Bir registerin içeriğinde W'nin içeriğini çıkarır. İngilizce Yazılımı:Subtract W from File register Kullanım Şekli:SUBWF f, d İşlevi: Wf-W veya ff-W Etkilenen Bayraklar:C, DC, Z Periyot:1 rnek: SUBWF SAYI,1 Komuttan nce W=60h ve SAYI=65h ise Komuttan sonra W=60h, SAYI=05 h olur. rnek 2: SUBWF SAYI,0 Komuttan nce W=60h ve SAYI=65h ise Komuttan sonra W=05h, SAYI=65 h olur. SWAPF : Bir registerin nibble'larını yer değiştir. İngilizce Yazılımı:Swap nibbles in f Kullanım Şekli:SWAPF f, d İşlevi: W f ve W f veya f f ve f f Etkilenen Bayraklar:Yok Periyot:1 rnek: SWAPF SAYI,1 Komuttan nce W=60h ve SAYI=65h ise Komuttan sonra W=60h, SAYI=56 h olur. rnek 2: ADDWF SAYI,0 Komuttan nce W=60h ve SAYI=65h ise Komuttan sonra W=56h, SAYI=65 h olur XORLW : Bir sayı ile W'Yi EXOR işlemi yapar İngilizce Yazılımı:EX-OR Literal with W Kullanım Şekli: XORLW k İşlevi: WW EXOR k Etkilenen Bayraklar: Z Periyot:1 rnek: XORLW 05h Komuttan nce W=67h ise Komuttan sonra W=62h olur. XORWF : Bir register ile W'yi EXOR yapar. İngilizce Yazılımı:EX-OR W with File register Kullanım Şekli:XORWF f, d İşlevi: WW EXOR f veya fW EXOR f Etkilenen Bayraklar:Z Periyot:1 rnek 1: XORWF SAYI,1 Komuttan nce W=6Fh ve SAYI=15h ise Komuttan sonra W=6Fh, SAYI=7Ah olur. rnek 2: XORWF SAYI,0 Komuttan nce W=65h ve SAYI=15h ise Komuttan sonra W=70h, SAYI=15 h olur. Not: Komutlarda hedef olarak 0 şeklinde belirtildiğinde bilgi W adresine gider, 1 ile belirtildiğinde ise ilgili registere gider. Burada 0 yerine w, 1 yerine ilgili registerin adı yazılırsa da program aynı olur. Bu yazılımda program daha anlaşılır olur. binary sayıların hex. karşılığını Binary Hex. 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F "Sylesem Tesiri Yok ; Sussam Gnül Razı Değil."

bunları okuyup ta pic programlıcak adamın alnını karşlarım arkadaşyok daha yle bi adam bu kardarcık şeyle progralıcaksaol sanal hacı Ardından yüz kpek havlamayan kurt, kurt sayılmaz..

sagolss hoja

aynen ameleye katılıyorum :) çok karışık şeyler byle olmaz bu iş.. En iyisi kitaptır, alacaksın bir kitap okuyacaksın. kasacaksınpaylaşım için sağol ama hoca verimli olmuyor byle uzun yazılar.. Bundan sonra sadece insan olanlarla muhattap olacağım.. Ona gre karşıma gelin...