Ynt: PicBasic 'de Değişik Bir Sorun, Sanırım PicBasic Sorunlu :)

Başlatan mavikaplan, 05 Ağustos 2012, 02:03:24

mavikaplan

Arkadaşlar 4x3 [4 satır 3 sütun] keypad oluşturdum ancak çok ilginç bir sorun var. Tuş okuma kodlarını şu şekilde yazdığımda program hatasız çalışıyor:
portd=%00001000
tara=portd
if portd.0==1 then sayim=1
if portd.1==1 then sayim=2
if portd.2==1 then sayim=3
portd=%00010000
if portd.0==1 then sayim=4
if portd.1==1 then sayim=5
if portd.2==1 then sayim=6
portd=%00100000
if portd.0==1 then sayim=7
if portd.1==1 then sayim=8
if portd.2==1 then sayim=9
portd=%01000000
if portd.0==1 then sayim=10
if portd.1==1 then sayim=11
if portd.2==1 then sayim=12


Ancak şu şekilde yazıp derlediğimde, devredeki tuşlara basınca 7-Segment Display 'da Anlamsız Rakamlar Görmekteyim :
basla:
portd=%00001000
tara=portd
if portd.0==1 then sayim=1
if portd.1==1 then sayim=2
if portd.2==1 then sayim=3
portd=tara<<1
if portd.0==1 then sayim=4
if portd.1==1 then sayim=5
if portd.2==1 then sayim=6
portd=tara<<1
if portd.0==1 then sayim=7
if portd.1==1 then sayim=8
if portd.2==1 then sayim=9
portd=tara<<1
if portd.0==1 then sayim=10
if portd.1==1 then sayim=11
if portd.2==1 then sayim=12


İki kodunda aynı anlama gelmesi lazım ama bir çalışırken diğeri çalışmıyor sorun ne olabilir?

mesaj birleştirme:: 05 Ağustos 2012, 02:04:52

Devre :

z

2. Programda porta cikis degeri yazarken  tara<<1 tara<<2  tara<<3 yapman lazim
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mavikaplan

Teşekkürler, peki şu şekilde neden olmuyor , tara değişkeni kullanmadan : :)
portd=%00001000
if portd.0==1 then sayim=1
if portd.1==1 then sayim=2
if portd.2==1 then sayim=3
portd=portd<<1
if portd.0==1 then sayim=4
if portd.1==1 then sayim=5
if portd.2==1 then sayim=6
portd=portd<<1
if portd.0==1 then sayim=7
if portd.1==1 then sayim=8
if portd.2==1 then sayim=9
portd=portd<<1
if portd.0==1 then sayim=10
if portd.1==1 then sayim=11
if portd.2==1 then sayim=12


mesaj birleştirme:: 05 Ağustos 2012, 11:25:38

Bilen yok mu arkadaşlar, yukarıdaki kodu yazdığımda neden olmuyor bir fikri olan yok mu? :)


homer380

tus takımı olustururken 7 tane port kullanmaya gerek yok. tus sayısına bağlı olarak daha az port ile aynı tus takımını yapmak mümkün.
söyle bir komut ile sadece 4 port ile değerler okunur ve bize üç tane uc kalır.

tus_degeri  var byte
.
.
.
tus_degeri= portd  ' onluk sistemde değeri gelir ve hangi tusa basıldığı okunur.

istenirse 5 port ile 120 tuslu bir tus takımıda olusturulur bu sistem ile yani klavye elde edilir.(5*4*3*2*1=120 )
6 port ile 720 tus takımı (6*5*4*3*2*1=720)

picpicpic

Alıntı yapılan: homer380 - 05 Ağustos 2012, 15:27:58
tus takımı olustururken 7 tane port kullanmaya gerek yok. tus sayısına bağlı olarak daha az port ile aynı tus takımını yapmak mümkün.
söyle bir komut ile sadece 4 port ile değerler okunur ve bize üç tane uc kalır.

tus_degeri  var byte
.
.
.
tus_degeri= portd  ' onluk sistemde değeri gelir ve hangi tusa basıldığı okunur.

istenirse 5 port ile 120 tuslu bir tus takımıda olusturulur bu sistem ile yani klavye elde edilir.(5*4*3*2*1=120 )
6 port ile 720 tus takımı (6*5*4*3*2*1=720)

dediğiniz yöntemde araya başka bir entegre koyuyor musunuz? pek anlayamadım yöntemi, sadece giriş için port kullanıyorsunuz, taramayı nasıl gerçekleştiriyorsunuz?


homer380

Shift register da olur. bende bugün fark ettim biraz diyot kullanarakta oluyor.proteusda oluyor ama gercekte nasıl olur bilmiyorum

mavikaplan

Arkadaşlar ben yuarda sorduğum sorunun cevabını alamadım? Bilen yok mu?

OG

mavikaplan, isis çizimi ekle ve ne yapmak istediğini yaz yardımcı olalım. Yalnız ben proton kullanıyorum, o kadar kod yerine InKey komutu yeterlidir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mavikaplan

Sorun picbasic derleyicisinden dolayı kaynaklanıyormuş, programda hata yokmuş. Inkey komutuyla daha kısa yolla yapılabileceğini söyediniz picbasic 'de inkey komutu var mı? Ben daha önce hiç okumadım böyle bir komutun olduğunu.

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.