PIC Serisi mikroişlemciler  MICROCHIP firması tarafından geliştirilmiş ve üretim amacı  çok fonksiyonlu  logic uygulamalarının hızlı ve ucuz bir 
 Mikroişlemci ile yazılım yoluyla karşılanmasıdır.  
PIC’in kelime anlamı –PERIPHERAL  INTERFACE CONTROLLER– Giriş Cıkış işlemcisidir. İlk olarak 1994 yılında  16 bitlik ve 32 bitlik büyük işlemcilerin giriş ve çıkışlarındaki yükü azaltmak  ve denetlemek amacıyla 
 çok hızlı ve ucuz bir çözüme ihtiyaç duyulduğu için geliştirilmiştir.  
Çok geniş bir ürün ailesinin ilk üyesi olan PIC16C54 bu ihtiyacın ilk meyvesidir. PIC işlemcileri RISC -benzeri işlemciler olarak anılır. PIC16C54 12 Bit komut hafıza genişliği olan 8 bitlik CMOS bir işlemcidir. 18 bacaklı dip kılıfta 13 I/O bacağına sahiptir ve 20 Mhz osilator hızına kadar kullanılabilir. 33 adet komut içermektedir. 512 byte program epromu ve 25 byte RAM`i bulunmaktadır. Bu hafıza kapasitesi birçok insanı güldürmüştür sanırım ama bir risc işlemci olması birçok işin bu kapasitede uygulanmasına olanak vermektedir. Örneğin ANTRAK R94 rölesinde kullanılan role kontrol devresi bir adet PIC16C54 içermektedir. Bu devre sayesinde R94 Time Out Timer, DTMF kodlu Kontrol ve kapatma, Konuşma sonu zamanlaması gibi işlemler program belleğinde 324 byte yer kaplamakta 14 byte RAM kullanılmaktadır.
PIC serisi tüm işlemciler herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 adet kondansatör, 1 adet direnç ve bir kristal ile çalıştırılabilmektedir. Tek bacaktan 40 mA akım çekilebilmekte ve entegre toplamı olarak 150 mA akım akıtma kapasitesine sahiptir. Entegrenin 4 Mhz osilator frekansında çektiği akım çalışırken 2 mA stand-by durumunda ise 20uA kadardır. PIC 16C54’ün fiyatının 2.0 US$ civarında olduğu düşünülürse bu işlemcinin avantajı kolayca anlaşılır.
PIC 16C54 ‘un mensup olduğu işlemci ailesi 12Bit core 16C5X olarak anılır. Bu gruba temel grup adı verilir. Bu ailenin üyesi diğer işlemciler PIC16C57, PIC16C58 ve dünyanın en küçük işlemcisi olarak anilan 8 bacakli PIC12C508 ve PIC 12C509’dur.
Interrupt kapasitesi ilk işlemci ailesi olan 12Bit Core 16C5X ailesinde bulunmamaktadır. Daha sonra üretilen ve Orta sınıf olarak tanınan 14Bit Core- 16CXX ailesi birçok açıdan daha yetenekli bir grup işlemcidir.
Bu ailenin temel özelliği interrupt kapasitesi ve 14 bitlik komut işleme hafızasıdır. Bu özellikler Pic’i gerçek bir işlemci olmaya ve karmaşık işlemlerde kullanılmaya yatkın hale getirmiştir. PIC16CXX ailesi en geniş ürün yelpazesine sahip ailedir. 16CXX ailesinin en önemli özellikleri seri olarak devre üstünde dahi programlanması -ki bu özellik PIC16C5x de epey karmaşıktı , paralel programlanabiliyordu- interrupt kabul edebilmesi, 33 I/O,AD Converter, USART, I2C, SPI gibi endüstri standardı giriş çıkışları kabul edecek işlemcilere ürün yelpazesinde yer vermesi.
PIC 16CXX ailesinin amatör  elektronikçiler arasında en çok tanınan ve dünyada üzerinde ençok proje  üretilmiş, internetin gözdesi olan bireyi 
 PIC16C84 veya yeni adıyla PIC16F84 dur. 
 
 
PIC 16F84 un bu kadar popüler  olması onun çok iyi bir işlemci olmasından ziyade program belleğinin Eeprom  –  Elektrikle silinip yazılabilen bellek – olmasından kaynaklanmaktadır. Seri  olarak dört adet kabloyla programlanması da diğer önemli avantajıdır. Bugüne  kadar amatörce 
 bir işlemciyle uğraşmış herkesin en büyük sıkıntısı eprom veya  eprom tabanlı  işlemcileri programladıktan sonra UltraViole ışık kaynağı ile silip tekrar  programlamaktır. Bu çok zahmetli ve bir amatör için ekipman gerektiren yöntem  olmustur. Evde üretilmesi zor olan özel bir programlayıcı da madalyonun diğer  yüzüdür.  
PIC16F84 amatörler tarafından internette en bol programlayıcısı bulunan işlemcidir herhalde. Ben şu ana kadar 50 den fazla PC ve MAC tabanlı evde yapabileceğiniz programlayıcıya rastladım. Eprom silmek diye birşey zaten söz konusu değil zira eeprom belleği programlayan programlayıcı devre 1 saniye içinde aynı belleği silebilmektedir. Bu özellik size çok hızlı ve defalarca deneyerek program geliştirme avantajını getirmektedir ki bu amatör elektronikçi için bulunmaz bir nimettir. Bu denemeleri yaparken işlemciyi devrenizden sökmeniz dahi gerekmez. Bu tip programlamaya ISP –In System Programming– denmektedir. Amatör bir elektronikçi PIC16F84 ile Program geliştirmek için aşağıdaki ekipmana ihtiyaç duyacaktır:
- 
PIC16F84
 - 
MS-DOS tabanlı PC
 - 
ASCII Editör (Örneğin Dos’un EDIT’I)
 - 
MPASM Assembler
 - 
Programlayıcı/silici
 - 
Programlayıcı için yazılım
 
Bu ekipmanı nereden ve nasıl temin edeceğimize kısaca bir göz atalım.
PIC16F84 veya yerine PIC 16C84’ü elektronik yedek parça satan mağazaların bazılarından temin etmek mümkün. Herhangi bir TTL lojik entegresi kadar temini kolay olmasa da gene de yaygın olarak bulunabiliyor.
ASCII Editör olarak herhangi  bir ASCII editor kullanılabilir, bizim için en  kolay bulunan editor DOS’un  içinde gelen EDIT’tir. Bir PIC programı assemblerda "COMPILE" işlemi yapılmadan  evvel editorde  program olarak yazılır ve saklanır.Bu text programın sonu  mutlaka.  
 ASM olmalıdır. Örnegin deneme.asm  
MPASM Microhip tarafindan  yazIlmış bir PIC assembler programıdır.  Bu program tüm pic ailesini kapsar.  MPASM ‘in hem Windows altında  
 çalışan hem de dos altında çalışan versiyonları bulunmaktadır. Bu programı Microchip  sitesinden bedava alabilirsiniz.  
Progr
amlama devresi bir adet  DB9 dişi Konnektör ve üç adet dirençten oluşmaktadır. Bu devre çok basit olup PC  ‘nin COM portunu kullanır.  
 Devrenin gerçekleştirilmesi aynı zamanda minimum bir PIC Sistemi yapmamızı  gerektirdiğinden iki işi bir defada halletmiş olacağiz.  
 Şekil 1 ve Şekil 2 deki devreleri kurarak hem bir programlayıcı hem de bir PIC  tabanlı Bilgisayar Sistemimiz olacak.  
Bir PIC İşlemcisinin çalişması  için bir adet kristal, 2 adet direnç,3 adet kondansatör ve 14 nolu bacağa +5Volt  , 5 nolu bacağa toprak vermek yeterlidir.  
 Geri kalan bacaklar giriş ve çıkış portlarıdır.  
  
Şekil1 de yer alan 3 adet  dirençten oluşan devre com port ile pic’in ilgili bacaklarını birleştirir. Bu  devre yalnızca  picprog.zip deki yazılımla birlikte ve  sadece PIC16C84 ve PIC 16F84’un programlanması için kullanılır.  
   
 
  
   
Şekil 2 deki devre ise Minimum PIC Sistemi olarak adlandırdığımız devredir. Bu devreyi şekil 1 ile birlikte kullanarak PIC programlama işlemi için gerekli komple sistemi elde ederiz.
Programlama işlemi sonunda  şekil 1 deki devre picden ayrılarak  Şekil 2 deki sistem tek başına yüklenen  programı çalıştırır.  
   
Programlama yazılımına   picprog.zip adlı dosyayı alarak sahip  olabilirsiniz.  Bu dosyanın içinde üç adet dosya sıkıştırılmıştır.  
 Bunlar PGM.BAT, JDM84.EXE, PIP02.EXE’dir.  
Pic ile ilgili bilgiler ve MPASM için http://www.microchip.com/
  | 
PICBIT PLC derleyicisindeki  elemanlar bir TTL veya CMOS Lojik ailesindeki lojik entegresi elemanlarından  işlev olarak farklı değildir,  buradaki en önemli fark birkaç ente
gre ile bir  mantık sistemi kurmak  yerine PICBIT bünyesindeki mantık yapı taşlarını  kullanarak bir program  yaratıp bunu PIC işlemci yardımıyla simüle etmektir.  
PICBIT  derleyicisinde bulunan  LOJİK elemanlarından  IN, IN NOT, OUT,  OUT NOT, AND, AND NOT, OR, OR NOT, XOR,  XOR NOT, NOT ve I/O  
 NOT ‘ı teker teker ele alalım.  
IN, IN NOT, OUT ve OUT NOT Elemanları:  
  
Şekil 1 – IN, IN NOT, OUT ve  OUT NOT elemanı kullanım şekilleri  
   
Şekil 1 de görüldüğü gibi IN elemanı bir adet giriş bacağı ve bir adette çıkış bacağı bulunan bir elemandır.IN elemanı girişindeki fonksiyonu mantık devresinin diğer elemanları için hazırlar ve birleştirir. IN elemanı PIC’e dış ortamdan giriş yapmamızı sağlar. IN elemanı girişine RA ve RB portlarından herhangi biri (Bu portlar PICBIT te PA ve PB olarak anılır) ilişkilendirilebilir, böylece PB veya PA portlarına uygulanan sinyal IN elemanı sayesinde diğer elemanlara aktarılır.
IN elemanı girişine portlardan  başka MARKER dediğimiz ve M00 dan  başlayıp M15 ‘e kadar devam eden 16 adet  geçici saklama elemanları  bağlanabilir. MARKER ‘lar bir işlem sonucunun bir  porttan değilde bir  lojik sisteminden geldiği durumlarda sonuçları saklamak  için kullanılan  
 hafıza üniteleri olarak kabul edilebilirler.  
IN girişine TIMER elemanı bağlanarak gecikmeler elde edilebilir. TIMER elemanı ms şeklinde çeşitli zaman değerlerini içeren ve seçildiği zaman birimi süresince aktif kalan bir zamanlayıcıdır.
Bir COUNTER elemanı çıkşını IN girişine girerek COUNTER işleminin sonucunun giriş elemanını etkilemesi sağlanır.
Bunlar dşında mnatık  sistemimize bir noktada sabit bir lojik seviyesi enjekte etmek ihtiyacı duyarsak  0 veya 1 sabitlerini kulanıp IN elemanı  
 girişine verebiliriz.  
IN NOT elemanı IN elemanı ile  aynı işlevlere sahiptir fakat tek farkı girişinde bulunan sinyali evirerek  çıkışına vermesidir.Bir çeşit inverter gibi  
 çalışmaktadır.  
OUT ve OUT NOT elemanı IN ve IN  NOT elemanları ile benzer fakat ters  işlevlere sahiptirler.OUT elemanı  tasarladığımız mantık sisteminin  sonucunun dış ortama yani portlara veya  markerlara yada bir counter  elemanına aktarılmasına yardımcı olur.OUT elemanıda  IN elemanı gibi  
 bir adet giriş ve bir adet çıkış bacağına sahiptir.  
OUT NOT elemanı OUT ile aynı fonksiyonlara sahip inverted çıkış vermektedir.
AND, AND NOT, OR, OR NOT  Elemanları :  
Şekil  2 – AND ,AND NOT ,OR ,OR NOT Elemanları kullanım şekilleri  
AND ve OR elemanları ttl veya  cmos serisi and veya or entegrelerinden  fonksiyon olarak farklı değildir.İki  adet girişleri bulunur ve bu girişlere  
 PA vaya PB portları , M00 dan M15 ‘e kadar MARKER’lar, TIMER elemanı, Counter  elemanı çıkışları ile sabit lojik elde etmek için 0 veya 1 elemanı  bağlanabilir.  
AND NOT ve OR NOT elemanları eviren lojik kapılar gibi davranırlar ve giriş sinyalinin AND veya OR sonucunu evirerek çıkışa iletirler.
XOR ve XOR NOT Elemanları :  
Şekil  3 – XOR ve XOR NOT elemanı kullanım şekilleri  
XOR elemanı kullanım olarak TTL veya CMOS lojik ailesindeki xor entegresiyle aynı özelliklere sahiptir. Kulanımı and ve or elemanlarıyla benzerdir.
XOR NOT girişteki sinyallerin işlem sonucunu evirerek çıkşına verir.
NOT ve I/O NOT Elemanları:  
 
                                                 Şekil 4 – NOT ve I/O NOT   Elemanları   kullanım şekilleri  
NOT: Elemanı IN ve OUT arasında kullanıldığında giren sinyali evirerek çıkışa vermek için kullanılır.NOT elemanı sinyalin evirilmesi gereken her noktada kullanılabilir.
I/O NOT elemanı NOT elemanı ile  aynı özelliklere sahiptir . 
 PICBIT elemanlarından  COUNTER , LATCH , REGISTER ve STEPPER gibi daha karmaşık  olanlarını gelecek ay anlatmaya çalışacağım.  
Bu ay birazda PICBIT kullanımı üzerine eğilelim.
– PICBIT ile çalışırken  herhangi bir elemanı sol mouse tuşu ile sarı bölgeye koyabilirsiniz.  
 – Bir elemanı mouse ile sağ tuş yardımıyla tutup oynatabilirsiniz.  
 – Bir elemanı sol tuş yardimiyla seçip üzerinde değişiklilk yapabilir veya  yok  edebilirsiniz.  
 – Pop –up menulere sol tuş yardımıyla erişip sağ tuş yardımıyla  
 bırakabilirsiniz.  – File – menüsünde SAVE sizi UYARMADAN eski dosyanızın  üstüne  yazar DİKKAT!!!  
   
 – TOOL Menüsü:  
1- REDRAW : Ekranı yeniden çizer.  
 2- PACK :  Elemanlar arası boşlukları yok eder.  
 3- PHOTO: Ekranın görüntüsünü PCX file olarak kaydeder.  
 4- EDITOR : List dosyası için editörü çalıştırır.  
 – COMPILE Menüsü:  
1- Compile MPASM assemblerini çalıştırır ve hex  file oluşturur.  Bu file pic içine direk programlanabilir.  
 2- 2.menu compile seçeneği yalnızca PLC dosyasını oluşturur.  Bu include tipi  seçenekler için uygundur.  
  
– HARDWARE Menüsü:  
   
 Bu menüdeki birçok seçenek bize kullanım için uygun değil,  çünkü bizim  kullandığımız programlayıcı PICBIT programlayıcıdan biraz  basit ve farklı fakat  buradaki XTAL seçeneği 4 Mhz dışındaki kristal tipleri  ile çalışırken timer  fonksiyonlarındaki ayarlamaları yapmak için kullanılabilir.  
 TIMER ile kullanılan milisaniye değerleri 4mhz kristal baz alınarak   hesaplanmıştır. XTAL komutu kullnılmazsa başka tip kristallerde TIMER  
 ön görülen milisaniye değerlerini sağlayamaz.  
   
   
 – ELEMENT MENÜSÜ :  
1- CHANGE : Eleman cinsini değiştirmek,  
 2- DELETE : Elemanı yok etmek,  
 3- INSERT :  iki eleman arasına yeni bir eleman sokmak için ,  
 4- EDIT :  Elemanın giriş veya çıkışlarını düzeltmek için,  
 5- HILITE : Aynı giriş ,çıkış özellikli elemanları işaretler,  
 6- REMARK : Elemanla ilgili bir açıklama yazmak için kullanılır.  
 Bu tip açıklamalar program daha sonra listesi incelenirken büyük  
 kolaylık sağlar.  
Son bir nokta: mouse bir eleman üzerinde iken F1 tuşuna basarsanız eleman ile ilgili açıklama alabilirsiniz…..
PICBIT  ile PLC lojik  uygulamalarında set, reset, latch, counter, D-flip flop,  stepper kontrol elemanı, Shift registerları göreceğiz.
   
SET, RESET, LATCH, D-FLIP FLOP MODÜLLERİ:
 
 
SET MODÜLÜ:
Bu modül girişine uygulanan lojik sinyal sevyesi High ise modül çıkışı SET yani HIGH kalır. Aksi halde LOW durumunu korur.
RESET MODÜLÜ:
RESET Modülü SET modülünün işlevsel tersidir. Girişine uygulanan sinyal LOW ise SET yani çıkışı HIGH olur. Girişe uygulanan sinyal HIGH ise çıkış reset yani LOW dur.
LATCH MODÜLÜ:
Latch modülü klasik bir ttl veya cmos serisi latch’den mantık olarak farklı değildir. LAT girişine HIGH bir sinyal verildiğinde LATCH transparan yani girişine uygulanan sinyal seviyesini aynen çıkışına aktarır. LAT girişi LOW olduğunda ise girişindeki sinyalin lojik durumunu korur.
INV-LATCH MODÜLÜ:
INV-LATCH Modülü ,LATCH Modülü  ile fonksiyon olarak aynı görevi görmektedir.Tek fark Girişten gelen lojik  sinyali çıkışta (invert) evirmesidir. 
  
   
D-FLIP FLOP:
D Flip Flop modülü DFF girişine  HIGH lojik seviyesi uygulandığında girişi aynen çıkışa taşımaktadır.Boylece  girişte bulunan lojik seviyesi çıkışta 
 saklanır. D-Flip Flop lar 8 adet olup bunların ilk dört tanesi çıkışta ki  sinyali aynen korur, diğer 4 adet ise çıkış sinyalini girişe göre evirerek  saklar. 
   
COUNTER, STEPPER ve SHIFT  REGISTER MODÜLLERİ: 
 
Counter Modülü:
Counter modülü iki adet giriş ve bir adet çıkıştan oluşmaktadır. CNT girişindeki sinyalin lojik olarak 0/1 şeklinde değişmesi counter yani sayacın artmasına sebep olur. Diğer giriş ise sayacın sıfırlanması içindir. Counter modülü seçilip PİCBİT sayfasına konulduğunda ortaya çıkan THUMB-WHEEL şeklindeki anahtarlar yardımıyla sayacın erişeceği maximum değer seçilir. Girişlere MARKER, PORT, TIMER ya da başka bir COUNTER’ın çıkışı verilebilir. Toplam 8 adet COUNTER modülü vardır ve bu modüller birbirinden bağımsız, aynı anda kullanılabilir.
STEPPER MODÜLÜ:
PICBIT içinde iki adet stepper modülü vardır. İlk modül stepper motor, a çıkış olarak RB0, RB1, RB2, RB3, ikinci modül ise çıkış olarak RB4, RB5, RB6, RB7 portlarını kullanmaktadır. Her Stepper kontrol modülü iki adet giriş içerir. Bunlar DIR ve STEP girişleridir. DIR girişine LOW yani 0 seviyesinde bir lojik sinyali uygulandığında stepper motor saat yönünün aksine, HIGH yani 1 seviyesinde bir lojik sinyal ise motoru saat yönünde döndürür. Tabii step girişine herhangi bir kare dalga veya değişken bir lojik sinyal uygulamazsak motorda herhangi bir hareket olmaz. STEP girişinde sinyal değişkenken DIR sinyali seviyesinin degiştirilmesi stepper motoru sağa veya sola döndürür.
SHIFT REGISTER MODÜLÜ:
Shift register modülü çıkış olarak PB Portunu yani RB0…RB7’yi kullanmaktadır. Bu modülün iki adet girişi vardır; bunlar SHIFT ve DIR girişleridir. Shift girişine girilen lojik sinyal seviyesi değiştikçe PB çıkışıda bu sinyali PB0..PB7 arasında birisinden diğerine öteler. DIR girişine uygulanan lojik sinyalin 0/1 durumu ise bu ötelemeyi sağa veya sola yönlendirir. Bu modül çalışma prensibi olarak herhangi bir TTL veya CMOS shift registerdan farklı değildir.
| 
 PIC 16F84 PROGRAMLAYICI 
 Resmin üzerine tıklayarak büyük görebilirsiniz. Programlama yazılımı olarak      Tord Andersson’un yazdığı  win3.1/95/98 üzerinde çalışan  picprog      programını  kullanacağız. Programı     picprog.zip      içinde bulacaksınız. Bu program  windows ile tam uyumlu olduğundan      herhangibir com port sorunu  bulunmamaktadır. Programı çalıştırmadan önce      porgramlayıcıyı  com porta takıp voltaj vermelisiniz. Pic’i programlayıcıya      taktıktan  sonra sırasıyla önce com porta takıp daha sonra programlayıcıya      voltaj verip en sonunda programı çalıştırmak en Programı çalıştırdığınız da karşınıza aşağıdaki gibi bir ekran gelir.       
 Program başlığında pic 16c84 dese de 16f84’ler sorunsuz programlanabilmektedir. Üst menüdeki File seçeneği programlanacak dosyayı diskten yüklemeye, Device seçeneği ise pic boş mu? Kontrolu, silme, pic’i okuma gibi işlemleri içerir. Setup menüsü ise aşağıdaki gibi bir com port seçme ekranı içerir. Buradan programlayıcının bağlı olduğu com port seçilir. 
       
 Programlayıcı üzerinde voltaj yoksa veya seçilen com port yanlış ise programlama, okuma veya silme işlemine teşebbüs ettiğinizde program bunu size hata mesajı ile belirtir. Altta solda bulunan Fuses seçenekleri pic’i programlarken seçeceğiniz osilatör tipi, watchdog timer, power on timer ve programınızın pic’den başkalarınca okunmasını önleyen Code protect seçenekleridir. Device menüsündeki seçeneklere Fuses üzerindeki tuşlarla da ulaşabilirsiniz.  | 
                 
 