Mikroişlemciler
Bilgisayar programlarının yapmak istediği tüm işlemleri yerine getirir. Başka bir ifadeyle CPU (Central Processing Unit-Merkezi İşlem Birimi) olarak adlandırılır.
Bir mikroişlemci işlevlerini yerine getirebilmek için yardımcı elemanlara ihtiyaç duyar. Bunlar:
1. Input (Giriş) Ünitesi
2. Output (Çıkış) Ünitesi
3. Memory (Bellek) Ünitesi
Bu üniteler CPU çipinin dışında, sistemin farklı yerlerindedir. Aralarındaki iletişim için veri yolu ve adres yolları denilen iletim hatları kullanılır.
Mikrodenetleyici
Mikroişlemcilerden farklı olarak, giriş-çıkış-bellek ünitelerini tek bir çipte barındıran yapıya mikrodenetleyici (Microcontroller) denir. Mikrodenetleyici ler mikroişlemcilere göre daha basit ve ucuzdur. Mikrodenetleyici kullanarak oluşturacağınız bir sistemde giriş-çıkış-bellek ünitelerine ve bu üniteler arasındaki iletişim için veri yollarına ihtiyaç duyulmayacağından daha basit ve daha ucuz bir yapı oluşturmak mümkündür.
Programlama İçin Gereken İhtiyaçlar
Bir mikrodenetleyiciyi programlamak için olması gerekenler:
1. Kişisel bir bilgisayar
2. Seçilen mikrodenetleyiciye uygun programlama kartı
3. Komut satırlarının yazılacağı editör
4. Mikrodenetleyici programlama yazılımı
5. Yazılan programın makine diline çeviren derleyici
6. Simülasyon yazılımı
Mikrodenetleyici Çeşitleri
Temelde mikroişlemci mimarisi iki çeşittir. Bunlar RISC (ReducedInstruction Set Computer: Azaltılmış komut seti) tabanlı işlemciler ve CISC (ComplexInstruction Set Computer: Karmaşık komut seti) tabanlı işlemcilerdir. Mikrodenetleyicilerde aynı şekilde RISC ve CISC mimarisine göre türleri vardır. Yaygın olarak kullanılan mikrodenetleyiciler mimari açıdan bu iki işlemci sınıfından birine aittir.
Üretici firma bakımından ise bilinen çok sayıda mikrodenetleyiciler vardır. Bunlar:
1. Microchip firmasının PIC mikrodenetleyicileri (RISC),
2. Intel firmasının MCS51 (8051) mikrodenetleyicileri (CISC),
3. Atmel firmasını AVR mikrodenetleyicileri (RISC),
4. Motorola FreeScale mikrodenetleyicileri
ve daha birçok firmanın burada sayamayacağımız kadar çok çeşitleri olan denetleyicileridir.
Mikrodenetleyici Bellek Çeşitleri
Mikrodenetleyicilerin farklı özellikte program bellekleri bulunur. Bunlar:
1. EPROM (ErasablePROgrammable Memory – Silinebilir ve programlanabilir bellek)
2. EEPROM (ElectricallyErasablePROgrammable Memory – Elektriksel olarak silinebilir ve programlanabilir bellek)
3. ROM (Read Only Memory – Sadece okunabilir bellek)
Her bellek tipinin; hız, fiyat, defalarca kullanmaya yatkınlık gibi faktörler açısından kullanılacağı uygulamaya yönelik avantajları ve dezavantajları vardır.
EPROM
EPROM bellek hücrelerine mikrodenetleyici programlayıcı vasıtasıyla elektriksel sinyal uygulayarak kayıt yapılır ve üzerindeki enerji kesilse bile bellek içindeki veri kalıcıdır.
EPROM belleği, üzerindeki program silinip başka bir program yazılacağı zaman EPROM silici denilen özel aygıtlar vasıtasıyla ultraviyole ışını altında bir süre tutmak gerekir.
EEPROM
EEPROM bellek hücrelerine mikrodenetleyici programlayıcı vasıtasıyla elektriksel sinyal uygulayarak kayıt yapılır ve üzerindeki enerji kesilse bile bellek içindeki veri kalıcıdır.
EEPROM belleğe, üzerindeki program silinip başka bir program yazılacağı zaman mikrodenetleyici programlayıcısı tarafından elektriksel sinyal gönderilerek silme veya programlama işlemi gerçekleştirilir.
Bu tip belleğe sahip mikrodenetleyiciler EPROM belleğe sahip olanlara göre daha pahalıdır.
ROM
ROM belleğe sahip mikrodenetleyicilerin programları üretildikleri fabrikada bir defaya mahsus olarak yazılır. Bu yüzden program geliştirmeye uygun bellek tipi değildir.
Fiyatları diğer bellek tiplerine göre çok düşüktür.
Komutların Yazılış Biçimi
Her mikrodenetleyici için kendine has derleyiciler bulunmaktadır. Derleyicilerin de kendine has özellik ve yazım kuralları vardır.
PIC mikro denetleyici için en yaygın derleyici olan MPASM derleyicisi aşağıdaki yazım kurallarını getirmiştir:
1. Satır başına ; (noktalı virgül) konulduğunda o satır yorum satırı olarak değerlendirilir ve programa herhangi bir etkisi yoktur.
2. Genellikle derleyiciler program komutlarının belli bir düzen içerisinde TAB denilen sütunlar hâlinde yazılım koşulunu getirse de MPASM derleyicisi bu şartı aramamaktadır.
3. MPASM derleyicisi için sabit verilerin atandığı bazı sembolik isimlere etiket denir. Etiketlerde şu kurallara uyulmalıdır:
- Etiketler 1. kolondan itibaren yazılır.
- Etiketler bir harf ya da _ (altçizgi) ile başlamalıdır.
- Etiketlerde Türkçe karakter kullanılamaz
- Bir komut ismi olmamalıdır
- En fazla 31 karakter uzunluğunda olabilir
- Büyük/küçük harf duyarlılığı vardır
- LP LowPowerCrystal (Düşük Güçlü Kristal Osilatör)
- XT Crystal/Resonator (Kristal, Seramik Rezonatör)
- HS High SpeedCrystal/Resonator (Yüksek Hızlı Kristal, Rezonatör)
- RC Resistor/Capacitor (Direnç, Kondansatör)
- bit 0 – C (CarryFlag): Toplama çıkarma ve kaydırma işlemleri esnasında bir taşma meydana gelirse bu bit etkilenir. Taşma gerçekleştiği durumda Lojik 1 olur. Taşma yoksa Lojik 0 olur.
- bit 1 – DC (DigitCarryFlag):Toplama çıkarma ve kaydırma işlemleri esnasında üçüncü bitten dördüncü bite bir taşma meydana gelirse bu bit etkilenir. Taşma gerçekleştiği durumda Lojik 1 olur. Taşma yoksa Lojik 0 olur.
- bit 2 – Z (Zero Flag):Aritmetik veya lojik bir operasyonun sonucu 0 oluyorsa bu bit etkilenir ve Lojik 1 olur.
- bit 3 – PD (PowerDownFlag): Enerji kesinti bitidir. Bu bit mikrodenetleyici ilk çalıştığında ve CLRWDT komutu il Lojik 1 olur. Sleep komutu çalışınca Lojik 0 olur.
- bit 4 – TO (Time OutFlag): Watchdog taşma bitidir. PIC’e enerji verilince ve CLRWDT, SLEEP komutları ile Lojik 1 olur. WatchdogTimer saymayı tamamlayınca Lojik 0 olur.
- bit 6:5 – RP1:RP0 (Register Bank Select Bits):Yazmaç Bank Seçim Biti: Bu bitler değiştirilerek hafıza alanındaki banklara erişim mümkün olmaktadır. RP1 PIC 16F84’te kullanılmamaktadır. Daha yüksek hafızaya sahip üst modellerde kullanılabilmektedir. Bank seçim için aşağıdaki gibi ayarlanır.
0:1 Bank 1 ( 80H – FFH )
- bit 7 – IRP (Register Bank Select Bits):Dahili hafızada dolaylı adresleme için kullanılmaktadır. Lojik 0 olursa bank 0 ve 1 kullanılır. Lojik 1 olursa bank 2 ve 3 kullanılır. PIC16F84 denetleyicisinde 0 olmalıdır.
- bit 2:0 – PS2,PS1,PS0 (Prescalar Rate Select Bit):Zamanlayıcı için kullanılan sinyal kaynağının frekansını bölmek içindir. Frekansın kaça bölüneceği bu bitler ile ayarlanır.
- bit 3 – PSA (PrescalarAssignment Bit):Frekans bölücü ayırma bitidir. Bu bit Lojik 0 ise frekans bölme işlemi TMR0 için geçerlidir Lojik 1 ise WDT için geçerlidir.
- bit 4 – TOSE (TMR0 Source Edge Select Bit):TMR0 için sinyal kaynağı kenar seçme bitidir. Eğer Lojik 0 yapılırsa RA4/TOCKI ucundan düşen kenar tetiklemeli olur. Lojik 1 ise yükselen kenar tetiklemeli olur.
- 16
- bit 5 – TOCS (TMR0 Clock Source Select Bit):TMR0 için sinyal kaynağı seçme bitidir. Lojik 0 ise ¼ osilatör frekansı seçilir. Lojik 1 ise harici dijital sinyal (RA4/TOCKI) seçilir.
- bit 6 – INTEDG (InterruptEdge Select Bit):Harici kesme aktif ise (RB0/INT) sinyalin hangi kenarında tetikleneceği belirlenir. Lojik 0 düşen kenarda Lojik 1 yükselen kenarda tetiklemek içindir.
- bit 7 – RBPU (PORTB Pull-UpEnable Bit):PORTB dahili Pull-Up dirençlerini kontrol eder. Lojik 0 ise devre dışıdır. Lojik 1 ise devrededir.
- PORTA ve TRISA: PORTA 5 bit uzunluğundadır. TRISA yazmacının herhangi bir biti 1 yapılırsa PORTA’nın aynı değerli ucu giriş ucu olarak kullanılır. Aynı şekilde TRISA yazmacının herhangi biti 0 yapılırsa bu sefer PORTA’nın aynı değerli ucu çıkış olacaktır. RA4 portu aynı zamanda TIMER(Zamanlayıcı) için kullanılmaktadır.
- PORTB ve TRISB: PORTB 8 bit uzunluğunda bir porttur. Giriş ya da çıkış olarak ayarlanması TRISB ile yapılmaktadır. PORTB’nin 4 hattında (RB4:RB7 arası) değişim olduğunda interrupt oluşturma yeteneği vardır. Aynı zamanda RB0/INT ucu external interrupt için kullanılabilmektedir.