değişkenini word olması durumunda arıza çıkıyor

Başlatan canbulut, 03 Ekim 2020, 17:21:50

canbulut

arkadaslar selam bir yerde takıldım yardımlarınızı rica ediyorum.
adr değişkenini word tipinde tanımlarsam çalışmıyor. byte tipinde tanımlarsam çalışıyor.arıza olarak ne yapıyor
derseniz son karekteri bütün katara yayıyor.yani str okunankatar="9999999 gibi oluyor halbuki ben "0123456789"
olmasını beklerdim fakat değişkenin word tanımlı olması şart. değerli yardımlarınız için
şimdiden teşekkürler.
DEFINE I2C_SLOW 1 

KONT  CON %10100000
I     VAR byte
adr var word
yazilankatar var byte [12]
okunankatar var byte [12]
SYMBOL SCL=PORTC.3
SYMBOL SDA=PORTC.4
i =0 
adr=0 
for i=0 to 9
yazilankatar[i]=0
next i

yazilankatar[0]="0"
yazilankatar[1]="1"  
yazilankatar[2]="2"
yazilankatar[3]="3"
yazilankatar[4]="4"
yazilankatar[5]="5"  
yazilankatar[6]="6"
yazilankatar[7]="7"
yazilankatar[8]="8"
yazilankatar[9]="9"

   LCDOUT $FE,1 ,"ilk:",  str yazilankatar\10
PAUSE 2000  '2 sn bekledik 
i =0  

for i=0 to 9
okunankatar[i]=0
next i
i =0
pause 300
BASLA:  
for i =0 to 9 step 1
        I2CWRITE SDA,SCL,KONT,adr,[yazilankatar[i]]
         pause 10 
         adr=adr+1 
next  I
I=0
ADR=0
for i =0 to 9 step 1
           I2CREAD SDA,SCL,KONT,adr,[okunankatar[i]]
           LCDOUT $FE,1,"1.okunan[",dec ADR,"]:", okunankatar[I]
           LCDOUT $fe,$C0,STR OKUNANKATAR\10
           PAUSE 1000 
            adr=adr+1
next  I
        LCDOUT $FE,1,okunankatar[0], okunankatar[1],okunankatar[2],okunankatar[3],okunankatar[4],okunankatar[5],okunankatar[6], okunankatar[7],okunankatar[8],okunankatar[9] 
        pause 1500 
bitir:
end

ete

Bazı epromlarda adres değeri byte ölçüsünde bazılarında ise Word büyüklüğündedir.
Bu durumda adres değeri byte ölçüsünde ise adres ölçüsü mutlaka byte olmalıdır.
Ama adres değeri word ölçüsünde ise word olmalıdır.
Hangi eproma yazdığını okuduğunu belirtmemişsin. Bu durumda yazılan epromun kapasitesi nedir adres değeri ne omalıdır anlamamız ve bir yorum yapmamız mümkün gözükmüyor.
Programda ne port tanımlaması ne sigorta ayarı bulunmuyor. Daha da önemlisi programın hangi OSC frekansında çalıştığı da belirtilmemiş. Bu durumda bit gönderme hızı neye göre tespit edilecek. Anlayacağın bir sürü aksaklık bir araya gelmiş gözüküyor.

Her programın bir register yerleştirme gecikmesi olması gerekir. Bu genelde tanımlamaların hemen ardından verilir ve süre en azından 150-200 ms olmalıdır. Bu süre içinde işlemci (ROM'u) tanımlanan registerleri hafızaya yerleştirir. Bu işlem an azından 150ms dolayında tutar. Bu süreyi vermezseniz ufak tefek sıkıntılarıda kabul etmeniz gerekiyor. Sen 300 ms lik bir gecikme koymuşsun ama programınbir kısmını çalıştırdıktan sonra bu bir işe yaramayan gecikme oluyor. Doğru yeri değişken tanımlamalarının bittiği satır olacaktı.

Ete

Powered by EzPortal