yardım

yasin_570

Üye
Katılım
13 Nis 2008
Mesajlar
2
Puanları
1
Yaş
39
selam arkdaşlar ben daha yeni başladım pic programlamaya azbuz bişeyler yapıyorum ama bir türlü butona bir defa basınca birinci led ,2. defa basınca 2. ledi yakamıyorum anlayan biri varsa yardım etsin lütfen ben programları proton ide de yazıyorum sadece onu biliyorum.
 
BASLA:
IF PORTA.0=0 THEN
SAYI=SAYI+1
PAUSE 150
ENDIF


IF SAYI=1 THEN PORTB=00000001
PAUSE 10
IF SAYI=2 THEN PORTB=00000010
GOTO BASLA

Basic dili ile yazdım. İlk basışta 1. led, 2. basışta 2. led yanıyor. Mantık şu: 1 tane değişken tanımlıyoruz, butona basılınca bu değişkenin içindeki sayıyı 1 arttır diyoruz, sayı 1 olursa 1. ledi yak, sayı 2 olursa 2. ledi yak diyoruz.
 
sayı = 1

BASLA:
IF PORTA.0=1 THEN
pause 10
if porta.0=1 then
SAYI=SAYI+1
if sayi > 2 then sayi = 1
endif
ENDIF

IF SAYI=1 THEN PORTB=1
IF SAYI=2 THEN PORTB=2
pause 500

GOTO BASLA

Porta Logic 1 seviyesindeyse
bir sure bekledikten sonra tekrar kontrol edilir hala logic 1 seviyesindeyse

(Bu kodu kullanman lazım yoksa picli devre yapıldıgında kodun iyi calısmaz ben pause 10 yazdım bu butona cok kısa bir sure basılı tuttugunda portu degistirmek icin... pause 10 yerine pause 100, ,pause 1000 deneyebilirsin pause suresi uzadıkca butona basılı tutman gereken surede uzar. aslında daha ileri duzey bir programda pause kullanmak sorunlara yol acar ama bu cok basit bir program oldugunda pause 1000 pause 5000 gibi bir kodun pek fazla bir zararı yok.)

sayı 1 artırılır
sayı 2 den buyukse sayı tekrar 1 yapılır

sayı = 1 ise portb nin 0 pini
sayı = 2 ise portb nin 1 pini
logic 1 yapılır
 
Porta Logic 1 seviyesindeyse
bir sure bekledikten sonra tekrar kontrol edilir hala logic 1 seviyesindeyse

(Bu kodu kullanman lazım yoksa picli devre yapıldıgında kodun iyi calısmaz ben pause 10 yazdım bu butona cok kısa bir sure basılı tuttugunda portu degistirmek icin... pause 10 yerine pause 100, ,pause 1000 deneyebilirsin pause suresi uzadıkca butona basılı tutman gereken surede uzar. aslında daha ileri duzey bir programda pause kullanmak sorunlara yol acar ama bu cok basit bir program oldugunda pause 1000 pause 5000 gibi bir kodun pek fazla bir zararı yok.)

sayı 1 artırılır
sayı 2 den buyukse sayı tekrar 1 yapılır

sayı = 1 ise portb nin 0 pini
sayı = 2 ise portb nin 1 pini
logic 1 yapılır
ben de yeni başladım assembly i kullanıyorum henüz
timer ları kullanabilirsin ya da btfss ya da btfsc ile tuşun kaç kere basıldığını ve ordanda goto koşulsuz yönlendirmesiyle yapabileceğini düşünüyorum...
 
butonu bırakmasını da dikkate alırsanız sonraki basışı algılayabilirsiniz.
SAYI=0
IF PORTA.0 = 1 THEN SAYI=SAYI+1
BIRAK:IF PORTA.0 = 1 THEN GOTO BIRAK -->BUTONU BIRAKMIŞ MI?
IF SAYI>2 THEN SAYI=0 -->SAYIYI BAŞA AL
..
..
..
 

Forum istatistikleri

Konular
127,956
Mesajlar
913,901
Kullanıcılar
449,606
Son üye
rasit.

Yeni konular

Geri
Üst