Haberler:

Türkiye'nin Elektronik ve Metal Dedektörlerini Buluşturan İlk Sitesi Teknoloji Ekibi'ne Hoş Geldiniz.

Ana Menü

Yardımlarınızı bekliyorum arkadaşlar.

Başlatan Müslim yavuz, 08 Ekim 2007, 17:19:41

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Müslim yavuz

TRISB=%00000001
SYMBOL TUS=PORTB.0
SYMBOL LED=PORTB.1
BASLA:
IF TUS=0 THEN
PAUSE 5000
IF LED=1 THEN
LOW LED
ELSE
HIGH LED
ENDIF
ENDIF
GOTO BASLA
END



Bana bu kodu içinde kullanılan komutlar ile beraber adım adım anlatabirmisiniz :(
Linkback: Yardımlarınızı bekliyorum arkadaşlar.

beyazkuvvet

TRISB=%00000001 ========>   b portundaki bitlerin giriş veya çıkış olduğunu belirtir..

SYMBOL TUS=PORTB.0 =======>  portb.0 bitine tus adı verildi
SYMBOL LED=PORTB.1 =======> portb.1 bitine led adı verildi

BASLA:      =========> başla adında etiket oluşturulmuş
IF TUS=0 THEN  =====> tus "0" ise
PAUSE 5000      =====> 5sn bekle
IF LED=1 THEN  =====> led "1" ise
LOW LED    =======> led'i söndür
ELSE          ======> değilse
HIGH LED    ======> led'i yak
ENDIF       ====>ıf döngü sonu
ENDIF
GOTO BASLA  ====>başla adlı etikete git
END  =====> program sonu

elbombaci

Hayrola müslim kardeş assembly den vaz mı geçtin?

Müslim yavuz

ikisi birbirine tamamlayıcı olur diye düşünüyorum bombacı kardeşim. ilgin için sağol asm zor gelmeye başladı ama inan senin kadar bilmek için çok şey verirdim.

BEYAZKUVVET sanada ilgin için çok tşk ediyorum. Hanenede ekliyorum sağol.

Müslim yavuz

ikinci endif nedir peki beyaz kuvvet kardeşim neden arka arkaya iki endif komutu ?

beyazkuvvet


BASLA:


IF TUS=0 THEN 

PAUSE 5000
IF LED=1 THEN 
LOW LED
ELSE         
HIGH LED
ENDIF   
ENDIF   
GOTO BASLA
END

Hocam şimdi 2. ednıf koymamızın sebebi programda da göründüğü gibi 2 tane if'li şart oluşturmuşsunuz ,mesela atıyorum buton "1" ise led i söndür değilse(else)  ledi yak buradakı butun şartların sonlandığını belirtmek için sanırım aynı end gibi burada da endı if'li şartların sonu demek istiyor...yanı kısaca kaç tane ıflı şart oluşturursanız o kadar endıf eklersiniz..

Fakat basit bir örnek verim (burada durum farklı)

'program başlangıç

'not= her.gi bir kodun sonuna, ' işareti koyarak o kodun açıklamasını yapabilirisin ' işaretinden sonra yazılanlar komut olarak algılanmaz..

Örnek:

If buton1=1 then tel1    ' buton=1 ise tel1 adlı etikete git.
                                      ' eğer buton=0 ise bir alt satıra geçer :D burada else komutu kullanılmaz program bunu kendi algılar vb. anlar ve algılar...bu da bir endıf kullanılmayan ıflı şart komutuna örnektir hocam...


If buton2=1 then tel2
If buton3=1 then tel3
If buton4=1 then tel4

Goto örnek    ' son şarttan sonra bu komuta sıra gelir ve bu komuta programı etiketin başına yönlendirir...


Tel1:

Hıgh led1   ' buton1=1 olmuşsa program buraya gelir ve led1'i "1" yapar.

Goto tel1  'buton1 "1" yapıldıktan sonra led yanar ve program buraya gelir daha sonra yine başa gider ve ledi yakar ... bu böyle pic2in enerji kesilene kadar devam eder.....

,
,


Tel4:

Hıgh led2

Goto tel4


End   ' program sonu....



Kolay gelsin...

Müslim yavuz

#6
sağol beyaz kuvvet güzel açıklama ama benim halen anlamadığım bişi var ?

BASLA:
IF TUS=0 THEN
IF LED=1 THEN
LOW LED
ELSE
HIGH LED
ENDIF
ENDIF
GOTO BASLA

Şimdi baştan okuyarak gelelim: tus 0 sa alt komutu çalıştırır 1 se bir alt komutu. 1 varsayalım tus 0 mı hayır 1 ledi söndür. işde kafam burada karışıyor Else komutu bu durumda dedi mi yakacak yoksa ednıf komutuna mı sıçrayacak.

Mesela asm dilinde BTFSS komutu ile IF aynı ama bu ıf de else var bu herdurumda yanı ıf her durumunda dallanma yapar mı yoksa komut sırasınca akar mı ? deli olacağım yaaa ne zor iş offf

elbombaci

#7
BTFSS komutu ile IF-ELSE komutu farklı şeyler müslim, BTFSS de doğruysa bir altı değilse ikinci alttan devam eder. Fakat IF komutunda doğruysa ELSE ye kadar gider ELSE ile ENDIF arasını atlar. Yanlış ise sadece ELSE ile ENDIF arasındaki komutları çalıştırır.



BTFSS ise böyledir.


Müslim yavuz

Çok sağol elbombacı valla çok sağol bu şema ve açıklaman beni aydınlattı çok sağol.
sizleri tanıdığıma inan çok memnunum kendimi şanslı hissediyorum;)

beyazkuvvet

Alıntı yapılan: Müslim yavuz - 08 Ekim 2007, 22:19:44
sağol beyaz kuvvet güzel açıklama ama benim halen anlamadığım bişi var ?

BASLA:
IF TUS=0 THEN
IF LED=1 THEN
LOW LED
ELSE
HIGH LED
ENDIF
ENDIF
GOTO BASLA

Şimdi baştan okuyarak gelelim: tus 0 sa alt komutu çalıştırır 1 se bir alt komutu. 1 varsayalım tus 0 mı hayır 1 ledi söndür. işde kafam burada karışıyor Else komutu bu durumda dedi mi yakacak yoksa ednıf komutuna mı sıçrayacak.

Mesela asm dilinde BTFSS komutu ile IF aynı ama bu ıf de else var bu herdurumda yanı ıf her durumunda dallanma yapar mı yoksa komut sırasınca akar mı ? deli olacağım yaaa ne zor iş offf


hocam şimdi verdiğiniz kod da sunu diyor...

eğer tuş "0" ise  ve  led"1" ise  ledi söndür,eğer tuş 1 ise ve led 1 değilse (else) (tus 0 değilse ve led 1 değilse) led yak...

bu arada devreyi oluşturuken uyuglayacağınız lojik değeride önemlidir..mesela sizin verdiğinz devreye göre devre 2 türlü çizilir.. 1.si pull up dirençleriyle 2. pull down dirençleriyle eğer1. gibi çizersenız picin buton bağlı pinine devamlı +5v gelir ve böylece sizin programa göre pic e bağlı olan led sönük durumdadır,siz ne zaman butona basarsanız devreye -5v yanı lojik 0 gelir ve led yanıp sönmeye başlar taki butondan elinizi çekene kadar...

2.sinde de pull down dirençleriyle çizdiğinizde picin buton bağlı pinine devamlı -5v yanı lojik 0 gelir ve led devamlı yanıp söner takii siz butona basıp +5v yanı lojik 1 verene kadar ve o anda led hangı konmda ise o konum led'e yansır..


devreyi kurdum ve denedim bu durum biraz farklı aslında anlatılmadan da anlanacak bişey bunun için ıf..then ile ilgili basit örnekler yapmalısınız bundan sonra değişik döngüler kurabilirsiniz benıde en çok zorlayan ıf..then olmuştu ama şimdi her programımım içinde var...hocam biraz örnek devre ve program yapıp isiste simule edersenız böylece daha iyi kavramış olurusunuz mantığı.....

micro code sutidio yuklu değilse en kısa zamnada yukleyip ete hocanın derslerden faydalanarak örnek uyuglamalar yapmaya başlayın...böylece işiniz kolaylaşır.....

eğer devre önemlı ise veya bir yerde kullancaksanız ne yapmak istediğinizi açıklayın yardımcı olım...kolay gelsin....

Müslim yavuz

Beyazkuvvet sağol bir devbre yapmaya çalışlmıyorum sadece mantığı kavaramaya çalışıyorum. daha emeklemedim bile ne yürümesi... nerede bende şuan devre yapacak kapasite ...:)

Yardımlarınızdan dolayı tşk ederim ıf ile problemim kalmadı çözdüm sağolun

Müslim yavuz

#11
galiba çözememişim...

TRISA= $FF
TRISB= 0
PORTB= 0
SYMBOL TUS= PORTA.0
SYMBOL LED= PORTB.1
BASLA:
IF TUS = 1 THEN
HIGH LED
ELSE
LOW LED
ENDIF
GOTO BASLA
END

bu kod neden çalışmıyor ? bu kod şunu demiyormu ? = tuş bir ise else ile endif arasındaki low led komutunu çalıştır sonra başa dön.
tus 0 ise hıgh led komutunu çalıştır.else ile endifi arasını atla başa dön !  bu bu dedmek değilmi neden olmuyor anlamadım :(

elbombaci

ENDIF ELSE'nin mi yoksa IF' in mi? yoksa ortak mı kullanıyorlar :) ENDIF'ın altına bir ENDIF daha yaz  ;)

Müslim yavuz

Bu dediğine derleyici izin vermiyor bombacı kardeş. iki kere ENDIF  yazdırmıyor. ???

elbombaci


Müslim yavuz

onda dikkad edersen iki IF komutu var bunda bir tane her halde ondan ?

elbombaci


elbombaci

müslim kardeş bir de trisa'ya TRISB=%00000001 formatında değer ata belki olur ben basic bilmiyorum seni yavaş yavaş takip ederim  ;)

Müslim yavuz

Alıntı yapılan: elbombaci - 09 Ekim 2007, 13:05:52
müslim kardeş bir de trisa'ya TRISB=%00000001 formatında değer ata belki olur ben basic bilmiyorum seni yavaş yavaş takip ederim  ;)

Kardeş bu yazıda çelişki var sanki yada benimkafa durdu anlamıyorum.
"trisa'ya TRISB=%00000001 formatında değer ata belki olur "

elbombaci

kardeş trisb yazdığına bakma bu formatı kullan bir de dedim, yabi $ şeklinde değil de % şeklinde...  deneme yanılma yöntemleriyle bulacaksın hatanı ben de bilmiyorum


Paylaş whatsappPaylaş facebookPaylaş linkedinPaylaş twitterPaylaş myspacePaylaş redditPaylaş diggPaylaş stumblePaylaş technoratiPaylaş delicious