avatar_Mucit23

Basicde Shıftout komutu hata veriyor

Başlatan Mucit23, 16 Şubat 2012, 10:01:30

Mucit23

Merhabalar ete hocam.
Basicde bir kod derlerken Shıftout komutları hata veriyor.

Mesela  SHIFTOUT DTA,CLK,0,[VERI]  gibi bir komut kullanınca mcs Bad Expression Yani kötü ifadeler diyor.Hatanın sebebini çözemiyorum ama MCS neden böyle bir hata versinki. Hadi data clock isimlerinde sorun olsa shiftout ve shiftin komutlarını kapattığımda program yine derlenmezdi. Ben kendim data ve clock bacaklarını verdiğim isimlerle erişebiliyorum. Anlamadım gitti dün akşamdan beri uğraşıyorum çözemedim. Sorun ne olabilir.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Bir çok sebebi olabilir. Sırası ile bakalım istersen;
Komutumuz;
SHIFTOUT DTA,CLK,0,[VERI]
Muhtemel hatalar;
DTA ifadesi symbol olarak tanımlanmamıştır yada farklı tanımlanmıştır
CLK ifadesi symbol olarak tanımlanmamış yada farklı tanımlanmıştır
VERI isimli değişken tanımlanmamıştır yada farklı tanımlanmıştır.

Bu üçünün dışında bir alternatif yok. Ancak bazen basic derleyicisi sapıtıyor ve başka bir hatayı hata olmayan satırda varmış gibi gösteriyor. Bu gibi durumlarda ben hata satırını iyice incelerim. Hata yoksa (bana göre) o satırı kapatır yeniden derlerim. Şayet sorun farklı satırdaki hata dan kaynaklanıyor ise mutlaka program başka bir satırda yine hata gösterecektir. Bu gibi durumlarda genelde satır kapatarak gerçek hatalı satırı bulmaya çalışırım. Bu tür hatalar genelde tanımlanmamış değişkenlerden kaynaklanır. 

Ete

Mucit23

Hocam Sadece o komutlardan kaynaklanıyor. Sizin dediklerinize göre bir hatam vardı dta ve clk isimlerini Symbol olarak tanımlamıştım. Onları diğer türlü tanımladım dta var porte.0 gibi tanımladım sorun aynı. Üstelik tanımlamalarla I2C komutlarıda çalışmıyor. Ama shıftout komutlarıyla birlikte direk pin isimlerini verince düzeldi.  SHIFTOUT PORTC.0, PORTC.1,0,[VERI] Şeklinde düzeliyor. Tanımlamalarla ne ilişkisi var anlamıyorum. Bu arada programı MPASM ile derliyorum. Bi ilişkisi olabilirmi.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Bazı isimleri derleyicilerde kullanamazsın. Mesala BIN veya ON  isimli bir değişken tanımlayamazsın. Bu reserved word yani önceden tanımlanmış bir kelimedir. Anlamıda Binary ifadesinin kısaltılmışıdır. Bunun gibi MPASM de CLK ve DTA kelimelerini rezerve etmiş olabilir.

Ete

Mucit23

Anladım hocam. Bakalım daha neler neler görüceğiz. Yaş arttıkça tecrübelerde artıyor uğraşa uğraşa :)
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Mucit23

hocam yeni bir konu açma gereği duymadım. Aslında pek lazım olmuyor ama lazım oluncada sorun oluyor. Belki bilginiz vardır. PBPde 4X20 LCD de kursörü açıp yanık sönük hale getiriyorum. Böyle yapınca kursör ekranda rastgele hareket ediyor. Varmı bunun bir çözümü?
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Kursor ekranda hangi adrese yazı yazılacak ise orada gözükür.
Dolayısıyla nereye yazacaksan orayı adresler sonra kursorü açarsın. Sonra kapatırsın. Ben genellikle şöyle yaparım.
LCDOUT $fe,$86  'ekranda yazıyı yazdıracağım adres.
LCDOUT $FE, $0E 'underline kursör açıldı
Pause 120
LCDOUT $FE, $0C  'kursör kapandı
sonra burada yazılacakları yazarım
program tekrar başa dönünce aynı işlemleri tekrarlar.

Ete




Mucit23

Anladım hocam. Kursör açıkken başka yerlere yazı yazarken kursörü kapatmak gerekiyor. yoksa kursör rast gele geziyor anladığım kadarıyla. Fakat 120ms beklemek benim için çok fazla. Hata hiç bekleme yapamam. Birçok işimi bu aksatır. Bunun yerine başka ne yapabiliriz. Mesela ekrana devamlı güncellenen bir değer girerken aynı anda lcd ekranın başka bir tarafında kursörü yanık sönü hale getirebilmek istiyorum. Acaba yanıp sönen kursörü kendimmi yapayım?
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Benim yaptığım yanıp sönen kursör imajı yaratmak idi. Kursörü sabit yaparsan bekletmeye gerek kalmaz.
Bütün mesele yazdıracağın zaman aç yazma bitince kapat. Başka çaresi yok.

Ete

Mucit23

#9
Bende kendim yaptım. Bu şekilde kontrol altında tuttum kursörü. Sanki böyle daha iyi oldu. En azından yanıp sönme hızını ayarlayabiliyorum :)
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Powered by EzPortal