Elektronik / Elektronik Kaynakları/

Hi-Tech PICC Program Yazma Kılavuzu

Sponsorlu Bağlantılar

Hazırlayan: Hasan ARSLAN – Emeği geçen Kişilere Teşekkürler

Hi-Tech Picc Microchip firmasının üretiği PIC serisi uC için Ansi-C standartlarına uygun bir C derleyicisidir.

Hi-Tech değişik PIC serileri için değişik C derleyicinse sahip. PIC10, PIC12 ve PIC16 serisi için PICC derleyicisini var. PIC18 serisi için PICC-18 derleyicisi var. Ayrıca 16 bit ve 32 PIC ler için birer derleyiciye sahiptir. Hi-Tech sadece Microchip firmasının uC leri için C derleyisine sahip değil aynı zaman da diğer uC üreticisin üretiği chiper içinde C derleyicisine sahip. Windows, Mac ve Linux sürümleri için derleyicileri mevcut.

Hi-Tech Profesyonel bir derleyici olduğu için fiyatı pahalıdır. Ancak bedava olan kısıtlı PICC-lite sürümü de mevcut. Bazı mikroişlemcilere 2k ROM ve 2 Bank kullanma imkanı veriyor. Bu da bir çok proje için yeterlidir.

Ben size Hi-Tech 8.35PL2 sürümümü kurulumunu ve Mplab’a nasıl entegre edileceğini anlatacağım.

Öncelikle Microchip sitesinten Mplab programını indirin ve kurun. Daha sonra picc-setup v8.05PL2.exe programını çalıştırın. Kurulum bittikten sonra C:\HT-PIC dizinin içine kurmuluyor. Bu klasör altında picc_mplab6_setup.exe dosyasını çalıştırdığınızda Kendisini Hi-Tech derleyicisini otomatik Mplab’a entegre ediyor. activate.exe ise programı lisanlamak için kullanılıyor.

Bu işlemler bittikten sonra Mplab altında basit bir proje yapmaya gecelim.

Mplab Altına proje oluşturalım. Project -> Project Wizard secelim.
mplab Project Wizard

İleri ye basın..
project-wizard

Kulanacağınız işlemciyi seçin. Biz şimdi PIC16F628A sectik. İleri basın
işlemci PIC16F628A

Şimdi kullanacağımız dereliciyi seçelim. Biz Hi-Tech PICC de yazacağımız için aşağıdaki seceneği seceğiz
embedded systems c compilers

Bu işlemden sonra projeyi hangi klasöre oluşturacağımız soracaktır Browse ile belli bir klasörüe seçebiliriz yada kendimiz yeni bir klasör oluşturabiliriz. Biz şimdi yeni bir klasör oluşturalım.

mplab new project wizard

Bu oluşturduğumuz klasörün içine projemize bir isim verip ‘kaydet’ tuşuna basalım.
picc proje kayıt

Karşımıza çıkan pencereye ileri diyelim.
hi-tech picc c next

Bu pencere projenize hazır başka kütüphaneleri eklemek için dir.
proje kutuphane picc

Biz boş bir proje oluşturacağızmız için. İleri diyelim. Karşımız en son proje ile ilgili bilgi sayfası gelecek. Son tuşuna bastık tan sonra yeni bir proje yapmış oluruz.

mplab proje son

Mplab artık bu şekilde gözükecektir.

microchip mplab yeni proje hazır

Burada hiçbir kod ve header dosyası olmadığı için Source files ve Header Files içleri boş tur.

Hi-Tech Kod dosyası olurturmak

Basit olması sebebiyle HT-PIC klasörün altındaki Samples`lerden örnek vereceğim. Basit bir Led flasör devresi yapalım.

Bunu için Zaman döngü kodlarına gerek ihtiyac var.  Samples klasöründeki döngü kodunu Kendi proje klasörümüzün altına kopyalıyoruz.

C:\HT-PIC\samples\delay\

içinde ki delay.c ve delay.h doyalarını aşağıdaki projemizin bulunduğu klasöre kopyalalım.

C:\Hi-Tech_Egitim\Proje1\

hi-tech egitim proje1

Sonra bu dosyaları projemize dahil edelim . Source file in üzerine gelip farenin sağ tuşuna basalım. Çıkan menuden Add Files… secelim.

proje1-mcw

iki dosyayıda secip ac dediğimizde artık bu dosyalarda kendi projemize dahil olmuştur.

proje1 mcw open picc

Şimdi bize bir de main programın olduğu dosya lazım o dosya olmadığı için onu yeni oluşturacağız. Sol üst köşedeki New files butonun bastığımızda Yeni bir dosya oluşturacaktır.

mplab new files

Bu yeni dosyayı bir isim verip kayıt edelim ve projemize dahil edelim. Ama önce içine bir şey yazmak gerek boş dosyayı kayıt etmiyor.

microchip proje kayit save

Save file diyoruz. Yeni dosyamızın proje ile aynı klasöre kayıt edin.

hitech picc save file dosya kayit

Soure files den Add Files den bu dosayı proje dahil edelim.

hitech picc kaynak dosya ekleme

Şimdi projemize bu dosyayıda eklemiş oluyoruruz.

main program dosyasi

Artık projemiz kod yazacak hale gelmiştir.

Hi-Tech de Kod yazmak

Şimdi ana_program.c dosyasının içinde kod yazmaya başlıyoruz. Önce bazı başlık dosyalarını eklememiz gerek. Sigorta ayarlarını kodun içinde yapıyoruz. Sonra ana programı yazmaya başlıyoruz.

Örnek1: Birinci program çalışma mantığı. Bir tane giriş, bir tanede çıkış bacağı olacak giriş bağcına göre çıkış bacağı aynı şeklide değişecek. Giriş bacağı olarak Portb0 ,cıkış bacağı olarakta Porta0 yapıyoruz.

// ana_program.c

// Main progam dosyası


#include 
#include "delay.h"



//__IDLOC(0123);

// Sigorta ayarlarının yapıldığı yer
__CONFIG(PROTECT & CPD & INTIO & MCLRDIS & WDTDIS & LVPDIS & PWRTEN & BOREN );



void main(void) // Ana program

{
	
	TRISA = 0b00000000;
	TRISB = 0b00000001;

	PORTA = 0b00000000;
	PORTB = 0b00000001;

	OPTION = 0b00000000; // PullUp dirençleri devreye sokar.

	CMCON = 0x07;	 // PORTA analog pinlerini kapatır. PortA Dijitale dönüştür.


	while (1) {		// Sonsuz döngü programı bunun içine yazacağız.
		
		if ( RB0 )	  //RB0 bacağı sıfır değil ise. 
			RA0 = 1;
		else
			RA0 = 0; //RB0 bacağı sıfır ise.
	}

}


// ana_program sonu

Aşağıdaki resim programın Mplab altına görünümü

ana program microchip mplab

Fare gösterildiği yerde Build All direkt CRTL+ F10 ile programı derleyebilirsiniz.

Derledikten sonra ekrana derleme bilgileri cıkacaktır. Eğer BUILD SUCCEEDED yaziyorsa derleme işlemi düzgün yapılmıştır demektir. Bu durumda hiçbir hata mesajı gözükmüyor.

microchip hata yok derleme tamam

Bu işlemin sonunda derleyici bazı yeni dosyalar oluşturur.

derleyici yeni dosyalar

Proje_1.hex : Makine kodu, pic yüklenecek kod

Uzantısı *.cce dosyaları ilgili kod dosyalara ait uyarı (warning) ve hata (error) mesajlarını verir.

Dosyaların için içi boş olduğuna göre hiçbir hata veya uyarı mesajı yok demektir. Şimdi bunu test etmek için ISIS de simülasyonunu yapalım.

Aşağıdaki gibi örnek çizim yaptım.

proteus örnek proje

Şimdi bu aynı proje klasörümüze kayıt edelim ve Simülasyonun içinde kendi yazdığımız kodu ekleyelim. PIC üzerine gelip fare ile 2 kere tıklarsanız PIC ait bir pencere ortaya çıkar.

proje simulasyon kayit save

Biz PIC16F628 iç kristalini seçtiğimiz için kristal frekansı 4MHz olacak. Program File: içine kodumuzu ekliyoruz.

proje 16f628 4mhz

simülasyon için iki tane farklı dosya seçeneğimiz var. Proje_1.hex seçersek programı çalıştırabiliriz. Ama kodlarımızı adım adım çalıştıramayız. Kodları tek tek çalıştırmak için Proje_1.cof uzantılı dosyayı çalıştırmalıyız.

proje cof dosyasi

Bu işlemden ok ile onaylıyoruz. Simülasyonu başlatmak için Sol alt köşedeki Play tuşuna basıyoruz. Simülasyon başlamış olur. Ekrana söyle bir görüntü cıkar.

isis proje run

Görüldüğü gibi RB0 bacağı Lojik 1 olduğu için RA0 bacağı da Lojik 1 konumdadır. Butona bastığımızda ise RB0 bacağı lojik 0 çekileceği için RA0 bacağıda lojik 0 olacak.

pic16f628 pause buton

Pause tuşuna basarsak Programın kaldığı yeride durdurmuş oluruz.

program adim adim isis

Örnek 2: Şimdi bir başka örnek kod yazalım bu sefer sadece led flash yaptın.

// ana_program.c

// Main progam dosyası


#include 
#include "delay.h"



//__IDLOC(0123);

// Sigorta ayarlarının yapıldığı yer
__CONFIG(PROTECT & CPD & INTIO & MCLRDIS & WDTDIS & LVPDIS & PWRTEN & BOREN );



void main(void) // Ana program

{
	
	TRISA = 0b00000000;
	TRISB = 0b00000001;

	PORTA = 0b00000000;
	PORTB = 0b00000001;

	OPTION = 0b00000000; // PullUp dirençleri devreye sokar.

	CMCON = 0x07;	 // PORTA analog pinlerini kapatır. PortA Dijitale dönüştür.


	while (1) {		// Sonsuz döngü programı bunun içine yazacağız.
  
  RA0 ^= 1; // RA0’i 1 ile Xorla. Bu işlem RA0 bacağının cıkışını tersler.
	  DelayMs(250); // 250 ms bekler. 1 bytelik değer gecebildiğimiz için 255 
	  DelayMs(250); // büyük sayı veremiyoruz. O yüzden 3 defa aynı fonksiyonu
	  DelayMs(250); // çağırdım. Toplam ortalama 750ms gecikme olur.

	}

}


// ana_program sonu

Böyle program yazmanın ilk adımlarını atmış oluruz. Bundan Örnek C kodlarını daha ayrıntılı anlatmaya çalışacağım. Çalışmalarınızda Başarılar,

Hasan ARSLAN

Hi-Tech PICC eğitimi Ders 2

Kod yazmaya devam edeceğiz.

Örnek 3: Bu sefer tuşa her bastığımızda Led in durumunu değiştirsin. Şimdi sadece ana program döngüsü içindeki kodları yazıyorum diğer kodları boş yere tekrar etmemek için. Yazmayacağım

	while (1) {		// Sonsuz döngü programı bunun içine yazacağız.
		
		if ( RB0 ){	  // RB0 bacağı sıfır değil ise. 
			
			RA0 ^= 1; // Cıkışı tersle.
			
			DelayMs(50); // parazitleri görmemek için bekleme süre.
			
			while (RB0); // Tuştan elini cekene kadar bekle
		}
 	}

Bu işlem tuşa basıb cektikten sonra cıkışı tersler eğer cıkışı basmada terslemke istiyorsak o zaman koda ufak bir değişiklik yapmamız gerekiyor.

while (1) {		// Sonsuz döngü programı bunun içine yazacağız.
		
		if ( !RB0 ){	  // RB0 bacağı sıfır ise. 
			
			RA0 ^= 1; // Cıkışı tersle.
			
			DelayMs(50); // parazitleri görmemek için bekleme süre.
			
			while ( !RB0 ); // Tuştan elini çekene kadar bekle.
		}
 	}

Bu durumda tuşa her bastığımızda çıkışı tersler. Ünlem ! işaretinin anlamı lojik değildir. Dolaysıyla bir şeyin lojik tersini almak içinde kullanılabilir. O zaman cıkışın değilini almak için şöyle bir kodda yazabiliriz.

while (1) {		// Sonsuz döngü programı bunun içine yazacağız.
		
		if ( !RB0 ){	  // RB0 bacağı sıfır ise. 
			
			RA0 = !RA0; // Cıkışı tersle.
		DelayMs(50); // parazitleri görmemek için bekleme süre.
			
			while ( !RB0 ); // Tuştan elini çekene kadar bekle.
		}
 	}

Kod farklı göründe aynı işlevi görecektir.

Örnek 4: Simdi Ledlerle basit bir kara şimşek yapalım. Onun için led sayısını artırmamız gerek. Botunu iptal edip Portb nin bütün bacaklarına LED bağlıyorum.

portb led picc hitech

Portb0 bağacını daha önceden giriş olarak ayarladığımız için şimdi onu çıkış olarak ayarlamamız gerekiyor. Tris registerleri hangi pinlerin giriş – çıkış olacağını belirliyor.

Acılışta zaten ilk olarak onları yapiyoruz.

Kod :

TRISA = 0b00000000;
	TRISB = 0b00000001; // RB0 giriş olmuş.

	PORTA = 0b00000000;
	PORTB = 0b00000001;

Giriş çıkışı basit aklınızda tutmak için INPUT ilk harfi I, OUTPUT baş harfi O çağrışım yapabilirsiniz. Yani 1 olursa INPUT, 0 olursa OUTPUT olur. Bu durumda TRISB registerini 0 sıfır yapıyoruz o zaman hepsi çıkış olmuş olur. Aşağıdaki gibi bir kod yazıyoruz.

void main(void) // Ana program

{
	
	TRISA = 0b00000000;
	TRISB = 0b00000000;

	PORTA = 0b00000000;
	PORTB = 0b00000000;
	
	OPTION = 0b00000000;  // PullUp dirençleri devreye sokar. 

	CMCON = 0x07;	  // PORTA nin analog pinlerini kapatır. Dijital Prota dönüştür.

	while (1) {	// Sonsuz döngü programı bunun içine programımızı yazacağız.
		
		unsigned char sayac = 0;   // işlem yapmak için geçici bir register 
						//  kullanıyoruz.
		
		do{
			
		  PORTB = (1 << sayac++);	// bu işlem 1 değerini sayacın değeri kadar
    	// sola öteler. ++ işareti sayacın sağında 
    	// olduğu öteleme işleminden sonra sayac 
	// değişkenini 1 artırır.
		
		  DelayMs(250); // bekleme döngüleri
		  DelayMs(250);			
			
		} while (sayac < 8); // Bu işlemi 8 defa yap.
	}
}

Şimdi sağ ve sola kayacak şekilde bir kod yazalım.

void main(void) // Ana program

{
	
	TRISA = 0b00000000;
	TRISB = 0b00000000;

	PORTA = 0b00000000;
	PORTB = 0b00000000;
	
	OPTION = 0b00000000;  // PullUp dirençleri devreye sokar. 

	CMCON = 0x07;	// PORTA  analog pinlerini kapatır. Dijital prota dönüştür.

	while (1) {		// Sonsuz döngü programı bunun içine yazacağız.
		
		unsigned char sayac = 0;   // işlem yapmak için gecici bir register 
						//  kullaniyoruz.
		
		do{

		  PORTB = (1 << sayac++);	// bu işlem 1 değerini sayacın değeri kadar
    	// sola öteler. ++ işareti sayacın sağında 
    	// olduğu öteleme işleminden sonra sayac 
	// değişkenini 1 artırır.
		
		  DelayMs(100);			
			
		} while (sayac < 8); // Bu işlemi 8 defa yap.


		do{
			
		  	PORTB = (0b10000000 >> sayac++);
			// bu işlem 0b10000000 değerini sayacın değeri kadar
    	// sağa öteler. ++ işareti sayacın sağında 
    	// olduğu öteleme işleminden sonra sayac 
			// değişkenini 1 artırır.
		
			DelayMs(100);	 // Bekleme süresi
			
		} while (sayac < 8); // Bu işlemi 8 defa yap.
	}
}

Bir kara şimşek programı yapmış bulunuyoruz. Görüldüğü gibi C de kod yazmak hem kolay hem de zannedildiği kadar zor değil. Artık portların kullanımı giriş çıkış işlemlerini öğrenmiş bulunuyoruz. Bu işlemden sonra daha ileri konulara geçeğiz.

Mplap altında PIC18 derleyicisini eklemek

Öncelikle Mplab altında PICC-18 kurulmuş mu diye bakıyoruz.

“ Project -> Set Language Tool Location “ açtığımızda göreceğiz.

hi-tech_picc18_set-language-tool-location

Çıkan pencerede Hi-Tech PICC-18 Toolsuite içini incelerek görürüz. Kurulu olduğu yeri “Location” bölümünde gösteriyor. Eğer “Location” bölümü boş ise o zaman bu derleyici MPLAP altında tanıtılmamış demektir. Bunu otomatik yaptırmak yerine kendinizde elle yerini belirtebilirsiniz. Ben burada “PICC-18 8.35 PL2” versiyonunu kullanıyorum.

picc18_egitim-2-hi-tech-picc-18-toolsuite

Ele yapmak yerine onun Tıpkı PICC gibi PICC-18 derleyicisinin de bunu otomatik yapan programı var.

hi-tech_picc18_egitim-3

“C:\HTSOFT\PIC18\” klasörünün içinde ki “picc-18_mplab6_setup.exe” programını çalıştırırsanız kendisini otomatik MPLAB altına entegre edecektir.

Hi-Tech PICC Program Yazma Kılavuzu dosyalar: Hi-Tech PICC Program Yazma Kılavuzu

Dosya indirme LINK listesi (TXT formatında) link-3989.zip şifre-pass: 320volt.com

  • isa_olcer

    ben fazla bir şey anlamadım ama anlatım için çok uğraşmışsın teşekkürler:):)

  • Emre

    Paylaşım için saol bu bilgiler çok işime yarıcak

  • baki

    çook iyi bir şey yapmışsınız. bende çoktandır bir HEX dosyası nasıl yapalirim derdi ile uğraşırken siz böyle bir şey yapmışsınız. teşekkürler.
    böyle güzel işler yapma umuduyla.

  • selim dumlu

    Arkadaşım c derleyemiyorum aldığım hata mesajı şöyle yardımcı olursan sevinirim teşekkürler:

    Clean: Deleting intermediary and output files.
    Clean: Deleted file “C:\Hi-Tech_Egitim\proje1.mcs”.
    Clean: Done.
    Executing: “C:\HT-PIC\BIN\PICC.EXE” -C -E”delay.cce” “delay.c” -O”delay.obj” -Zg9 -O -ASMLIST -Q -MPLAB -16F628
    Executing: “C:\HT-PIC\BIN\PICC.EXE” -E”proje1.lde” “C:\Hi-Tech_Egitim\delay.obj” -M”proje1.map” -O”proje1.cof” -O”proje1.hex” -Q -MPLAB -16F628
    Error[000] : undefined symbol:
    Error[000] : _main (C:\HT-PIC\LIB\picrt40c.obj)
    BUILD FAILED: Sat Nov 22 15:43:52 2008

  • yusuf

    sanırtım senin problemin delay.c dosyasının include edilememesi
    bunun için sana önerim HI-tech program dosayasını bul(program files içinde)
    burasa SAMPLES klasörü içinde DELAY klasörü altındaki DELAY.C dosyasını ve garanti olsun diye DELAY.H dosyasını koplaya ve bu klasörden çık ve SAMPLES klasöründen de çık ve INCLUDE klasörü içine bu dosyaları yapıştır daha sonra compile etmeyi yeniden dene

  • ALPEREN

    Arkadaşım bu tip programlama işlerine ben yabancıyım ama öğrenme isteğim var paylaşımıdan benim gibi öğrenme arzusu olanlar sanırım yararlanabilirler paylaşımına içtenlikle ve samimi olarak teşekkürlerimi ifade edmek isterim ellerin dert görmesin

  • Ercan

    Selam,vermiş olduğnuz bilgiler için tşk’ler.
    Güzel bir site,güzel çalışmalar açıklayıcı ifadeler,herşey için tşk’ler,
    buradaki bilgileri görüp faydalandıktan sonra tşk’süz geçmek olmaz,
    tekrar teşekkürler :)

  • uğur

    Sayın Hocam
    BASLA GOTO
    PIC e gönül verenlerden olarak, bu paylaşım için size teşekkür eder ve bu tür paylaşımlarınızın devamını dilerim.

    END

  • Salim

    Merhaba,
    Kurulum ile alakalı ufak bir video veya sunum hazırlayacağım. Buradaki resimlerin bir kısmını kullanmayı düşünüyorum.
    İzniniz var mı acaba, öğrenmek isterim?
    Dilerseniz dosyayı hazırladıktan sonra yollayabilirim.
    Teşekkürler.

  • murat

    Clean: Deleting intermediary and output files.
    Clean: Done.
    Executing: “C:\HT-PIC\BIN\PICC.EXE” -C -E”test.cce” “test.c” -O”test.obj” -Zg9 -O -ASMLIST -Q -MPLAB -16F628A
    Halting build on first failure as requested.
    BUILD FAILED: Thu Jan 07 11:56:15 2010
    bendede böle bir hata veriyor dediklerinizi yaptım uyguladım hala bir degişiklik olmadı öncede kullanıyordum aynı şeyleri yapınca şimdi olmuyor yardımcı olursanız sevnirm..

  • clbteam

    Error[000] 0 : undefined symbol amp
    Halting build on first failure as requested.
    BUILD FAILED: Sun Apr 11 14:56:10 2010

    bu hata ne anlama geliyor.

  • kaynak dosyadaki http://rapidshare.com/files/164074599/Hi-Tech-PICC-egitim.rar kodlar ile çalışın

  • zafer apkin

    sayın Gevv hocam burada bahsedilen

    picc-setup v8.05PL2.exe
    picc_mplab6_setup.exe
    activate.exe

    dosyaları bulamıyorum.asagıdaki rapid linkten de indiremedim.

    http://rapidshare.com/files/164074599/Hi-Tech-PICC-egitim.rar

    lütfen gerekli dosyaları 320volt.com a yükleyebilir misiniz? acil hi tech ile yazılmıs c dosyam var.hex yapamadım.lütfen yardım edin.

    zapkin@gmail.com

  • mesut

    Clean: Deleting intermediary and output files.
    clean: Deleted file “C:UserspcDesktopaf.mcs”.
    Clean: Done.
    Executing: “C:PICCLITEBINPICL.EXE” -C -E”af.cce” “af.c” -O”af.obj” -Zg9 -O -ASMLIST -Q -MPLAB -16F877
    Halting build on first failure as requested.
    BUILD FAILED: Mon May 12 11:49:11 2014

    bu soruna bu çözüm bulan varsa acil paylaşsın

  • kemal yetkin

    merhaba,mplab indirdigimde c dilindeyazamıyorum hı-tech i seçemiyorum çünki hı-tech yok bununiçin ne yapabiliirim?? extra bir şeymi indirmem gerekiyor?