PBP Eprom okuma yazma sorusu

Başlatan ByTEK, 03 Haziran 2023, 15:57:26

ByTEK

Arkadaşlar PBP kullanmıyorum. bir arkadaşımın kodundaki mantık hatasını ararken gözüme ilişti. WORD tipindeki bir değişkeni 2000 olunca program akışını değiştiriyor. Fakat çabuk 2000 olduğunu söyledi. normalde günde en fazla 4 kez sayac artmış olması lazım. buda yaklaşık 400 gün demek. ama yaklaşık 100 günde sayac 2000 olduğunu belirtti. Her neyse aşağıdaki kod gözüme takıldı sanki hatalı gibi ? siz nediyorsunuz ?

DEMO VAR WORD

epromdan okurken 
READ 15,DEMO.BYTE1,DEMO.BYTE0

eproma yazarken
Write 15,DEMO.BYTE1,DEMO.BYTE0:Pause 20

yukarıdaki şekilde eproma okuyup yazıyor. Sanki yanlışlık var gibi geldi bana.

burada DEMO.BYTE0 ve DEMO.BYTE1 sanki yanlış yerde kullanılmış gibi geldi. önce BYTE0 sonra BYTE1 diye düşündüm. Deneme şansım yok sadece bu kısımda yazım hatası mı var merak ettim.

aşağıdaki gibi olması gerekmiyor mu ?

DEMO VAR WORD

epromdan okurken 
READ 15,DEMO.BYTE0,DEMO.BYTE1

eproma yazarken
Write 15,DEMO.BYTE0,DEMO.BYTE1:Pause 20

ete

Aslında yazma sırası kullanıcının keyfine kalmış bir mesele. Yalnızca yazdığın sırada okuma yapman lazım ona dikkat etmek gerekir. Komutlar yanlış değil.
Şunuda unutmayın. 8 bit çalışan ve 16 bit yazılan heryerde önce HIGH Byte yazılır.

Sayac ile ilgili kodu da verseydin ona da bir yorum yapardım.
Ama şöyle düşünmek gerek , program yön değiştirdi ise sayac 2000'e gelmiş demektir.
Bu konuda pek çok kişi hata yapabiliyor. Gözden kaçan bir şey vardır mutlaka.

Ete

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

Muyat

Ete hocam şu kodla üstteki mesajda arkadaşın açtıgı kod arasındaki fark nedir?
Bir arkadaşın meesajında aşagıdaki gibi görmüştüm.Ayrı ayrı adreslere yazmış.
Ayrı ayrı adreslere yazdırmakla ,aynı adrese yazdırmak arasında bir fark var mıdır

okuma kısmı:

okuma kısmı:
read 15,DEMO.highbyte
read 16,DEMO.lowbyte

IF DEMO=65535 THEN DEMO=0
WHILE DEMO=2000:WEND

yazma kısmı
DEMO=DEMO+1
 write 15, DEMO.highbyte: Pause 10
write 16, DEMO.lowbyte: Pause 10
WHILE DEMO=2000:WEND

ete

Hatırladığım ilk Basic versiyonlarında yan yana iki byte yazılmasına müsaade edilmiyordu.
Yanlışda hatırlıyor olabilirim. Be şekil yazma taa oralardan gelen alışkanlık olabilir.
Birde her yazma emrinden sonra 10 ms yazma süresi verin diye bir açıklama var. Pek çok kişi bu açıklamaya uymak adına ayrı ayrı yazıp her birine 10ms gecikme koyuyorlarki be işlem şu anda gereksiz.
işin doğrusu;
write 15,DEMO.Highbyte, DEMO.Lowbyte:pause 10
Read 15,Demo.Highbyte, DEMO.Lowbyte
yada
write 15,DEMO.Byte1, DEMO.Byte0:pause 10
Read 15,Demo.Byte1, DEMO.Byte0
Yazma işlemi 10 ms yazma süresi ister ama okuma istemez bunada dikkat etmek gerekiyor. Pek çok kişi okuma ya da 10ms gecikme koyuyor ki buda gereksiz.

Aynı anda birden fazla yazma komutunu bir defada verip sonuna 10ms süre vermeniz de doğru işlemdir. Önemli olan 10ms den önce yazma işinin tekrarlanmamış olmasıdır.

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

ByTEK

Bilgilendirme için teşekkürler üstat