BUTON İLE MENU OLUŞTURMA

Başlatan yusufrov, 03 Ocak 2016, 22:00:35

yusufrov

Merhaba Arkadaşlar,

2 adet buton bağlayıp bu butonlara 6 kademe yapıp butona her bastıgımda kademe 1 artacak son kademede başa dönecek ve bu durumu lcd de yazacak bir yazılım tasarlayamadım. Hatta hiç başlayamadım bile
butona bastıgım degeri bir regiser a kaydedip oradan işlemlerimi yurutmek istiyorum.

buton1
buton2

buton1=1 oldugunda ekranda bunu kademe1
butona tekrar basıldıgında kademe 2 yazacak ve 6 ya geldiğinde başa dönecek.

şimdi herkes yazdıgını gönder diyecek ama dediğim gibi yazamadı.

buton bastıgında ki durumu nasıl kaydedecegimi bulamadım.


KADEME VAR BYTE
DONGU:

IF BUTON1=1 THEN MENU

GOTO DONGU:

MENU:
KADEME=KADEME+1
KADEME>6=1

GOTO DONGU







Beysis

Alıntı yapılan: yusufrov - 03 Ocak 2016, 22:00:35
Merhaba Arkadaşlar,

2 adet buton bağlayıp bu butonlara 6 kademe yapıp butona her bastıgımda kademe 1 artacak son kademede başa dönecek ve bu durumu lcd de yazacak bir yazılım tasarlayamadım. Hatta hiç başlayamadım bile
butona bastıgım degeri bir regiser a kaydedip oradan işlemlerimi yurutmek istiyorum.

buton1
buton2

buton1=1 oldugunda ekranda bunu kademe1
butona tekrar basıldıgında kademe 2 yazacak ve 6 ya geldiğinde başa dönecek.

şimdi herkes yazdıgını gönder diyecek ama dediğim gibi yazamadı.

buton bastıgında ki durumu nasıl kaydedecegimi bulamadım.


KADEME VAR BYTE
DONGU:

IF BUTON1=1 THEN MENU

GOTO DONGU:

MENU:
KADEME=KADEME+1
KADEME>6=1

GOTO DONGU

KADEME VAR BYTE
DONGU:

IF BUTON1=1 THEN
GOTO MENU
WHILE BUTON1=1
WEND
ENDIF
GOTO DONGU

MENU:
IF KADEME >= 6 THEN
KADEME=1
GOTO DONGU
ELSE
KADEME+=1    'YADA KADEME=KADEME + 1'
ENDIF

ete

#2
Beysis,
Eski bir konuyu canlandırmışsın. Enteresan ki bu konu benimde gözümden kaçmış herhalde. O tarihlerde rahatsızdım pek siteye giremiyordum o döneme denk gelmiş herhalde.
Şimdi yazıklarındaki kusurları açıklamak isterim. Öğrenenler yanlış şeyler öğrenmesinler diye.
Amaç bir sayıya bağlı menü sistemi oluşturmak ve o sayıyı da buton yardımı ile artırmak olayımız budur.
Şimdi ilk kusura bakalım;
IF BUTON1=1 THEN
GOTO MENU
WHILE BUTON1=1
WEND
ENDIF

Buton1 e basılırsa buton pini 1 oluyormuş. Bu tamam ama işin doğrusu daima butonları pullup lı olarak kullanmaktır. Yani butona basınca buton pini LOW olmalıdır. Neden bunu tercih ediyoruz. Birincisi işlemcilerde dahili Pullup dirençleri vardır buton bağlantılarında ekstra malzeme kullanmadan bu dirençleri yazılımla aktif hale getirebiliriz. İkincisi butonların diğer uçlarına GND taşırız. Buda kablolamada çok yararlı olur bize. GND her tarafta olan bir şeydir ve size bağlantı kolaylığı sağlar.
Diyelimki senin yazdığın gibi kullandık. Sen butona basılınca GOTO MENU demişsin. Buraya kadar doğru. Ama program MENU etiketine giderse hiç bir zaman oradan geri döndüğünde alttaki ;
WHILE BUTON1=1
WEND
Satırlarını göremeyecektir. Bu durumda bu yazdıkların doğru olmuyor. Şayet GOSUB MENU dese idin bu satırlar doğru olurdu. Zira program MENU etiketine gidip orada RETURN gördüğünde geri dönüp alt satırları değerlendirebilecek idi.
Şimdi MENU etiketi altına bakalım;
MENU:
IF KADEME >= 6 THEN
KADEME=1
GOTO DONGU
ELSE
KADEME+=1    'YADA KADEME=KADEME + 1'
ENDIF

Bir defa son menu limiti 6 ise ki bu kullanılacak bir menu alternatifi oluyor o zaman IF KADEME >= 6 THEN şeklinde yazamazsın IF KADEME > 6 THEN şeklinde yazman gerekiyor. Yani 6 aşıldığı zaman bu işlem yapılmalıdır.
Basic de KADEME +=1 şeklinde bir ifade yoktur. Direk yazacaksın KADEME=KADEME+1 şeklinde.
KADEME 6 dan büyük ise altına GOTO Döngü demişsin ama 6 dan küçük ise ne olacak?  Kademe değeri bir artırılacak ama dönüş eksik kalmış öyle değilmi.

Bu kadar açıklamadan sonra ben olsam nasıl yapardım onu göstereyim.
KADEME=1
BASLA:
IF BUTON1=0 THEN
  KADEME=KADEME+1
  IF KADEME=7 THEN KADEME=1
  WHILE BUTON1=0:WEND
  pAUSE 50
ENDIF

LCDOUT $FE,$80,"KADEME=",DEC1 KADEME
SELECT CASE KADEME 'KADEME DEĞERİNE BAĞLI OLARAK KONUM SEÇ
CASE 1
  GOTO BIRINCI 'PROGRAM
 
CASE 2
   GOTO IKINCI 'PROGRAM
   
CASE 3
   GOTO UCUNCU 
   
CASE 4
   GOTO DORDUNCU
   
CASE 5
   GOTO BESINCI
   
CASE 6
   GOTO ALTINCI

END SELECT

GOTO BASLA

Burada kademe seçimlerinde program ilgili bölümlere gosub ile gidip Return ile dönebilir. Yazdığım şekilde goto ile gidip GOTO BASLA şeklinde de dönebilir.

Program yaarken mümkün olduğunca derli toplu fazla dallandırmadan program yazmak her zaman iyi sonuç almanızı ve programa hakim olmanızı sağlar. Fazla dallanma hem stack sorunu yaratabilir hemde takibinizi zorlaştırır.
Hepsi bu kadar.

Ete

Powered by EzPortal