Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
46
Cevap
9573
Tıklama
0
Öne Çıkarma
Cevap: pic c compiler!! (2. sayfa)
M
18 yıl
Yüzbaşı

Bu gün içinde (büyük ihtimalle akşam) resimli bir şekilde bir kaç örnek kod yayınlarım. Beğendiğinize sevindim.



A
18 yıl
Yarbay

quote:

Orjinalden alıntı: muuzoo

biraz beklersen sana kendi kullandığım programı göndereyim. Hitech firmasının HI-TIDE derleyicisi var. C derleyicisi onun paket halinde kurulumu var elimde saat 17 den sonra upload ederim onu kullanırısın. mplab a falan gerek kalmıyor.

http://rapid-share.com/files/21192764/htpicc950.rar

Ben pic c arıyorum.Sanırım bu program bu değil.Acaba pic c paylaşabilecek olan var mı?


Bu mesaja 2 cevap geldi.
K
18 yıl
Binbaşı

c dilinde pic e kod yazmak istiyorsan en sağlam derleyici budur diyolar. aynı şekilde pic c lite, ccs c, micro c gibi derleyicilerde var. genel olarak c dilini biliyosan hepsi aynı. sadece bikaç komut ve arayüz farklılıkları var.



M
18 yıl
Yüzbaşı

quote:

Orjinalden alıntı: 90alper90


quote:

Orjinalden alıntı: muuzoo

biraz beklersen sana kendi kullandığım programı göndereyim. Hitech firmasının HI-TIDE derleyicisi var. C derleyicisi onun paket halinde kurulumu var elimde saat 17 den sonra upload ederim onu kullanırısın. mplab a falan gerek kalmıyor.

http://rapid-share.com/files/21192764/htpicc950.rar

Ben pic c arıyorum.Sanırım bu program bu değil.Acaba pic c paylaşabilecek olan var mı?




Bu program pic c yi ve derleyicisini içinde bulunduran bir program. HI-TIDE sadece c kodu yazmak içiçn arayüz. derleme işlemi yine picc ile yapılıyor.
Normalde picc yi kurup mplab da kod yazıp mplab içinden derlemeyi pic c ye yaptırırsın. Fakat bu program sayesinde mplab a gerek kalmıyor kodlarını HI-TIDE üzerinde yazıp derle dediğin zaman direk derleniyor. Ayrıca yazdığın kodu öalıştırıp inceleyebiliyorsun. Eğer beklerseniz bu başlık altında nasıl kod yazılıp derleneceğini resimli olarak göstereceğim.Örnek programlar vereceğim.


Bu mesaja 2 cevap geldi.
O
18 yıl
Yüzbaşı

DEFINE OSC 4
CMCON = 7
VRCON = 0
OPTION_REG.7=1
M VAR BYTE
N VAR BYTE
TRISB=0
TRISA=%10000
PORTA=%11111
PORTB=255
PAUSE 500
ANA:
LOW PORTA.0
LOW PORTA.1
LOW PORTA.2
LOW PORTA.3
PORTB=%00000000
IF PORTA.4=0 THEN BASLA
PAUSE 50
GOTO ANA
BASLA:
M=1
N=4
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=1
N=12
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=1
N=28
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=1
N=60
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=1
N=124
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=1
N=252
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=3
N=4
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=3
N=12
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=3
N=28
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=3
N=60
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=3
N=124
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=3
N=252
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=7
N=4
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=7
N=12
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=7
N=28
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=7
N=60
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=7
N=124
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=7
N=252
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=4
IF PORTA.4=1 THEN ZAR
M=15
N=12
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=28
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=60
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=124
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=252
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=5
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=13
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=29
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=61
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=125
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=253
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=7
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=15
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=31
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=63
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=127
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=255
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=1
N=4
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=3
N=12
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=255
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=125
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=15
N=60
PAUSE 1
IF PORTA.4=1 THEN ZAR
M=7
N=28
PAUSE 1
IF PORTA.4=1 THEN ZAR
GOTO BASLA
ZAR:
PORTB=N
PORTA=M
PAUSE 200
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
IF PORTA.4=0 THEN ANA
PAUSE 50
GOTO ANA


arkadaşlar böyle bi kod var bunu pic e nasıl yüklicem


Bu mesaja 1 cevap geldi.
S
18 yıl
Yarbay

hangi işlemciyi kullanacaksın bu dosyaları microcode studio ile hex e çevirebilirsin.hangi işlemcinin kullanılacağını yazarsan ben hex e çevirebilirim


Bu mesaja 1 cevap geldi.
M
18 yıl
Yüzbaşı

Denemeler-1


Kaldığımız yerden devam ediyoruz. Dünki mesajımda yeni bir projeye nasıl başlanacağını göstermiştim. Şimdi o adımları bildiğinizi varsayıp basit bir kod ile neler olduğunu anlatmaya çalışacağım.

1)Yukarıda anlatılan şekilde yeni bir projeye başlayın.Pic olarak 16f628a seçin
2)main.c sayfasını açınız.
3)Karşınızda boş bir sayfa göreceksiniz.Sayfada //TO DO ile başlayan yazıyı silebilirsiniz ve kodunuzu oraya yazabilirsiniz.

Aşağıdaki resimde basit bir kod verilmiştir.
< Resime gitmek için tıklayın >

Tam ekran görmek için :https://store.donanimhaber.com/01/c2/c3/01c2c3ff066c5c84e3c77fef4757c724.gif

Şimdi buradaki kodun ne yaptığını basitçe şöyle özetleyebiliriz. Pic'in B portuna bağlı ledleri 2 yanık 2 sönük durumunda tutar.
quote:


#include <htc.h> /////////bu kısım otomatik oluşur

void ////bu kısım otomatik oluşur///
main(void) ////bu kısım otomatik oluşur///
{ ////bu kısım otomatik oluşur///

PORTB=0; ///B portunun tüm çıkışları sıfırlanıyor. Lojik 0 durumunda
TRISB=0; ///B portu çıkış birimi olarak ayarlanıyor.

PORTB=0xcc; ///B portuna 0xCC değeri yükleniyor. Bu sayının 2lik karşılığı=11001100

for(;;); ///Sonsuz döngü

} /////////bu kısım otomatik oluşur


Çalışan kodun isis görüntüsü eklenmiştir.
< Resime gitmek için tıklayın >

Tam ekran görmek için:https://store.donanimhaber.com/d8/a0/1a/d8a01a60fcf690195c24ba7c52ccb4e7.gif

Yazdığınız kodu denemeniz için ekte Proteus dosyalarını gönderiyorum. Şema 6.9 Sp5 te hazırlanmıştır. Fakat pakete hex kodlarını dahil etmedim onu size bırakıyorum
http://rapid-share.com/files/21531757/Program_1.rar
İndirmek için "-" işaretini siliniz.

Şimdililk bu kadar.Hatalarım varsa affola. Devamı gelecektir. Kod çok basit olabililr. Fakat bir sıraya göre gitmeyi düşünüyorum. Takip ettiğim kitap "PIC PROGRAMLAMA 16F628A" dır. Yazarı Orhan Altınbaşak. Orda kodlar asm ile verilmiş. Ben onları c diline uyarlıyorum. Bazen birebir uayrlama kolay oluyor bazen se kendi mantığımı kullanıyorum.





< Bu mesaj bu kişi tarafından değiştirildi muuzoo -- 17 Mart 2007; 23:40:19 >
Bu mesaja 2 cevap geldi.
N
18 yıl
Yüzbaşı

hocam eline saglık... Bildigin genis bir pic c kitabı var mı ? Kutuphaneden birkac tane bulmustum ama, mesela sadece sıcaklık projelerinin oldugu bir kitap idi. Gerci epey fikir veriyor pic c ile alakalı ama bildigin daha genis bir pic c (hi-tech pic c ) kitabı var mı ?


Bu mesaja 2 cevap geldi.
M
18 yıl
Binbaşı

@respected nicli arkadaşımızın güzel bir pdf i ,ccs (pcwh) kullanımı anlatıyor.

http://rapid-share.com/files/11425977/ccs_book.rar.html

Nigel gardnerin kitabı güzel,internette Türkçesi de dolaşıyor.

Birini bilen diğerine rahat geçiş yapabilir.
Sonunuz iar olacak...



M
18 yıl
Yüzbaşı

quote:

Orjinalden alıntı: NiQuitinCQ

hocam eline saglık... Bildigin genis bir pic c kitabı var mı ? Kutuphaneden birkac tane bulmustum ama, mesela sadece sıcaklık projelerinin oldugu bir kitap idi. Gerci epey fikir veriyor pic c ile alakalı ama bildigin daha genis bir pic c (hi-tech pic c ) kitabı var mı ?



Maalesef bildiğim bir pic c kitabı yok. O yüzden yardımcı olamaycağım. Ben de o yüzden asm kodlarının c karşılığını yazarak çalışıyorum. BU sayede iki dile de aşina olmuş oluyorum. Zira bazı durumlarda c nin yetmediği yerde asm kodlarına ihtiyaç olabilir.

Aklıma gelmişken eğer c içinde asm kullanmak isterseniz
#asm
kodlar
buraya
#endasm

biçiminde c programının içinde asm kodu kullanabilirsiniz.



B
18 yıl
Yüzbaşı
Konu Sahibi

quote:

Orjinalden alıntı: muuzoo

Denemeler-1


Kaldığımız yerden devam ediyoruz. Dünki mesajımda yeni bir projeye nasıl başlanacağını göstermiştim. Şimdi o adımları bildiğinizi varsayıp basit bir kod ile neler olduğunu anlatmaya çalışacağım.

1)Yukarıda anlatılan şekilde yeni bir projeye başlayın.Pic olarak 16f628a seçin
2)main.c sayfasını açınız.
3)Karşınızda boş bir sayfa göreceksiniz.Sayfada //TO DO ile başlayan yazıyı silebilirsiniz ve kodunuzu oraya yazabilirsiniz.

Aşağıdaki resimde basit bir kod verilmiştir.
< Resime gitmek için tıklayın >

Tam ekran görmek için :https://store.donanimhaber.com/01/c2/c3/01c2c3ff066c5c84e3c77fef4757c724.gif

Şimdi buradaki kodun ne yaptığını basitçe şöyle özetleyebiliriz. Pic'in B portuna bağlı ledleri 2 yanık 2 sönük durumunda tutar.
quote:


#include <htc.h> /////////bu kısım otomatik oluşur

void ////bu kısım otomatik oluşur///
main(void) ////bu kısım otomatik oluşur///
{ ////bu kısım otomatik oluşur///

PORTB=0; ///B portunun tüm çıkışları sıfırlanıyor. Lojik 0 durumunda
TRISB=0; ///B portu çıkış birimi olarak ayarlanıyor.

PORTB=0xcc; ///B portuna 0xCC değeri yükleniyor. Bu sayının 2lik karşılığı=11001100

for(;;); ///Sonsuz döngü

} /////////bu kısım otomatik oluşur


Çalışan kodun isis görüntüsü eklenmiştir.
< Resime gitmek için tıklayın >

Tam ekran görmek için:https://store.donanimhaber.com/d8/a0/1a/d8a01a60fcf690195c24ba7c52ccb4e7.gif

Yazdığınız kodu denemeniz için ekte Proteus dosyalarını gönderiyorum. Şema 6.9 Sp5 te hazırlanmıştır. Fakat pakete hex kodlarını dahil etmedim onu size bırakıyorum
http://rapid-share.com/files/21531757/Program_1.rar
İndirmek için "-" işaretini siliniz.

Şimdililk bu kadar.Hatalarım varsa affola. Devamı gelecektir. Kod çok basit olabililr. Fakat bir sıraya göre gitmeyi düşünüyorum. Takip ettiğim kitap "PIC PROGRAMLAMA 16F628A" dır. Yazarı Orhan Altınbaşak. Orda kodlar asm ile verilmiş. Ben onları c diline uyarlıyorum. Bazen birebir uayrlama kolay oluyor bazen se kendi mantığımı kullanıyorum.


kardeş ellerine sağlık çok güzel olmuş....


Bu mesaja 1 cevap geldi.
T
18 yıl
Binbaşı

Sayın muuzoo, onurabi ve emeği geçen diğer arkadaşlar. Paylaşımlarınız için teşekkürler...



A
18 yıl
Yarbay

quote:

Orjinalden alıntı: muuzoo


quote:

Orjinalden alıntı: 90alper90


quote:

Orjinalden alıntı: muuzoo

biraz beklersen sana kendi kullandığım programı göndereyim. Hitech firmasının HI-TIDE derleyicisi var. C derleyicisi onun paket halinde kurulumu var elimde saat 17 den sonra upload ederim onu kullanırısın. mplab a falan gerek kalmıyor.

http://rapid-share.com/files/21192764/htpicc950.rar

Ben pic c arıyorum.Sanırım bu program bu değil.Acaba pic c paylaşabilecek olan var mı?




Bu program pic c yi ve derleyicisini içinde bulunduran bir program. HI-TIDE sadece c kodu yazmak içiçn arayüz. derleme işlemi yine picc ile yapılıyor.
Normalde picc yi kurup mplab da kod yazıp mplab içinden derlemeyi pic c ye yaptırırsın. Fakat bu program sayesinde mplab a gerek kalmıyor kodlarını HI-TIDE üzerinde yazıp derle dediğin zaman direk derleniyor. Ayrıca yazdığın kodu öalıştırıp inceleyebiliyorsun. Eğer beklerseniz bu başlık altında nasıl kod yazılıp derleneceğini resimli olarak göstereceğim.Örnek programlar vereceğim.

Yani pic c programında kullanılan bir dille yazılmış olan bir c kodunu bu derleyiciyle derleyebilirim değil mi?


Bu mesaja 1 cevap geldi.
Y
18 yıl
Yarbay

muzoo kardeş sana bir sorum var ve diğer arkdaşlara da birz konu dışı ama sorayım ben gine de
Arkadaşlar bir konuda yardımınıza ihtiyacım var.
sorun şu: Şimdi mıknatıs takılıyken yazı hep belirli bir noktada oluşuyor.
ben mıknatısı çıkardım ve DELAYMS(20) yaptım yani tam motora göre ayarladım.
sonra motor hareket ettiğinde yazı yavaşça hareket ediyor dönüyor.
yani resmen havada kayan yazı gibi oluyor.AMA bmyle dönerken birden yazı öteki tarafa atlıyor.
yine ne güzel dönüyor yavaşça yine aynı pat diye yazı atlıyor niye böyle oluyor?????
lütfen bişeyler söyleyin
video::
< Resime gitmek için tıklayın >
http://www.youtube.com/watch?v=Sa9HXglpjqU

evet arkadaşlar bu sorun mu değil mi???


Bu mesaja 1 cevap geldi.
M
18 yıl
Yüzbaşı

Gördüğüm kadarıyla sanki zamanlama sorunu var gibi geldi bana. Aslına bakarsan bu tarz bir çalışma yapmadığım için emin olamıyorum ama görüntünün birden başka bir yere atlaması sanki bir senkron sorunu olduğunu gösteriyor.


Bu mesaja 1 cevap geldi.
Y
18 yıl
Yarbay

quote:

Orjinalden alıntı: muuzoo

Gördüğüm kadarıyla sanki zamanlama sorunu var gibi geldi bana. Aslına bakarsan bu tarz bir çalışma yapmadığım için emin olamıyorum ama görüntünün birden başka bir yere atlaması sanki bir senkron sorunu olduğunu gösteriyor.


kardeş zamanlamayı 20 yaptığım zaman böle oluyor. Ama 20 yi 30 40 veya 10 yaparsam yazı okunmuyor yazı çok hızlı dönüyor ama 20 yapınca görebiliyorum.Bence zamanlamada bir sorun yok ama dedim acaba programda mı bir hata var????


Bu mesaja 1 cevap geldi.
M
18 yıl
Yüzbaşı

Aklıma takılan şu aslında. NOrmalde yazının aynı yerde görünmesi iççn programda ayarlanan zamanlama ile motorun zamanlamasının tutması gerekiyor değil mi?Sallıyorum normalde yazının başlangıcı (düzlemi bir saat olarak düşünelim) saat 11 noktasında oluyor. aynı yerde görünmesi için programın hep aynı noktada tekrar edip başlaması lazım. Ama senin çalışmanda sanki motor devri ile programdaki gecikme tam oturmuyormuş gibi geldi. Daha öncede demiştim böyle bir çalışma yapmadığım için sadece tahmin yürütüyorum.

Denemeler-2


Bir önce ki yazıda basit bir şekilde çıkışların nasıl kullanılacağını göstermiştim. Bu sefer ise girişten alınan bilgiye göre çıkışın değiştirilmesi mantığıyla çalışan yine basit bir kod vereceğim.

Daha önce anlatıldığı gibi yeni bir proje açıyoruz.Pic olarak 16f628a kullanıyoruz.Aşağıda gerekli kodları veriyorum

quote:



#include <htc.h>

void
main(void)
{
PORTB=0x00;------>PORTB'ye başlangıç değeri olarak sıfır atanıyor
TRISB=0x00;------>PORTB çıkış olarak ayarlanıyor.
CMCON=0x07;------>PORTA'nın ilk 4 pini normalde analog moddadır.Bunu lojik giriş çıkış ayarlayabilmek için CMCON saklayıcısına 0x07 değeri atanması gerekir.
//PORTA=0x00;------>PORTA'ya başlangıç değeri olarak sıfır yükleniyor
TRISA=0xFF;------>PORTA giriş olarak ayarlanıyor.

for(;;){------>PIC'lerde durdurma komutu yoktur.Bu yüzden program bittikten sonra durmak istenirse sonsuz döngü kullanmak gerekir.Fakat bu durumda pic resetlenmeden program başa dönmez.Sürekli çalışması gereken programlarda ise kodda görüldüğü gibi çalıştırmak istediğimiz kod sonsuz döngünün içine yazılır bu sayede sürekli çalışan bir kodumuz olur.
PORTB=PORTA;------>Giriş bilgileri çıkışa aktarılıyor
}

}




Örnek ekran görüntüsü
< Resime gitmek için tıklayın >

Tam ekran görmek için ----------------> https://store.donanimhaber.com/a6/ad/d6/a6add66f36502619802d918d374320e9.gif

Yazdığınız kodu denemek için gerekli olan ISIS dosyası ekte verilmiştir (v6.9 Sp5). Benzeşim sırasında anahtarlı açıp kapayarak programın verdiği tepkiyi görebilirsiniz.Hex dosyasıni vermedim. Onu siz halledersiniz

Benzeşim dosyası------------> http://rapid-share.com/files/21789246/Program_2.rar (indirmek için "-" işaretini kaldırın)





< Bu mesaj bu kişi tarafından değiştirildi muuzoo -- 19 Mart 2007; 16:27:13 >
Bu mesaja 1 cevap geldi.
B
18 yıl
Yüzbaşı
Konu Sahibi

quote:

Orjinalden alıntı: muuzoo

Aklıma takılan şu aslında. NOrmalde yazının aynı yerde görünmesi iççn programda ayarlanan zamanlama ile motorun zamanlamasının tutması gerekiyor değil mi?Sallıyorum normalde yazının başlangıcı (düzlemi bir saat olarak düşünelim) saat 11 noktasında oluyor. aynı yerde görünmesi için programın hep aynı noktada tekrar edip başlaması lazım. Ama senin çalışmanda sanki motor devri ile programdaki gecikme tam oturmuyormuş gibi geldi. Daha öncede demiştim böyle bir çalışma yapmadığım için sadece tahmin yürütüyorum.

Denemeler-2


Bir önce ki yazıda basit bir şekilde çıkışların nasıl kullanılacağını göstermiştim. Bu sefer ise girişten alınan bilgiye göre çıkışın değiştirilmesi mantığıyla çalışan yine basit bir kod vereceğim.

Daha önce anlatıldığı gibi yeni bir proje açıyoruz.Pic olarak 16f628a kullanıyoruz.Aşağıda gerekli kodları veriyorum

quote:



#include <htc.h>

void
main(void)
{
PORTB=0x00;------>PORTB'ye başlangıç değeri olarak sıfır atanıyor
TRISB=0x00;------>PORTB çıkış olarak ayarlanıyor.
CMCON=0x07;------>PORTA'nın ilk 4 pini normalde analog moddadır.Bunu lojik giriş çıkış ayarlayabilmek için CMCON saklayıcısına 0x07 değeri atanması gerekir.
//PORTA=0x00;------>PORTA'ya başlangıç değeri olarak sıfır yükleniyor
TRISA=0xFF;------>PORTA giriş olarak ayarlanıyor.

for(;;){------>PIC'lerde durdurma komutu yoktur.Bu yüzden program bittikten sonra durmak istenirse sonsuz döngü kullanmak gerekir.Fakat bu durumda pic resetlenmeden program başa dönmez.Sürekli çalışması gereken programlarda ise kodda görüldüğü gibi çalıştırmak istediğimiz kod sonsuz döngünün içine yazılır bu sayede sürekli çalışan bir kodumuz olur.
PORTB=PORTA;------>Giriş bilgileri çıkışa aktarılıyor
}

}




Örnek ekran görüntüsü
< Resime gitmek için tıklayın >

Tam ekran görmek için ----------------> https://store.donanimhaber.com/a6/ad/d6/a6add66f36502619802d918d374320e9.gif

Yazdığınız kodu denemek için gerekli olan ISIS dosyası ekte verilmiştir (v6.9 Sp5). Benzeşim sırasında anahtarlı açıp kapayarak programın verdiği tepkiyi görebilirsiniz.Hex dosyasıni vermedim. Onu siz halledersiniz

Benzeşim dosyası------------> http://rapid-share.com/files/21789246/Program_2.rar (indirmek için "-" işaretini kaldırın)


yaw bende girişteki bilgileri çıkışa nasıl atılır die düşündüm aklım PORTB = PORTA geldi kodu derledim proteus'ta simulasyonunu yaparken yanlış çalışıyordu demek ki CMCON'u ayarlıyormuşuz. Bir soruda bu bilgileri sen nasıl elde ettin acaba bu konuda da bilgi verebilirmisin. bu arada çalışmaların için teşekkürler...


Bu mesaja 1 cevap geldi.
M
18 yıl
Yüzbaşı

En baştan başlarsak c öğrenmek için C ve C++ adlı kitabı aldım.Sanırım sistem yayıncılık yazarlarından birinin adı Deitel'di. Daha sonra pic'e merak sarınca Altaş yayınlarından Pic Programlama 16f628 kitabını aldım. Kitapta kodlar asm dili ile verilmişti. Asm yi de sağolsun okulda z80 dersinde gördüm. Her ne kadar farklı olsa da mantığı benzerdi. Daha sonra bu pic kitabındaki kodları asm ye uyarlamaya çalıştım. Ondan sonra gerisi geldi. Ben de daha bu işte acamiyim ama uğraşmaya çalışıyorum boş buldukça.

Denemeler-3


Bu gün if/else yapısıyla yapılmış basit bir kod ve bir butona 15 defa basılınca (sayaç uygulaması) bir ledin yanmasını sağlayan bir uygulama yapılacaktır.Sayaç uygulamasında geciktirme döngüleri kullanılmadığı için. Benzeşim sırasında frekansın düşürülmesi gerekmektedir (ben 6khz olarak kullandım) Daha yüksek hızlarda kod istenildiği gibi çalışmayacaktır.

quote:


Kodun değişmeyen kısımlarını vermedim sadece bizim yazdığımı kodu ekledim

PORTB=0x00;-------------->Portb başlangıç değeri sıfır olarak ayarlandı
TRISB=0xFE;-------------->RB0 çıkış diğerleri giriş olarak ayarlandı
TRISA=0xFF;-------------->Porta giriş olarak ayarlandı
CMCON=0x07;-------------->RA0-RA3 pinleri lojik giriş çıkış olarak ayarlandı

for(;;)-------------->Sonsuz döngü
{
if(RA0==0)-------------->Eğer RA0 giriş değeri sıfır ise RB0 daki ledi söndür.
RB0=0;-------------->Ledi söndürme kısmı
else-------------->Yok eğer (başka türlü anlam bulamadım) RA4 sıfır ise
if(RA4==0)-------------->RA4 ün kontrol edildiği yer.
RB0=1;-------------->RB0 daki ledi yak
}


Kodun örnek ekran görüntüsü
< Resime gitmek için tıklayın >

Tam ekran görmek için -------------> https://store.donanimhaber.com/6c/1c/15/6c1c150b8079aa3be174045167d05ecf.gif


İkinci kodumuz ise bir butona 10 defa basıldığında ledi yakacak olan bir sayaç uygulaması. For ve while döngüleri ile hazırlanmıştır. İçinde basit bir geciktirme rutini vardır fakat mikrosaniyeler civarında geciktirme yaptığı için tavsiyem 5-6Khz pic hızında test edilmelidir. Geciktirme yeterli olmadığı için 1 Mhz de butona bir defa bastığınızda led yanacaktır.

quote:



int i=10,a;-------------->int tipinde değişkenler tanımlanıyor
PORTB=0x00;-------------->Portb başlangıç değeri sıfır
TRISB=0xFE;-------------->RB0 çıkış olarak diğer B pinleri giriş olarak tanımlanıyor.
TRISA=0xFF;-------------->A portunun tüm pinleri giriş
CMCON=0x07;-------------->A portunun ilk 4 pini içiçn lojik çalışma biçimi ayarlanıyor


while(i>0)-------------->i değeri sıfırdan büyük oldukça tekrar et
{
a=15;-------------->Geciktirme döngüsü içiçn tekrar değer atanması
if(RA0==0)-------------->eğer RA0 pininin değeri sıfıra eşitse
{
for(a=15;a>0;--a);-------------->Basit bir geciktirme döngüsü.15 ten geriye doğru sıfır olana kadar sayar sonra döngüden çıkar

i=i-1;-------------->i değerini bir azalt ve tekrar i ye ata burada i-- komutu da kullanılabilirdi
}
}

RB0=1;-------------->i değeri sıfıra ulaştığında yani butona 10 defa basıldığında program buraya gelecek ve RB0 daki ledi yakacaktır.
for(;;);-------------->Sonsuz döngü


Örnek ekran görüntüsü
< Resime gitmek için tıklayın >

Tam ekran görmek için----------> https://store.donanimhaber.com/0e/55/7c/0e557cf3ff5c3ba78499d5acebb47d4f.gif


Ekte her iki program için benzeşim dosyaları verilmiştir. ISIS te hazırlanmıştır (v6.9 Sp5)

İLk Program: http://rapid-share.com/files/21972717/Program_4.rar (indirmek için"-" leri silin)
İkinci program:http://rapid-share.com/files/21972790/Program_5.rar


Benzeşim dosyalarına hex kodue eklenmedi.


Bu mesaja 1 cevap geldi.
B
18 yıl
Yüzbaşı
Konu Sahibi

gecikme olarak DelayMs burada geçerli değil mi?


Bu mesaja 1 cevap geldi.