T

KEYPAD UYGULAMASI

Başlatan toys-23, 20 Kasım 2011, 22:45:43

toys-23

Hocam tekrar merhabalar

IF TUS=>0 and TUS<10 then TUS=TUS+48
IF TUS>9 and tus<16 then TUS=TUS+55

Bu satırla sanırım altıncı mesajda siz vermiştiniz  abcd  bunlarıda yukarıda yine sizden öğrenmiştim yoksa yine yazamadım işin açıkçası bir tuş takımı yapıp tam olarak öğrenmek istiyorum abcd,  şifrelide kilitde gerekli değil aslında.olmasada olur.
Ekrana yazamadım yan yana  yani değişik şekillerde yazdım ya toplama işlemi yaptı ya çarpma yada sayıyı bir artırdı sizin vaktinizi almamak için 2 gün onu oraya bunu buraya yazıp durdum sonunda pes edip size sordum.

iyi akşamlar

ete

O zaman sorulan soruya verilecek cevap bu idi. Çünki sorun tus değerinin boş (yani sıfır) olması ile gerçek sıfır rakamı arasındaki ayırımın yapılması söz konusu idi. Ancak bu son verdiğin versiyonda tuşların rakam değerlerini kullanmışsın. Bu durumda o satırlar bu programada ters geliyor yada anlamsız kalıyor.
Ayrıca benim verdiğim bir örnek idi. Önemli olan hiç tuşa basılmamaış konum ile gerçek sıfır rakam tuşuna basılmış konumun bir birinden ayırd edilmesidir. Bunu bir sürü yolla yapabilirsin. Örnek olarak TUS=255 ile başlarsın. Şayet sıfır tuşuna basılmış ise TUS=0 olacaktır. Taramadan sonra şayet hala TUS=255 ise hiç bir tusa basılmadığı kolaylıkla ayırd edilebilir. Yada her kesin yaptığı gibi tus=0 ise hiç tuşa basılmamış, tus=10 ise sıfır tuşuna basılmış olarak algılarsın. Aşağıdaki örnekte bunu kullanacağız.

Şimdi sana düşen;
- bu tuş takımı ile hangi karekterleri girmek istediğini
- ABCDEF tuşlarını kullanacakmısın? Yani 10-11-12-13-14-15 rakamlarınıda tuş olarak kullanacakmısın ?
- "+" ve "#" işaretlerini açıklamamışsın bunları kullanacakmısın kullanacak isen ne amaçla kullanacaksın.

Görüyorsun hep amacını soruyorum. Bunları verdiğin açıklamada açıkça belirtirsen işimiz kolaylaşır.
Aslında o kadar kolayki, bir önceki menduh için yazdığım açıklamaları dikkatlice okursan kolaylıkla bunu yapabilirsin.
Unutma basit bir tuş takımı telefon tipi tuş takımıdır. En kullanışlı olanlardan birisidir. Tuş takımında 0-9 arası rakam tuşları yanında "*" tuşu ile "#" tuşuda bulunmaktadır. Birisini tek tek silme diğerinide komple silme şeklinde kullanırsan bu iş hallolur.
İllaki birde enter tuşu tanımlamak istersen ABCDEF gibi ilave tuş değerleride mevcut. "#" ve "*" tuşları yanlış hatırlamıyorsam 11 ve 12 değerlerine karşılık gelmektedir. O halde 13-14-15 tuşlarınıdan birini ENTER için kullanırsın olur biter.
Tuş kontrolünde genelde sıfır tuşu 10 ile belirleniyor. Ama işlem yaparken bu sıfır olarak kullanılıyor. Sende öyle yap.
Toparlarsak,
Rakam tuşlarına basıldığı zaman sıfır için 10 değerini kullan. Hiç tuşa basılmaz ise TUS=0 olsun.
"*" tuşuna basıldığı zaman komple silme yaptır
"#" tuşuna basıldığı zaman tek hane sildir.
"ENTER" tuşu olarak 13 rakamını kullan ve TUS=13 oluncada ENTER işleminde ne yapmak istiyorsan onu gerçekleştir.
Bu durumda işlem sırası şöyle olmalı;

IF TUS=0 THEN ATLA  '....Yani hiç tuşa basılmamış ise bir iş yapmadan çık
IF TUS=12 THEN        '.......Yani * Tuşu ise Komple Silme yaptır
   SAYI=0
   TUS=0
   GOTO ATLA
ENDIF

IF TUS=11 THEN         '.....Yani  # Tuşu ise tek hane sildir.
   SAYI=SAYI/10
   TUS=0
   GOTO ATLA
ENDIF
IF TUS=13 THEN GOTO ENTER
IF TUS=10 THEN TUS=0
SAYI=SAYI*10+TUS
LCDOUT $FE,$C0,"SAYI=",DEC SAYI,"  "
ATLA:
GOTO BASLA


Hepsi bu kadar.
Ete

toys-23

ETE Hocam iyi akşamlar
Hocam şimdi ben bunun neresinde yanlış yapuyorum iki gündürlü yine yerlerini değişip durdum yetmedi verdiğiniz kodları olduğu gibi kopyalayıp yapıştırdım yinede 1 tuşuna basınca 29127   2 tuşuna basınca 58254 gibi diğer tuşlarada garip garip şeyler yazıyor hani tuş takımı şifreli kilitten vazgeçtimde bunu çözene kadar uyku kalmadı yinede yapamadım bi türlü.

IF PORTD.0 THEN TUS = %00001110
IF PORTD.1 THEN TUS = %00000000
IF PORTD.2 THEN TUS = %00001111
IF PORTD.3 THEN TUS = %00001101
GOTO LCDGOSTER
RETURN
lcdgoster:
IF TUS=0 THEN ATLA  '....Yani hiç tuşa basılmamış ise bir iş yapmadan çık
IF TUS=12 THEN        '.......Yani * Tuşu ise Komple Silme yaptır
   SAYI=0
   TUS=0
   GOTO ATLA
ENDIF

IF TUS=11 THEN         '.....Yani  # Tuşu ise tek hane sildir.
   SAYI=SAYI/10
   TUS=0
   GOTO ATLA
ENDIF
IF TUS=10 THEN TUS=0
SAYI=SAYI*10+TUS
LCDOUT $FE,$C0,"SAYI=",DEC SAYI,"  "
ATLA:
GOTO BASLA

ete

Buraya yazdıkların zaten benim yazdığım kod parçası. Önemliolan kodun diğer kısmı.
Yarım kod verme alışkanlığını bırakman lazım. Hata bir yerde var ama sen ancak ufak bir parçasını buraya koyuyorsun.
Bu kadar açıklama ile bir şey yapılması mümkün değil  maalesef.
Hatta bana kalırsa tüm programı ve varsa simulasyon dosyasınıda eklesen fena olmaz doğrusu.

Ete


Powered by EzPortal