epromdan veri okuyup değişkene aktarmak

Başlatan ibo1973, 12 Aralık 2008, 13:04:41

ibo1973

epromdan okuduğum verileri tek bir değişkene aktarmak istiyorum

yani özetle yapmak istediğim burda epromdan okuduğum hex değerleri sayıya çevirip bunuda gecikme değişkenine aktarmak  gecikme = 1000 gecikme = 9999 gibi değerleri epromdan okumak aşağıdaki kodu yazdım ama sanırım bi şeyler yanlış .

[code]
zamanlamaoku:
               for b3 = 250 to 255     ' b3 byte olarak tanımlı          
               read b3, w2  ' b3 deki adres den okuma yapar w2 ye aktarır                                                                                                                                                                                        

if w2=$ff then
             gosub dousbin
             endif
if w2 = $1e then
               w2=1 '  1
               gecikme = w2 << 1 ' gecikme word olarak tanımlı
               endif
if w2 = $1f then
               w2=2    '  2
               gecikme = w2 << 1    
               endif
if w2 = $20 then
               w2=3 '  3
               gecikme = w2 << 1
               endif
if w2 = $21 then
               w2=4 '  4      
               gecikme = w2 << 1
               endif
if w2 = $22 then
               w2=5 '  5
               gecikme = w2 << 1
               endif
if w2 = $23 then
               w2=6  '  6
               gecikme = w2 << 1
               endif
if w2 = $24 then
               w2=7 ' 7
               gecikme = w2 << 1
               endif
             
if w2 = $25 then
               w2=8  '  8
               gecikme = w2 << 1
               endif
if w2 = $26 then
              w2=9 '  9
              gecikme = w2 << 1
              endif
if w2 = $27 then
             w2=0  '  0
             gecikme = w2 << 1
             endif
pause 50
next b3

ete

Kod da bir hata yok. Ancak yazının başında 9999 gibi değerleri eepromdan okuyacağını belirtmişsin. Gördüğüm kadarıyla  W2 değişkeni sürekli 8 bitlik değer okuyor ki bu doğru.
Eeprom yalnızca 8 bitlik bilgilerin kayıt ve okumasında müsaade eder. 16 bitlik değerler yüksek ve düşük byte lar olarak iki parçada eeproma kayıt edilirler.

Elinizde WW şeklinde word cinsinden bir değişkeniniz var ise ve bunu eeproma kayıt edecek iseniz,
write adres(8 bit), ww.byte0:pause 10
write adres+1,ww.byte1:pause 10
şeklinde kayıt edebilirsiniz.
Aynı şekilde okur iken,
Read adres,ww.byte0
Read adres,ww.byte1
şeklinde de okursunuz. Yazma komutlarının arkasından 10 ms lik gecikme koymayı ihmal etmeyiniz. İkinci bir yazma işlemine geçmeden yaklaşık 10ms süren 1. yazma işleminin sona ermesi için bu gereklidir. Okumada gecikme koymaya gerek yoktur.

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

ibo1973

ete hocam cevabın için çok teşekkür ederim yazarken bi sorun yok epromu okuduğumda ff ff ff 26 26 26 26 ff değerini görüyorum  hight byte ve low byte olarak okursam değeri epromdaki hex değerleri nasıl sayıya çevirip değişkene aktarıcağımı bilmiyorum

şimdi okuma kısmını yaptık diyelim ww değişkenindeki değer ww=26262626 mı olur öyle olursa bunu değişkene sayı olarak yani gecikme = 9999 nasıl aktarırım?

ete

Bilgi eeproma hex olarak yazılmaz zaten. Elindeki bilgi maksimum 16 bit olmak zorunda. Yani en fazla 65535 değerini tutabilirsin.
Diyelimki elinde WW=64200 gibi bir sayı var.
Bunu ;
WRITE 0,ww.byte0
WRITE 1,ww.byte1
şeklinde eeproma yazıp geriye okur isen
READ 0,ww.byte0
READ 1,ww.Byte1

otomatikman WW=64200 olarak değer WW ye yerleşmiş olacaktır. Ekstra bir işlem yapman gerekmiyor.

İllaki hex üzerinden işlem yapman gerekiyor ise;
BIR=65200/256
SIFIR=65200-(BIR*256)
WRITE 0,SIFIR
WRITE 1,BIR
şeklinde yazarsın.
Okurken ise
READ 0,SIFIR
READ 1,BIR
WW=BIR*256+SIFIR
şeklinde sayıyı yeniden oluşturursun.

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