PIC16F84A, Microchip Technology tarafından geliştirilen 8 bitlik bir mikrodenetleyicidir. Peripheral Interface Controller (Çevresel Arayüz Denetleyicisi) kısaltması olan PIC, 1993 yılında PDP bilgisayarlarının çevresel cihazlarını kontrol etmek amacıyla tasarlanmış ve o zamandan beri gömülü sistemlerde yaygın olarak kullanılmıştır. PIC16F84A, özellikle düşük güç tüketimi, yüksek performans ve flash bellek teknolojisi ile dikkat çeker. 18 pinli bir entegre devre olan bu mikrodenetleyici, 1K kelimelik program belleği, 68 bayt RAM ve 64 bayt EEPROM ile donatılmıştır. Orta menzilli PIC ailesinin bir üyesi olarak, sade komut seti ve esnek yapısı sayesinde hem hobi projelerinde hem de endüstriyel uygulamalarda tercih edilmektedir.
PIC16F84A Mikrodenetleyicisi (Microchip)
Mimari ve Teknik Özellikler
PIC16F84A, Harvard mimarisine dayanan bir RISC (Reduced Instruction Set Computer - Azaltılmış Komut Seti Bilgisayarı) mikrodenetleyicisidir. Bu mimari, program ve veri belleğine ayrı yollarla erişim sağlayarak işlem hızını artırır. Veri yolu 8 bit genişliğindeyken, program yolu 14 bitliktir, bu da her komutun 14 bitlik bir kelime olarak saklanmasını sağlar. Mikrodenetleyici, CMOS teknolojisiyle üretilmiş olup düşük güç tüketimi sunar ve 20 MHz’e kadar saat frekanslarında çalışabilir, bu da 200 nanosaniyelik komut yürütme döngülerine olanak tanır.
Bellek Yapısı
PIC16F84A’nın bellek yapısı, program belleği, veri belleği ve EEPROM olmak üzere üç ana bölümden oluşur. Program belleği, 1024 kelimelik (1K) flash bellek içerir ve kullanıcı tarafından yazılan komutları depolar. Bu flash bellek, elektrikle silinebilir ve yeniden programlanabilir özelliktedir, bu da geliştirme süreçlerini kolaylaştırır. Veri belleği, 68 bayt RAM’den oluşur ve çalışma sırasında geçici veri saklama için kullanılır. RAM, iki bellek bankasına ayrılmıştır; her banka 128 baytlık bir alan içerir, ancak yalnızca ilk 12 baytı Özel Fonksiyon Kayıtları (SFR - Special Function Registers) için ayrılmıştır. SFR’ler, giriş/çıkış portlarının durumu, zamanlayıcılar ve diğer donanım bileşenlerinin kontrolü için kullanılır. Ayrıca, 64 baytlık EEPROM, güç kesintisinde bile veri saklama yeteneği sunar ve kalıcı veri depolama için idealdir.
Giriş/Çıkış Portları
PIC16F84A, 13 adet programlanabilir giriş/çıkış (I/O) pinine sahiptir ve bu pinler iki portta gruplandırılmıştır: PORTA (5 bit) ve PORTB (8 bit). PORTA’nın RA4 pini, aynı zamanda Timer0 modülünün harici saat girişi olarak kullanılabilir. Portların yönü, TRISA ve TRISB kayıtları aracılığıyla giriş veya çıkış olarak yapılandırılır. Bu esneklik, mikrodenetleyicinin sensörlerden veri alması, LED’leri kontrol etmesi veya diğer çevresel cihazlarla iletişim kurması için uygundur. Ayrıca, PORTB’nin RB0 pini kesme (interrupt) girişi olarak kullanılabilir, bu da olay odaklı programlamayı destekler.
Komut Seti ve İşlem Hızı
PIC16F84A, 35 adet tek kelimelik komuttan oluşan sade bir komut setine sahiptir. Bu komutların çoğu tek çevrimde (4 saat döngüsü) yürütülürken, dallanma komutları iki çevrimde tamamlanır. Komut seti, aritmetik ve mantıksal işlemler, veri aktarımı, bit manipülasyonu ve program akış kontrolü gibi temel işlemleri destekler. 20 MHz kristal osilatör kullanıldığında, her komut çevrimi 200 nanosaniyede tamamlanır, bu da gerçek zamanlı uygulamalarda hızlı tepki süreleri sağlar.
Programlama ve Geliştirme Araçları
PIC16F84A, genellikle assembly dili veya yüksek seviyeli diller (C gibi) kullanılarak programlanır. Microchip’in MPLAB X IDE platformu, program geliştirme, derleme ve hata ayıklama için kapsamlı bir ortam sunar. Assembly dilinde yazılan programlar, MPASM derleyicisi tarafından hex dosyalarına dönüştürülür ve bu dosyalar bir programlayıcı (örneğin, PICKIT4) aracılığıyla mikrodenetleyiciye yüklenir. C dili için CCS C veya XC8 gibi derleyiciler kullanılabilir, bu da daha karmaşık projelerde kod yazımını kolaylaştırır.
Kesme (Interrupt) Yapısı
PIC16F84A, dört farklı kesme kaynağına sahiptir: Timer0 taşması, PORTB değişim kesmesi, EEPROM yazma tamamlanması ve harici kesme (RB0/INT). Kesmeler, sistemin hızlı bir şekilde olaylara tepki vermesini sağlar ve özellikle zaman-kritik uygulamalarda önemlidir. Örneğin, bir sensörden gelen ani bir sinyal, PORTB değişim kesmesiyle algılanabilir ve buna uygun bir işlem tetiklenebilir.
Osilatör Seçenekleri
Mikrodenetleyici, farklı osilatör türlerini destekler: kristal osilatör, RC osilatör ve harici saat sinyali. Kristal osilatör, yüksek doğruluk gerektiren uygulamalarda tercih edilirken, RC osilatör düşük maliyetli projeler için uygundur. Osilatör frekansı, mikrodenetleyicinin işlem hızını doğrudan etkiler ve 100 kHz ile 20 MHz arasında değişebilir.
Uygulama Alanları
PIC16F84A, çok yönlü yapısı sayesinde geniş bir uygulama yelpazesine sahiptir. Endüstriyel otomasyon sistemlerinden ev elektroniğine, hobi projelerinden eğitim amaçlı devrelere kadar birçok alanda kullanılmaktadır. Düşük güç tüketimi, özellikle batarya ile çalışan cihazlarda avantaj sağlar. Örneğin, bir sıcaklık sensörü ile entegre edilerek çevre koşullarını izleyen bir sistem veya bir motor kontrol devresi tasarlanabilir.
Endüstriyel Uygulamalar
Endüstriyel alanda, PIC16F84A sensör tabanlı kontrol sistemlerinde, veri toplama cihazlarında ve otomasyon panellerinde kullanılır. Kompakt yapısı ve düşük maliyeti, seri üretimde tercih edilmesini sağlar. Ayrıca, EEPROM belleği sayesinde kalibrasyon verileri veya cihaz ayarları gibi kalıcı bilgiler saklanabilir.
Eğitim ve Hobi Projeleri
PIC16F84A, sade komut seti ve kolay programlanabilirliği nedeniyle eğitim amaçlı projelerde sıkça tercih edilir. Öğrenciler, bu mikrodenetleyiciyi kullanarak temel elektronik devreler, LED kontrol sistemleri veya basit robotik uygulamalar geliştirebilir. Hobi projelerinde ise uzaktan kumandalı cihazlar, ev otomasyon sistemleri ve dijital saatler gibi uygulamalar yaygındır.
Avantajlar ve Sınırlamalar
PIC16F84A, düşük güç tüketimi, flash bellek teknolojisi ve esnek I/O portları gibi avantajlarıyla öne çıkar. Ayrıca, Microchip’in geniş destek araçları ve dokümantasyonu, geliştirme sürecini kolaylaştırır. Ancak, sınırlı bellek kapasitesi ve yalnızca 8 bitlik veri işleme yeteneği, daha karmaşık uygulamalarda yetersiz kalabilir. Bu tür durumlarda, PIC18 veya PIC32 gibi daha gelişmiş mikrodenetleyiciler tercih edilebilir.