Dizin ile tanımlanmış değişken

Başlatan F®T, 08 Nisan 2015, 12:18:14

F®T

MENU1 VAR BYTE [19]
MENU2 VAR BYTE [19]
MENU3 VAR BYTE [19]
.
.
.
.
MENU16 VAR BYTE [19]

Bu şekilde tanımlanış olduğun dizinler var.
örneğin.

MENU[X] VAR BYTE[19]

İsim sonundaki rakamları değişken ile değiştirebilirmiyiz.bu şekil olursa programda bayağı bir kod azalması olacak :)


"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

est32

merhaba,
MENU[X] VAR BYTE[19] şeklinde olmaz. çünkü "MENU1" bu haliyle bir isimdir. yani oradaki "1" sayı değildir, "MENU1" şeklinde isimleşmiş/kalıplaşmış bir yapıya dönüşüyor.
ayrıca 1 den 16 ya kadar böyle bir tanımlama yapıldığında RAM yetmeme sorunu da oluşabilir.
16*19=304 adet byte değişkeni demek. 16F628A ise 224 byte SRAM, 16F877A ise 368 byte SRAM'e sahip(anca kurtarıyor)

F®T

Hocam biliyorum fakat acaba bir yöntem varmıdır diye sorayım dedim.Ayrıca kullanacağım işlemci 18f65k22 olacak.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

est32

Zaten bu dizin içerisine mutlaka 1 defalığına bellekten değişken atamaları yapılacaktır. Eğer daha pratik bir yol yok ise MENU VAR BYTE [19] olarak bir veya bir kaç dizi tanımlanıp değişkenler lazım oldukça program çalışırken bellekten sırayla alınabilir ama işçilik ve mantık daha zorlayacaktır. Bu durumda doldur boşalt yapılmış olacak. Yani şöyle;
MENU1 VAR BYTE [19]
MENU2 VAR BYTE [19]
MENU3 VAR BYTE [19]
MENU1 ve MENU2 kullanımda iken MENU3 yüklenir, eğer MENU1'in işi bitmiş ve program MENU2-MENU3 ile işlem yapıyorsa MENU4 yerine tekrar MENU1 doldurulur, böylece ara değişken mantığıyla dönüşümlü olarak iş yapılabilir ancak dediğim gibi mantık biraz daha zorlaşır.
Bu arada programın ne olduğunu bile bilmeden kara düzen yorum yapıyorum, program hakkında bilgi verilirse belki başka üyelerden daha iyi fikirler de ortaya atılabilir. Benim tahminim bu devre ya kayan yazı, ya da bir ölçüm sonucunun sırayla alınıp belleğe kaydedilmesi olabilir.

MS_59

MENU VAR BYTE[304]  desek nasıl olur
mehmet

F®T

http://etepic.com/index.php/topic,2303.msg22979/topicseen.html#msg22979 konu bu.
lcd nin bir satırına istenilen yazı yazılacak.eproma yazılacak ve istenildiği zaman o adreslerden okunacak.programı oturttum sayılır fakat dediğim gibi bir yöntem olursa kod kapasitesi bayağı bir düşecek.bana lazım olan  16 adet 20 karekter yazıyı eproma kaydetmek ve istenildiği zaman okumak.bunu yaptım fakat başka yöntemler arıyorum.bana yöntem lazım.


proteuse hocam olur tabiki fakat programı yazarken sıkıntılar oluşturur gibi geldi bana.neticede bu adresler kullanılacak öylede olsa böylede olsa.ben sadece bir kalıp yazayım bir değişken ilede bu kalıbın aynısını 16 adet menu içinde kullanayım diye düşünüyorum.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

est32

#6
şöyle olamaz mı?
MENU_AL var byte '1 den 16 ya kadar değer alacak
MENU VAR BYTE[19]' dizi değişkenleri burada işlenecek.

IF MENU_AL=0 ise eeprom 0. adres ile 19. adres arasına yazacak MENU VAR BYTE[19] burada işleyecek,
IF MENU_AL=1 ise eeprom 20. adres ile 39. adres arasında yazacak veya oralardan bilgi alıp verecek.
matematiksel olarak da nereden başlayacağına şöyle karar verilebilir;
IF MENU_AL=1 THEN X=0'  okuma yazma 0. adresten başlayacak.
IF MENU_AL>0 THEN X=MENU_AL*20'  Örneğin MENU_AL=5 ise  5*20=100 yani okuma yazma 100. adresten başlayacak(tek satırın en solundaki harfin başlangıç dresi olur).
Diyelim ki 10. karakterden itibaren işlem yapılacaksa X=X+10 yapılarak satırın ortasına da müdahale edilebilir.
umarım hesap hatası yapmamışımdır ama mantık böyle olmalı diye düşünüyorum.

F®T

olabilir hocam.kaydet,oku,lcd ye yaz derken baya bir karışıyor. sanırım bu işi tek ortak bir şablon ve bir değişken  ile yapma olanağı olmayacak.işlemcide kapasite sorunum yok aslında.farklı yöntemler olursa denerim şu anda bu şekil gidicem.program tam oturdu sayılır.ilginç bir fikir olursa deneyerek yinede programı ufaltmak istiyorum.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal