protonda dizi nasıl yapılır?

Başlatan emrah, 27 Aralık 2010, 11:07:01

emrah

slm,
protonda oluşturdugumuz adresleri nasıl dizi şeklinde yaparız?   örneğin;     dim as veri byte   şeklinde oluşturdugum veri alanını nasıl sırası ile çogaltabilirim ?   picbasic de  ;  veri var byte [30]  oldugu gibi ?

alayli

Dim veri[30] as Byte
şeklinde yapabilirsin...
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

emrah


emrah

hocam bi sorum daha olcak,  pc ile pic arasında seri iletişim yapıyorum pc den gönderdigim yazıları bu seri alanlar içine yükleyecem fakat bunları nasıl kayıt edebilirim ör; 50  adet harfi  18f452  eepromuna  sıgarmı ? yoksa hangi yardımcı entegre ile saklayabilirim ve o entegeye protonda nasıl bilgi gönderip okuyabilirim? 

emrah

SERIN2 PORTb.1, 3313, [wait ("SIFRE"), str gelen\32\"."]     picbasıc te  gelen seri bilgiyi sırayla  gelen degişken dizisine aktamaktadır.  protonda bu olay nasıl olmalı  bilen arkadaş varmı ??

muhittin_kaplan


alayli

Komut ismi haricinde aynı. Proton+ Serin2'yi tanımaz. Serin yazman yeterlidir. Picbasic ile Proton+ arasındaki seri komut dönüşümleri şöyledir:

Picbasic => Proton+

Serin     => Rsin
Serout   => Rsout
Serin2    => Serin
Serout2  => Serout


Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

emrah

serin2 yerine zaten hserin kullnadım . fakat bu satırda derleyıcı hata veriyor  ??   "yazım hatası" şeklinde hata veriyor !

HSERIN 1000,BASLA,[wait ("SIFRE"), GELEN\32\"."]

emrah


emrah

profesyonel üyeler, yokmu yardım? acil lazım  vize projem

ete

#10
"HSERIN 1000,BASLA,[wait ("SIFRE"), GELEN\32\"."]"
Bu komutla tam olarak ne yapmak istiyorsun?
Derleyici GELEN\32\"." şeklindeki komut dizinini tanımıyor. Yanlışlık burada. Şayet   \32\"."   kısmını silersen hata kalkıyor. Ama o zamanda amacından uzaklaşıyorsun anladığım kadarı ile. Programın geri tarafı olmayınca bir yorum yapmak zor gerçekten.
Şayet GELEN değişkenini bir string-dizi değişkeni olarak tanımladı isen genelde GELEN\10 gibi bir format ilk 10 dizinin alınıp değişkenlere yerleştirilmesi için kullanılıyor. Ancak dediğim gibi değişkenin bir string değişkeni olması gerek.
Peşinden gelen \"." şeklindeki tanımlama bence yanlış. Bu şekilde bir kullanım görmedim.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

emrah

ete hocam GELEN  dizisini  pc den gönderdigim mesajı lcd ekranda göstermek için kullanacagım.  örnegin 32 adet GELEN adresi oluşturdum

dim gelen [32] as byte şeklinde,  "HSERIN 1000,BASLA,[wait ("SIFRE"), GELEN\32\"."]" ,  şifre karakteri geldikten sonra gelen mesajı  GELEN degişkenleri içine yerleştirip en sonda "." işareti geldiginde   bilgi alımı sonu olarak belirttim pic basikce bu komut çalısıyor, ben satırda birşey yazmayı unutmusum STR komutunu.  protonda  STR yi nasıl yazacagımı bulamadım.

picbasic te çalısan komutu yazıyorum,   SERIN2 PORTb.1, 3313, [wait ("SIFRE"), str gelen\32\"."]     

protonda     serin2 yerine HSERIN  kullanıyorum fakat ondan sonrasını  yazamadım bir türlü  STR nasıl kullanılmalı  protonda ?

alayli

ete hocanın da dediği gibi "Hserin .................\32\"."] şeklindeki yazım hataya sebep oluyor. Picbasic'i bilmem ama Proton+'da seri alım yaparken sonda gelecek özel bir karakteri (sen "." yı kullanıyorsun anladığım kadarıyla) algılatamazsın. Ki bence gerek de yok. Gelen karakterleri 2x16 LCD de göstereceğini farzedersek söyle bir yol izleyebilirsin:

1- Her bir satır için 16 şar adet değişken tanımla
2- Komutu çalıştırıp datayı almadan önce değişkenleri temizle
3- Komutu çalıştırıp kaç byt geldiyse al ve lcd de göster.

Kodla açıklamak gerekirse:

Dim gelen1[16] as Byte
Dim gelen2[16] as Byte

....
.....
......


BASLA:
Clear gelen1
Clear gelen2
HSerIn 1000,BASLA,[Wait ("SIFRE"),Str gelen1,Str gelen2]
Print At 1,1, Str gelen1
Print At 2,1, Str gelen2 

GoTo BASLA


Bu şekilde bir yapı oluşturduğunda, PC'den ister 1 karakter ister 32 karakter gönder; gönderdiklerinin hepsini LCD'de görürsün. Zaten başlangıçta "SIFRE" ile senkronu tutturuyorsun. Sonda ayrıca "." aramanın gereği yok.
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

alayli

Belirtmeyi unuttum. Her ne kadar PC'den ister 1 karakter gönder, ister 32 karakter gönder desem de; yukarıdaki komut yapısında toplamda 1000ms içinde 32 karakterinde gönderilmesi gerekir. Yani Hserin komutu "SIFRE" yi aldıktan sonra 1000ms içinde geri kalan 16+16 baytlık gelen1 ve gelen2 dizilerini de bekler. Eğer amacın PC klavyesinde yazdığını aynen LCD'de görmek ise aşağıdaki kod daha uygun.

Dim gelen As Byte
Dim x     As Byte

x = 0

BASLA:
HSerIn [gelen]
If x < 33 Then
   Inc x
Else
   x = 0 : Cls : DelayMS 30
EndIf      
If x < 17 Then 
   Print At 1,x,gelen
Else
   Print At 2,(X-16), gelen
EndIf      
Clear gelen
GoTo BASLA
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

emrah

#14
cevap için teşekkürler.  bir sorum daha olacak.  bu ekrana gönderdigim yazıları  epromda nasıl saklayabilirim? 18f452 epromu yetersiz mi gelir 32 karekter için ?   hangi I2C entegresi kullanmalıyım ve kodlar nasıl olmalı.  siteden aaştırıyorum fkat anlayacam kadar bi bilgi bulamadım.

sonrakı verdiginiz programı GLCD de deniyorum fakat yazılar gelmıyor karsıkı bir şekil oluyor, GLCD de farklı olacak sanırım. 

birde şöyle deniyorum

BASLA
     
      HSerIn [STR GELEN]

    Print Font Berna____10
   Print At 10,5,STR GELEN

GOTO BASLA


bilgisayardan 1. kez göndere basıyorum ekrana yazı gelmiyor, 2. kez bastıgımda aynı yazıyı iki kez ekrana yazıyor neden olabilir bu sorun ?