13 Mart 2017 Pazartesi

pic basic pro string dizi ile eeproma kayit


Bir projemde eprom alanının yaklaşık 100 adresine bazı değerleri kaydetmem gerekiyordu. İlk kodlama aşamasında aşağıdaki yapıyı kullandım. Daha sonra kodlama bittiğinde bu satırlar gözüme batmaya başladı. Ayrıca program boyutunu da artırıyorlardı. Bunları string dizi ile kayıt edebilirim diye düşündüm.

WRITE 0, NO[0]:PAUSE 10 ' NO LAR YAZILIYOR...
WRITE 1, NO[1]:PAUSE 10
WRITE 2, NO[2]:PAUSE 10
WRITE 3, NO[3]:PAUSE 10
WRITE 4, NO[4]:PAUSE 10
WRITE 5, NO[5]:PAUSE 10
WRITE 6, NO[6]:PAUSE 10
WRITE 7, NO[7]:PAUSE 10
WRITE 8, NO[8]:PAUSE 10
WRITE 9, NO[9]:PAUSE 10
WRITE 10, NO[10]:PAUSE 10

Yukarıda ilk programlamada kullandığım 11 satır görülüyor ve fazladan pause kullanmak yerine aşağıdaki dizi yöntemiyle kod optimize edilmiş olur ve sadece 5 satırla aynı iş yapılabilir. Aynı yöntemle okumada yapılabilir:

ADR VAR BYTE
NO VAR BYTE[100]

NO_KAYIT:

ADR=0
FOR ADR=0 TO 10 

WRITE ADR, NO[ADR]
PAUSE 10 

NEXT ADR


Tek adr değişkeni her yerde kullanabilirsiniz. Tabiki kullanmadan önce sıfırlamayı unutmayın.

Şimdi biraz daha karışık bir eproma kayıdı inceleyelim:

Yukarıdaki örnekte NO değişkeni en fazla 11 değer alabiliyor. NO[10] şeklinde düşünebiliriz.

Peki NO değişkenini 20 ve 30 arası eproma kaydetmek istersek ne yapmalıyız. Çıkarma işlemi size yardımcı olacaktır. Farklı hafıza alanlarında ulaşmak için toplamada kullanılabilir.

ADR=0
FOR ADR=20 TO 30 'adr değişkeninin 20-30 arası epromlara yazması sağlanır...

WRITE ADR, NO[ADR-20]  ' 20 çıkartarak N0[0] ile NO[10] arası değerler eproma yazılıyor.
PAUSE 10 

NEXT ADR

For next harici data komutu ile de eeproma sıralı kayıt yapabilirsiniz:

Data @ 0,255,255,255,255,255,255

data komutu ile ilk 6 eeprom adresine 255 yazılır veya şu yöntem kullanılabilir:

EEPROM 0,[1,10,11,12,13,14,15]
İlk eeprom 1 sonraki 11 4. eeprom 12 ... diye devam eder..

Diğer kodlama da şu şekilde:


EEPROM 5,[10,20]
eeprom 5'e 10, 6'ya 20 yazar.




Kırık Linkleri ve konuyla ilgili fikirlerinizi yorum formundan bildirebilirsiniz.