Elektronik / Elektronik Kaynakları/

MikroC Dersleri 2

Sponsorlu Bağlantılar

Merhaba elektronik Severler…

1. dersimizi siz değerli katılımcılarla geçen hafta işledik. Mademki ders edasıyla ders işliyoruz hoca bir önceki dersten bahsetmeden geçmez.Peki ne gördük geçen hafta ? Arkadaşlar bir önceki dersimizde C dilini kullanmanın kolaylıklarından pratikliğinden bahis ettik mikroC derleyicisinde Proje dosyası oluşturmayı öğrendik kısa bir programla örnke proje dosyasını gerçekleştirdik.

Bugün dersimiz kısaca Proteusun İSİS simulatörü ve C dilinde bize gerek olan Veri Değişkenleri , İşleçler (operatörler) konularını işleyip Program kontrol deyimlerine giriş yapacağız.

2.1 Proteus ISIS eki

Bu konu başlığında programlarımızın çalışıp çalışmadığını gözleyebilmek için yeterli düzeyde İSİS öğreneceğiz.

proteus-isis

Programlar altından kurulumunu yapmış olduğunuz Proteus İSİS çalıştırılır ve karşınıza boş çalışma sayfası çıkar. Şimdi adımları takip edelim.

NOT: Proteus programını edinmek için BURAYA tıklayınız.

proteus-isis-2

Resimdeki pencereden malzemelerimiz çizim sayfasına alınır .

proteus-isis-3

Şimdi sıra çizdiğimiz devrede PIC içine yazdığımız programdan oluşan HEX kodunu yüklemek.
PIC Sembolü çift tıklanır ve resimde görülen adımlar gerçekleştirilir.

proteus-isis-4

Evet var mı anlamayan içinizde ???

2.2 Veri Değişkenleri

Programlamada bir sayı bir bilgi direk olarak kullanılamazlar ve işlemler veri değişkenleri ile yapılır.

MikroC nin desteklenen veri çeşitleri;

Bit 0-1
Sbit 0-1
Unsigned char 0-255 arası sayılar(işaretsiz)
Signed char -128 – 127
Unsigned short int 0 – 255
Signed short int -128 – 127 (PİC hafızasında char tipi ile aynı yeri kaplar)
Signed int -32768 .. 32767 sayıları arası
Unsigned int 0 – 65535
Signed long -2147483648 – 2147483647
Unsigned long 0 .. 4294967295 arası

Kullanılacak değişken tiplerimiz bu kadar. Eğer programımızda kullanacağımız sayaçlar işlem sonuçları olacaksa değişkenlerimizi bu aralıklara uygun tanımlamamız gerekir.

2.3 Program Kontrol Deyimleri

Programlar kontrol altında tutulması istenen işlemlerdir. Fakat bu kontrol gelişi güzel yapılmaz. Bunun için kontrol deyimlerini iyi bilmek gerekir.

1-if    2-Else if   3-Else   4-For  5-While    6-Do   7-goto  8- break   9 – Switch Case

Bu komutlar sayesinde döngü yapabilir, butonla kontrol sağlanabilir veya bir değişkene bağlı değişik işlemler yapılabilir.

Şimdi burada verilen komutların kullanımını derslere yayıp ayrıntılı işleyeceğiz.
İlk olarak İf nedir nasıl kullanılır ona değinelim.

İf  (eğer) şartı.
İf(şart); ya da şartlar şeklinde kullanılır.

Şimdi unsigned char veri tipinde sifre değiskenimiz olsun ve sifre verisinin Örneğin 243 olduğunda işlem yapan bir program parçası yazalım. Öncelikler program başlangıcında

Unsigned char sifre;

Tanımlamasını yapalım. Bu pıc ram hafıza alanından bir kutu kiraladık ve içine şifre değerini saklayacağız.

Ve programın şartı oluşturalım

İf(sifre==243) lambayı yak;   eğer şarta bağlı tek işlem varsa {} gerek yoktur.
İf(sifre==243) {
Lambayı yak;
Fan çalıştır;} 

şeklinde alt alta sıralanabilir.

Evet değerli öğrencilerim Şimdi İf deyimini bir kenara bırakalım da veri değişkenlerini kullanacağımız bir program yazalım. İf deyiminide kullanabilirmiyiz bir bakalım. Şimdi bir sayac değişkeni tanımlayalım ve bu sayacı 10a kadar saydırıp PORTB de gösterelim. :D

Ha bu arada ben bu tür uygulamalarda 16F628A kullanmayı tercih ediyorum sebebine gelince bikere 16F84A dan daha ucuz ikincisi 2Kword program belleği var ve gerektiğinde dahili osilatörünü kullanabiliyoruz ve toplamda 15pin çıkış veya 16 pin giriş olabiliyor.olarak kullanılabiliyor. 16F84A da ise dahili osilatör ve reset olmadığı için 13 çıkış kullanılıyor ve 1Kword program hafızası var.Neyse ya gevezeliğim tuttu yine bir sürü şey araya girdi.

Gelelim Programımıza

unsigned char sayac=0; /*değişkenlerin ilk değeri burada verilebilir*/

void main() {

/*PORT AYARLAMALARI YAPILACAK GİRİŞ ÇIKIŞ AYARLARI Ve varsa Analog ve Karşılaştırıcı MOdüller Ayarlanır*/

TRISB=0x00;

PORTB=0;

TRISA=0;

PORTA=0;

CMCON =0x07;  /*Comparator(karşılaştırıcı) kapatıldı Pinler dijitale ayarlandı*/

for(;;){ /*Program sonsuz döngü içinde çalışacak for(;;) sonsuz döngü */

PORTB=sayac;

delay_ms(1000); /*sayma işlemi 1saniye ara ile yapılıyor*/

sayac=sayac+1; /*sayac değişkeni bir artırılıp tekrar sayac değişkenine yazılır.*/

if(sayac==11)sayac=0; /*sayac değeri kontrol ediliyor ve 10a kadar saymasını istediğimiz için sayac11 olur olmaz sıfırlıyoruz*/

}

}

Bu programda değişken kullanımını ve if deyimini kullanmayı örnekledik. Devreyi kurup çalıştırması artıksiz çalışkan öğrencilere kalıyor.

Not: Devre 0 dan 10a kadar Binary olarak sayacaktır 10dan sonra 0dan tekrar başlayacaktır.

Bu haftalıkta dersimiz bukadar Haftaya ödevlerinizi yapmış olarak görüşmek üzere..Kolay gelsin İyi çalışmlar.

Devrenin uygulamasının Proteus görüntüsü Resimdeki gibidir.

proteus-isis-devre-4

Ben devrelerde gözlemlerimi renklere göre yapmayı daha kolay buluyorum. Ama yeni öğrenenler devreyi led bağlantıları dahil kurmalı diye düşünüyorum.

  • Murat

    Ellerinize sağlık emeği geçenlerden ALLAH razı olsun.

  • aytac dürgen

    Birilerinin bir şey öğrenmesine vesile olabiliyorsak ne mutlu bizlere

  • kubilay

    hocam ben bu isis devresini yaptım ama hata veriyor hata yıda anlayamadım yardımcı olursanız sevinirim

  • nasıl bir hata veriyor isis ? ekranda bir şeyler yazıyordur yazılmayacak kadar uzunsa kılavyede “print screen” tuşuna basın pait programını açıp yukarıdaki menüden yapıştır yayın resimi jpg olarak akydedip her hangi bir resim upload sitesine yükleyip link verin

  • abdullah

    hocam kolay gelsin ben yeni başlamak istiyorum kendim elektrik sektöründe çalışıyorum ama bu aralar hobi olarak devre kurmak istiyorum ama hiç programlama bilgim yok sizce neler yapmalıyım ilk aşamada ve hangi programı kullanmalıyım yapmak istediğim devre ise usb den 4 veya 5 adet röle yi kontrol edip bu röleleri akvaryumda ışıklandırma yapmak istiyorum sizce ne yapmalıyım teşekkürler.

  • kubilay

    hocam resim budur buyrun bakabilirsiniz

    proteus-isis-error-real-time-simulation-failed-to-start

  • ismail.cal

    hocam micro c de derledikten sonra isiste hex gösterdim ama led filan bir şey yanmadı. kendi yazdığım programda hata vardır belki sizin yayınladığınız kopyala yapıştır yapıp derledim yine hiç bir şey olmadı isiste

  • snsuzluk

    hocam prg microcde yazdıktan sonra derleyip isiste hex gösterdim. similasyon için playe basıyorum led yanmıyor.yazdığım programda hata vardır die sisizin yayınladığınız prg derleyip denedim yine hiçbirşey olmadı

  • aytac dürgen

    MikroCde proje dosyanızı açın project sekmesinden project edit menüsünü tıklayın ve gelen ekrandan bir kaç ayar yapmanız gerekir. Brown Out dedect off olmalı eğer 628a nın kendi osilatörünü kullanacaksanız oscillatör sekmesinden internal rc no clock seçip yeniden derleyin olacaktır.

  • aytac dürgen

    @abdullah. Yazıyı baştan sona takip ederseniz istediğiniz özellikte projeyi yapacak ilhamı ve bilgiyi sayğlayacağınızı düşünüyorum. Ama acele etmeden adım adım ilerlemek gerekir. Gelecek yazıları takip edin. kolay gelsin iyi çalışmalar

  • kubilay

    YAŞASINNNN çalıştı en sonunda oldu isis de çalıştı teşekkürler

  • snsuzluk

    teşekür ederim hocam bir sonraki dersinizi bekliyorum.

  • Hakan

    hocam comparotor registerini açıklayabilirmisiniz?

  • iso gul

    aslında ben bu programı öğrendim ve çok memnunum ancak bazı arkadaşlar acaba alıştıkları için mi bilmiyorum hi-tech C daha iyi daha az bellek harcıyor ve daha hızlı diyorlar. Bilmiyorum belki haklılık payları olabilir çünkü hi-tech C daha ilkel ve birçok şey kullanıcı tarafından yapılıyor ama aradaki fark, hi-tech de kasmaya değecek düzeyde mi bilmiyorum.
    Bu konuda yorumlarınızı bekliyorum.

    Paylaşım için teşekkür ediyorum.

  • Aytaç Dürgen

    Şimdi Denilenler doğrudur.daha az yer kaplar daha hızlı çalışır katılıyorum ama iyi programcının yazdığı kod nerede yazılırsa yazılsın mantığı daha güçlü olduğu için yeni başlayan programcıların programlarına göre daha hızlı ve az yer kaplar bu kesin.

    Ben aynı programı iki derleyicidede yazdım mikroC 4 5 word daha fazla yer kaplıyor ama hıtech C de program yazmak epey zaman alıyor ve zor.

    bundan 4 5 yıl önce hafıza problemi yüzünden hıtech c tercih edilebilirdi fakat şugün pıc fıyatları çok düştü 84A yerine 628A 877 yerine 18f452 vs kullanarak hafıza sorunu çok rahat giderilebilir

  • Ferdi Gürtekin

    iyi günler hocam micro c de string tanımlaması nasıl oluyor?

  • ibora

    Hocam emeklerinize sağlık. Herşeyi anlattığınız şekliyle çalıştırdım. Pic’e yeni başlayan biri olarak kaç gündür neresinden tutacağımı bilemiyordum. Sayenizde dişe dokunur bir başarı elde ettim bugün.

  • aytaç dürgen

    Eğer bilgi paylaşımımdan faydalanabildiyseniz ne mutlu bize.
    Kolay gelsin iyi çalışmalar

  • Müslim Duman

    Selamün aleyküm Hocam Kolay Gelsin iyi çalışmalar ilk devremi kurdum ve çalıştım.Çok Hoşuma Gitti Birde Hi-tech C ve CCS-C Derken, MikroC ile tanıştım ve Bana göre gayet iyi, derslerinizi takip ediyorum çok teşekkürler Başarılarınızın devamını dilerim…

  • BARIŞ ATALAR

    merhaba aytaç hocam micro c notlarınız takip ediyorum sürekli yani keşfettiğimden beri çok iyi olmasada iyi sayılacak bi bilgim var size çok teşekkür ederm hocam ben bi proje yapmak istiyorum pic ile ama biraz bilgi eksikliğim var bana mail adresinden yada baska bi şekilde ulasırsanız çok sevinrim siteyi aradım ama mail adresinizi bulamadım kusura bakmayın şimdiden teşekkür ederim