HI-TIDE KULLANIMI RESİMLİ ANLATIM ve ÖRNEK KODLAR

Başlatan muuzoo, 29 Haziran 2007, 19:39:51

muuzoo

Alıntı yapılan: "findux"muzo kardeş sağol lasın pic c gara ekranda uğraşıp duruyorduk  mplab alışık değildik.hemen kurdum 3 tane küçük proje bile yaptım.ulen 1 hafta da yapacağım işi 1 saat te yaptım . Allah razi olsun ..Projelerini daim eylesin

Teşekkür ederim yardımcı olabildiysek ne mutlu.


DENEMELER-4

Bu sefer kod vermey yerine HI-TIDE'ın güzel bir özelliğinden bahsetmek isityorum. Kodunuzu yazdınız ve kontrol etmek istiyorsunuz. HI-TIDE ta bu mümkün. Hatta öyle ki hangi registerde ne var hangi değişekenin iççine ne atanmış,hafıza bölgelerine neler atanmış (program hafızası,eprom hafızası,data hafızası gibi) oluşturulan kodun asm karşılığı gibi pek çok bilgiye bu sayede ulaşabiliyorsunuz. Özellikle program yazarken mantığı test etmek içiçn ben sıkça kullanıyorum bu işlevini. Şİmdi bunu nasıl yapıyoruz hemen örnek bir şekilde açıklayaylım.



resimde kutu içinde görülen yerdeki "oynat simgesine" tıklıyoruz ve o an için çalıştığımız kod için debug ekranı geliyor simgeye tıkladığınızda

aşağıdaki gibi bir ekranla karşılacaksınız.



görüldüğü gibi ekranımız pek çok parçaya ayrılmış

Sol üst kısımdaki ilk kutuda programımızla ilgili genel bilgiler var ve dikkat ederseniz oynatma,duraklatma,durdurma gibi simgeler göreceksiniz. bu kısım bizim benzeşimi başlatmak,durdurmak,kodu satır satır çalıştırmak için kullancağımız kısım.7. ve 8. simgeler ile (step into ve step over) ile programımız içiçnde satır satır ilerleyebiliriz. Simgelerin üzerine mouse ile gelip beklerseniz her dimgenin ne yaptığı ile ilgili bir açıklama gözükecektir.


Sağ üst ksımda ise hafıza içerikleri ile ilgili bilgilere ulaşabiliyoruz. "Variable" başlığında programımızda kullandığımız değişkenlerin içerikleri gösterilir. Sallıyorum siz programınızda "int zaguska=5" gibi bir tanımla yaptıysanız o ekranda bu değişkenin değeri gözükecektir. Hemen yndaki "Memory View" e tılarsanız 3 alt başlık göreceksiniz. Program hafızasının içeriği  eprom hafızanın içeriği gibi bilgilere buradan ulaşabilirsiniz.


Orta sol kısımda gördüğünüz gibi programımızın kodlarını görüyoruz. Biz hangi satırı çalıştırırsak o satırın rengi  değişecekitr ve hangi satırda olduğumuzu gösterecektir. Hemen yanındaki kutuda ise yazdığımız koda karşılık oluşturulan asm kodlarını görmekteyiz. yazdığımız her komut içiçn oluşturulan asm kodları bu ekranda gözükmektedir. bu sayede program takibi okuması ve gerektiğinde müdehalesi kolaylaşmaktadır.


Orta sağda ise mikrodenetleyicimizde bulunan bütün register içeriklerini görebiliriz. Bu sayede hangi aşamada ne gibi değişiklikleri görmek mümkün olmakta.

Kod yazma pencerisen geçmek işsterseniz sağ üst köşe deki HI-TECH simgesine tıklarsanız kod yazma penceresine geri dönbebilirsiniz.

Şİmdililk bu kadar. Kolay gelsin.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

findux

muuzoo kardeş bişey soracaktım bu yeşil olan run butonuna basmadan auto build all işaretlediğimizde hex oluşturuluyormu yoksa her defasında yeşil run a basmak zorundamıyız.?bide ben derlediğimde altta consol da diyer projeleride build ediyor .diyer projeleride dokunmadan sadece calıştığım projeyi derlemek istiyoorum. (proje kapatma işlemi bu işe yarıyor acaba ).
birde şu nu fark ettim başlangıcta ingilizce karakter kullanmadığımızda programı derlerken hex dosyasını bulamıyor (program file does not exist )diye mesaj veriyor.bu sorunu çözmek için proje dosyasını girip hex dosyasının ismini proje dosyasının ismini yazdıkmı işlem oluyor.

muuzoo

Alıntı yapılan: "findux"muuzoo kardeş bişey soracaktım bu yeşil olan run butonuna basmadan auto build all işaretlediğimizde hex oluşturuluyormu yoksa her defasında yeşil run a basmak zorundamıyız.?bide ben derlediğimde altta consol da diyer projeleride build ediyor .diyer projeleride dokunmadan sadece calıştığım projeyi derlemek istiyoorum. (proje kapatma işlemi bu işe yarıyor acaba ).
birde şu nu fark ettim başlangıcta ingilizce karakter kullanmadığımızda programı derlerken hex dosyasını bulamıyor (program file does not exist )diye mesaj veriyor.bu sorunu çözmek için proje dosyasını girip hex dosyasının ismini proje dosyasının ismini yazdıkmı işlem oluyor.

Kodlarını yazdıktan sonra kaydet tuşuna basman derlenmesi içiçn yeterli. Yeşil olan buton sadece kodu simule etmeye çalıştırmaya yarıyor. bütün projelerin derlenmesi ise eğer projelerin açıksa program başlangıçta açık olan bütün projeleri derliyor ilk açılışta. onun dışında yeni bir projeye başlayıp kod yazarsan kaydet dediğin zaman sadece o projeyi derliyor. İngililzce türkçe karakter sorununu hiç yaşamadım , sanırım hep ingilizce karakter kullandığım iççn olsa gerek bu sorunla karşılşamadım.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

lacho

yeni başlayan biri olarak bende bi yerde takıldım

senin yazdığın gibi ilk deneme amaçlı basit kodu yazıyorum ve kaydediyorum

fakan bir türlü hex dosyasını elde edemedim proje dizininde oluşması gerektiğini tahmin ediyorum ama oluşmadı bunun için ne yapmamız gerekiyor bilgilendirirsen sewinirim

bu arada run tuluna bastığımda

" Launching (Error: Program files does not exist)  hatası veriyor

muuzoo

Alıntı yapılan: "lacho"yeni başlayan biri olarak bende bi yerde takıldım

senin yazdığın gibi ilk deneme amaçlı basit kodu yazıyorum ve kaydediyorum

fakan bir türlü hex dosyasını elde edemedim proje dizininde oluşması gerektiğini tahmin ediyorum ama oluşmadı bunun için ne yapmamız gerekiyor bilgilendirirsen sewinirim

bu arada run tuluna bastığımda

" Launching (Error: Program files does not exist)  hatası veriyor


Findux arkadaşımızda aynı sprunlar karşılaştığını yazmış bir önceki mesajda. Dosya adınız türkçeye has karakterler içerirse sorun çıkardığını söylemiş. Oyüzden proje adlarında ingilizce alfabeye göre isimlendirme yapıyoruz.

Bunun dışında hex dosyaları eğer ayarı değiştirmediyseniz ön tanımlı olarak
C:\Documents and Settings\kullanıcı_adı\hitide_workspace\Proje_Adınız\Release\

dizini altında oluyor.

Hex dosyası başarıyla derleniyor mu acaba. KOdu yazdığınız ekranın altında bir takım mesajların olduğu "console" bölümü var orda hatalar gösterilir. Eğer derlemede hata oluşursa hex dosyası da oluşmamış olabilir.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

lacho

hımm sanırım problem benim 16F84A ayarlayarak senin kodları kullanmammış böle bir konuda vaktini aldığım için özür dilerim.

lacho

peki bir şey daha sorucam

delay fonksiyonlarını nasıl yazıyoruz yada önceden tanımlı standart fonksiyonu varmı bu iş için ?

epey aradım user manual da bulamadım bişey

cenkishan

slm arkadasım anladıgım  ve arastırdıgım kadarıyla o dosyalar SAMPLE kalsorunde ordan alıp include klasorune atıyosun.eger prog hata verirse vermezse dogru yerdedir.OGRENİYORUZ BAKALIM ogrendikce acılıyorum
Bir bit olsam dolaşsam C de byte byte

muuzoo

Alıntı yapılan: "lacho"peki bir şey daha sorucam

delay fonksiyonlarını nasıl yazıyoruz yada önceden tanımlı standart fonksiyonu varmı bu iş için ?

epey aradım user manual da bulamadım bişey


Hemen gösterelim. Resimden de görebileceğin gibi

C:\Program Files\HI-TECH Software\PICC\9.50\samples\delay


dizinine giriyoruz. bu dizin altında iki dosya var delay.c ve delay.h.


Bu iki dosyayı
C:\Program Files\HI-TECH Software\PICC\9.50\include


dizinin altına kopyalıyorsun.

daha sonra kod yazarken şunun gibi bir ekleme yapıuyortsun

#include <delay.c>


Komutun kullanımı ise şöyle

DelayMs(50);
DelayUs(40);


gibi kullanabilirsin. Delay Ms ile en fazla 250 ms geciktirebilirsin ( belki 255 ide kabul edebililr)

Yaklaşık 1 sn lik geciktrime içiçn

for(a=4;a>0;a--)
     {
             DelayMs(250);
      }

        


kodunu kullanabilirsin.


NOT: Bu aralar yaz okulu sebebiyle biraz yoğun olduğum içiçn yeni kodlar ekleyemedim ama en geç hafta sonuna kadar yeni kodlar ekleyeceğim.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

lacho

abi çok sağolya eline emeğine sağlık

yeni yazılarını bekliyoruz

yaz okulunda başarılar

muuzoo

DENEMELER-5

Biraz uzun bir ara oldu. Bu seferki kodumuzda bir çeşit sayaç yapıyoruz. Bir butona basıldığında değeri yükseltirken diğer butona basıldığında değeri düşüren bir uygulama. Ayrıca değer sıfırdayken geri gitmeyen ve değer 255 te ikende ileri gitmeyen bir kod.

Alıntı Yap
#include <htc.h>

void gecikme (int sure1,int sure2);

void
main(void)
{
   int sabit,sabit2;--->int tipinde değişkenler tanımlanıyor
   PORTB=0x00;--->PORTB nin başlangıç değeri sıfır olarak atanıyor
   TRISB=0x00;--->PORTB nin tüm pinleri çıkış olarak ayarlanıyor
   TRISA=0xFF;--->PORTA nın tüm pinleri giriş olarak atanıyor.
   CMCON=0x07;--->PORTA, pic ilk çalıştığında analog biçimde çalışır lojik biçimde çalışması için cmcon saklayıcısına 0x07 değeri yüklenmeli
   
   for(;;)
   {
      sabit=0xFF;--->değişkene ff değeri yükleniyor
      sabit2=0x00;--->değişkene sıfır değeri yükleniyor
      if(RA0==0 && sabit!=PORTB)--->Eğer RA0 değeri sıfırsa (yani butona basıldıysa) ve PORTB nin değeri "sabit" değişkenine (yani FF) e eşit DEĞİLSE kodu çalıştır
      {
         PORTB=PORTB+1;--->PORTB nin değerini bir  arttır ve PORTB ye yükle
         gecikme(0xAA,0xAA);---> Geciktirme döngüsünü çapırıyoruz. 0xAA değerlerini değitirilebilir.
      }
      else --->Yukarıdaki şart doğru değilse
          if(RA7==0 && sabit2!=PORTB)--->RA7 değeri sıfırsa ve PORTB nin değeri "sabit2" ye eşit DEĞİLSE
      {
         PORTB=PORTB-1;--->PORTB nin değerini bir azalt ve PORTB ye yükle
         gecikme(0xAA,0xAA);--->Geciktirme döngüsünü çağırıyoruz.
      }
      
   }
}

void gecikme(int dongu1,int dongu2)--->Geciktirme döngümüz
   {
      int tampon=dongu1;--->dongu1 değişkeninin değeri saklanıyor.tampon değişkenine atanıyor
      while(dongu2!=0)--->dongu2 nin değeri sıfıra eşit olmadığı müddetçe döngüyü çalıştır
      {
         while(dongu1!=0)--->dongu1 in değeri sıfır olmadığı sürece döngüyü çalıştır
         {
            --dongu1;--->dongu1 in değerini 1 azalt
         }
         --dongu2;--->dongu2 nin değerini bir azalt
         dongu1=tampon;--->korunan dongu1 değerini tekrar yükle
      }
   }


Yukarıdaki kodda ilk kısımda gördüğünüz gibi giriş çıkış birimlerini ayarladık. Bu kodda örnek olması açısından kendi yazdığım bir geciktirme döngüsü kullandım. Temel mantığı şuna benziyor "10 defa 100 den geri say" . Yani kodun en sonunda gördüğün gecikme döngüsü aynı bu şekilde çalışıyor. Bizim verdiğimz başlangıç değerine ve tekrar sayısına göre sayarak gecikme yapıyor.

Bu kodda ayrıca koşul ifadeleride kullanıldı. if/else yapısı şuna benzer. "eğer şart doğruysa şunu yap,yok değilse bunu yap"
if(koşul)
       { çalışacak kodlar}
else  ---buraya yine bir if konabililr------
       {çalışacak kodlar }



while ise şart sağlandığı müddetçe çalışan döngüler oluşturur. yani şuna benzer " şart doğru oldukça tekrarla"

while(koşul)
       { kodlar }


yukarıdaki ifadelerde hep şartlar dedik peki bunlar ne olabililr? Genel olarak mantık ifadeleridir.ve temel olarak şunları kullanabililrz

>=      Büyük veya eşitse
<=      Küçük veya eşitse
==      Eşitse (en çok yapılan yanlışlardan biri şart oluştururken tek =                                      
         kullanmak. eğer tek = kullanırsanız karşılaştırma değil atama          
         yaparsınız)
!=       eşit değilse

<        küçüktür
>        büyüktür

&&     ve (iki koşul birleştiriken kullanırız)
||       veya (iki koşul birleştirirken kullanırız)

Aşağıda programı test etmek içiçn gerekli isis dosyası verilmiştir.Kodlar 16f628a ya göre yazılmıştır. Aşağıyada direk kodları ekliyorum.

http://rapidshare.com/files/43059249/Program_10.zip


#include <htc.h>

void gecikme (int sure1,int sure2);

void
main(void)
{
	int sabit,sabit2;
	PORTB=0x00;
	TRISB=0x00;
	TRISA=0xFF;
	CMCON=0x07;
	
	for(;;)
	{
		sabit=0xFF;
		sabit2=0x00;
		if(RA0==0 && sabit!=PORTB)
		{
			PORTB=PORTB+1;
			gecikme(0xAA,0xAA);
		}
		else 
		    if(RA7==0 && sabit2!=PORTB)
		{
			PORTB=PORTB-1;
			gecikme(0xAA,0xAA);
		}
		
	}
}

void gecikme(int dongu1,int dongu2)
	{
		int tampon=dongu1;
		while(dongu2!=0)
		{
			while(dongu1!=0)
			{
				--dongu1;
			}
			--dongu2;
			dongu1=tampon;
		}
	}
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

x-tol

merhaba
bu şekilde olan derleyici arayüzünü

bu hale getirmek istiyorum bunu nasıl yapabilirim?


findux

sağ üst köşedeki 'Hİ-TECH C' siyah icona basarak .eğer yoksa FİLE' dan yeni window ac ve calışmalarına yeni window'dan devam edebilirsin.

cenkishan

slm hı tech c ogrenenler arkadaslar, arkadasımızın verdigi 5 denemeden yola cıkarak ogrendik ogreniyoruz.(ASM YAZIYORUM GELİSTİRİYORUM) arkadasımız da isi var heralde ne zamandır ornek kod yollamadı.C ogrenmek icin bir kitap alayım dedim izmir  elektronikcilerden cankayadan adamlara sordum C kitabı varmı diye var dedi.ALLAH dedim hemen alayım parası onemsiz dedimcunku izmirde bulamadım istedigim kitabı.bi baktım kitapta bilgisayar programı icin C anlatıyor ornekleride o yonde butun hayallerim yıkıldı.bi kitap daha var icindeki en basit ornekler bile calısmıyor.C icin 5 pdf kitabım var bunlarıda pc den okuyorum.her biri 500 sayfa bassan uc kartus lasım(3*75=225 ytl) onların ne kadar iyi kaynak oldugu tartısılır.
http://www.kitapyurdu.com/kitap/default.asp?id=77618 BU HOCAMIZIN kitabını arıyorum.sizler C'de gelismek icin hangi kaynagı kullanıyorsunuz.veya ogrenmek ici hangi yolu sectiniz.ben kendim pdfden okuyup hi tech de kendi becerlerimle yazıp proteusta deniyorum.bu sureci hızlandıracak oneriniz varmı yada bulanabilecek bi guzel kaynak.
SAYGILARIMLA
Bir bit olsam dolaşsam C de byte byte

findux

hocam , linkteki hocamızın likteki kitabı yok ama, 4 adet kitabı var bende, 3'ü c ile ilgili örnekler mavcut   oldukca yararı dokundu diyebilirim.kitabı elektronikcilerde bile satılıyor.bu kaynaklara baş vurabilirsin.