PicBasic kodu yardim !!!

Başlatan Digimensch, 07 Ocak 2005, 21:27:38

Digimensch

PicBasic kodunda LCD üzerindeki Cursoru bir sola almayi
LCDOUT $FE, $10  
olarak deniyorum ama olmuyor.Acaba ben Örnegin LCD üzerindeki Stringi
MERHABA
sola dogru tek tek silerek nasil gidebilirm??
Yani Klavyeden gönderdigim Veriyi 16F84 algilayacak ve her basisimda
MERHABA yazisindan sola dogru bir karekter silecek.
MERHABA
MERHAB
MERHA
MERH
MER
ME
M
seklinde .
Yada Cursoru saga veya sola LCD üzerinde nasil kaydirmaliyimki istedigim karektere gidip o karekteri degistirebileyim??

DumrulBey

Merhaba,

PIC Basic Pro bilmiyorum! Ama yardımcı olmaya çalışayım. İstediğini sola doğru ilerleyip bir boş karakter basarak yapılabilir. Belki daha iyi çözümü de olabilir. Benim elimden şunlar geliyor:

Önce imleçi (cursor) gizleyelim:
LCDOUT $FE, $0F

Sonra ekranı temizleyip yazıyı yazalım:
LCDOUT $FE,$1,"MERHABA"

İmleç sonda olduğuna göre ilk adımda bir geri gidip boşluk basalım:
LCDOUT $FE, $10," "

İşlemi iki geri giderek tekrarlayalım:
LCDOUT $FE, $10-1," "

Son satır yanlış olabilir. Belki iki satırda halletmek lazım. Ama yukarıda yazdıklarımı bir döngü içerisinde ve geçikme denetimli yapmak lazım. Tabi gecikme yerine tuş denetimi konulabilir. Dediğim gibi bu dili inceliklerini bilmiyorum. Sadece fikir vermek istedim.

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

Digimensch

Saol dostum cevabin icin,
ama su kod
LCDOUT $FE, $10," "
ilk adımda bir geri gidip boşluk basmiyor aksine imlec bosluk birakarak ileri (saga) bir adim gidiyor.
oysa ben bunun tam tersini yapmak istiyorum.
Sola dogru gidip ordaki karakteri silecek.
Yada karekterleri silmesede olur,maksadim Imleci karekterler üzerine saga veya sola dogru kaydirmak gerekli yere geldigimde oraya yeni karekter basmak.
Söyle bir islem yapiyorum.
Kendi yazdigim C++ builder yazilimla  PC 'den girdigim karekterleri serial veri yolu ile LCD de gösteriyorum.Bazen yanlis yazdigim zaman o yanlis karektere kadar ilerleyip (geri veya ileri yönde) o karekteri düzeltmek istiyorum.

DumrulBey

Merhaba,

Vallahi bende microEngineering Labs Inc. yayımladığı 'PIC Basic Pro Compiler 5.02a Manual'in yalancısıyım. Sayfa 102, baştaki bölümde bir tablo var. Orada H'14' komutu sağ, H'10' sol olarak ifade edilmiş. Neyse dili ileri derecede bilen arkadaşlar mutlaka durumu aydınlatacaktır.

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

Digimensch

Insallah yardimci olacak bir arkadas cikar.
neyse cok tesekkürler.

Digimensch

Sorumu yeniliyorum !!!
LCD üzerinde imleci PicBasic kodlariyla istedigim karektere kadar saga veya sola nasil kaydirabilirim?

Ersin

Selam,
Neden once yaziyi yazdirip daha sonra sagdan sola bos karakter yazdirip
yapmiyorsun,LCD yi refresh yapmadan.

axanc

LCDOUT	$FE, $C0, "EEPROM SILINIYOR"
mesela buradaki kod ile direkt olarak ikinci satıra gidilebiliniyor, aynı şekilde o anda kursörün bulunduğu yeri bir değişken de tutarak ve bu değişkenin değerini değiştirerek LCD üzerinde istediğin noktaya gidebilirsin..
LCDOUT	$FE, $80, "KOMUT ALINDI..! "
LCDOUT	$FE, $C0, "TOPLAM ", DEC3 VERINO, $FE, $CB, "/", DEC3 BILGI
Uzmanlık: Bilgisayar Müh. öğrenci Derleyici: PicBasic Pro Compiler Ver. 2.45 Program: Proteus 6.2.5 ve MCSP

Digimensch

Aslinda ben olayi söyle anlatayim:
PC'den yolladigim karekterleri LCD üzerine yazdirabiliyorum.
Ama bazen yanlis karekter gönderdigimde o karektere gidebilmek ve o karekteri degistirebilmek istiyorum.
PC'den yollayacagim 27 karekteri ile LCD ekranini sildirip Imleci 1.Line basina konumlandiriyorum..
Bu kod gayet iyi calisiyor.
if veri = 27 then
 LCDOUT $FE,1   ' LCD'yi sil Line1'e dön
 endif


Su sekildede Imleci bir Posisiyon sola kaydirmayi deniyorum ama olmuyor.
if veri= 8 then
 LCDOUT $FE, $10   'Imleci bir Posisyon sola kaydir
 endif


Simdi sorunum
if veri= 8 then  
islemi gerceklestiginde Imlecin bir  sola kaymasini istiyorum.
Istedigim karektere geldigimdede o karekteri degistrmek istiyorum.
Kendi yazdigim yazilimla PC'den PIC'e istedigim karekterleri  Tus kombinasyon yöntemi ile bastigim tusu LCD'de gösterebiliyorum.

Not:
27 Klavyedeki  Esc  tusunun ascii kodu
8   klavyedeki  <-   tusunun ascii kodu
<-  tusuna bastigimizda otamatikman PIC'e 8 verisi gidiyor.
Esc tusuna bastigimizda otamatikman PIC'e 27 verisi gidiyor.

Digimensch

haydi ustalar su yukardaki sorunuma bir el atin.
bekliyorum.

dr_f

Dostum Print $fe,$10,"" ile kürsörü 1 sola kaydır ve oraya boşluk bas yapıyorsun. Fakat kürsor o noktaya kaymıyor. Bunun için bir sola kaydırmalısın.Yani Print $fe,$10,"":Print $fe,$10....
Kısa bir program.. Portb.0 a bağlı butona her basmanda PIC PROJE_ yazısı sola doğru siliniyor..

device 16f877
xtal=20Mhz
DECLARE LCD_DTPIN PORTB.4
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTB.2
DECLARE LCD_LINES 2
adcon1=7
dim sayi as byte
symbol basilan=portb.0
trisb.0=1
trisC=$00
trisd=$ff
portd=0
sayi=0
print $fe,1
print $fe,1,"PIC PROJE":print $fe,$0e
Delayms 500
ana:
if basilan=0 then
print $fe,$10,"":print $fe,$10
while basilan=0:wend
endif
goto ana

NOT:LCD kısımlarını tanımlamadan hazı bir yazılımda oynama yaptım.Onun için F877 kullandım.Sorry..Ha bir de PicBasic proda yazdım.Adaptasyonu sen yaparsın....

Digimensch

Dostum kullandigin kodda
PRINT=LCDOUT anlamina mi geliyor??
Ben daha önce hic 16f877 kullanmadim.
Ben LCD'ye yazdirma isleminde LCDOUT kullaniyorum acaba bu PRINT ne oluyor??
saygilar

dr_f

Print PicBasicPlus 'ta LCD ye yazdırma işlemi için kullanılan komut. Bunun 16F877 ile bir ilgisi yok. Aynı işlem PicBasicPro' da Lcdout ile yapılıyor.

Digimensch

dr_f;
yazdigin Koddaki
print $fe,$10,"":print $fe,$10

Satirini PicBasicPro koduna söyle cevirdim

LCDOUT $fe,$10,"":LCDOUT $fe,$10

Fakat Pic Basic bu satirda hata veriyor.

Benim yapmak istedigim su:
Ben Klavyeden 8 karekterini gönderdigimde Imlec sola bir karekter kayacak.Her 8 Karekter gönderisimde hep imlac sola dogru kayacak.
Bunun icin söyle bir Kod denedim ama olmuyor.
if veri= 8 then
LCDOUT $fe,$10
endif

Acaba ben her 8 karekterini gönderdigimde LCD üzerindeki imleci nasil sola dogru kaydirabilirim??
Bu sekilde LCD üzerine yazdrma aninda yanlislik yaparsam yanlis yaptigim karektere gidip o karekteri düzeltmek istiyorum.
Umarim anlatabilmisimdir.