Proton'daki cread komutunun pbp'daki karşılığı?

Başlatan murat3044, 03 Mayıs 2014, 17:12:57

murat3044

merhabalar,
üzerinde çalıştığım bir projede, resimlerin bmp2asm programı ile rakamsal haritasını çıkartıyorum ve bunu bir yere basmam gerekiyor. malum bu iş protonda include ve cread ile uğraşmadan yapılıyor. bu iş pbp da nasıl yapılır? yani oluşturulan include dosyası nasıl programa dahil edilir ve bunun içindeki bilgiler sırası ile nasıl okunur?

RESIM0:
CDATA   $80,$00,$00,$00
CDATA   $80,$00,$00,$00
CDATA   $C0,$00,$00,$00
CDATA   $C0,$00,$00,$00
CDATA   $E0,$00,$00,$00
CDATA   $E0,$00,$00,$00
CDATA   $F0,$00,$00,$00
CDATA   $F0,$00,$00,$00
CDATA   $F8,$00,$00,$00
CDATA   $F8,$00,$00,$00
CDATA   $FC,$00,$00,$00
CDATA   $FC,$00,$00,$00
CDATA   $FE,$00,$00,$00
CDATA   $FE,$00,$00,$00
CDATA   $FF,$00,$00,$00
CDATA   $FF,$00,$00,$00
bahsettiğim include dosyasından bir parça örnek... bu sayıları protonda
for A=0 to 255
B=cread RESIM0+ A
print at 1,1, dec B
next A
şeklinde yapabileceğim işin pic basic pro'da nasıl yapılacağını bilmem gerek.
teşekkürler...

z

Label VAR Size[Number of elements]

sharks var byte[10]
fish var bit[8]

Fakat senin sorunun arrayi ramda değil romda olusturmak galiba.

Asagidaki ornek isini gorurmu?

DIM DIGIT AS BYTE
DIM MASK AS BYTE
loop:
TRISB = %00000000
FOR DIGIT = 0 TO 9
   MASK = LOOKUP(0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F), DIGIT
   PORTB = MASK
   WAITMS 1000
NEXT DIGIT
GOTO loop
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

murat3044

#3
aslında eskiden yaptığım iş lookup ile bu sorunu çözmekti. yalnız bu include dosyalarının herbir sayfası 512 tane byte içeriyor ve toplam 120 sayfa. malum bunların hepsinin içinden sadece 255 ile sınırlı olan lookup komutu ile çıkamam. sayfaları include ile ekleyip sırası ile cread  ile okumam gerek...
OG hocam ben bu ingilizce metnin içinden çıkamadım :(

OG

PCAddress var Word
PCData var Byte

DoitAgain:
    PCAddress = 7190    ''' Okuyacağı ilk adresi atıyor
    '
    ' Read & Display till we get a stop character
    ' Stop karaktere kadar oku godter
ReadCodeLoop:
    READCODE PCAddress,PCData       '' İlgili adresin datasını okuyor   
    If PCData > 0 Then              '' 0 dan büyükse
        LCDOut PCData               '' Datayı Görüntülüyor           
        PCAddress = PCAddress + 1   '' Adresi 1 arttırıyor
        GoTo ReadCodeLoop           '' tekrar aynı işlem
    EndIf
    Pause 2000
    '
    ' Read a set number of locations
    ' (two in this case - to Clear the LCD)
    '
    For PCAddress = 7190 To 7191
        READCODE PCAddress,PCData
        LCDOut PCData
    Next PCAddress
    
    Pause 1000
GoTo DoitAgain


Bu kodda ingilizcelik bir olay yok.

Okuma işlemi READCODE tek tek adresleyerek yapılabiliyor

Ancak Silme ve yazma  işlemi blok olarak yapılıyor.
O blokların kaçlı olacağını PIC datasheet den öğreniyoruz.
8, 16 ,32 ,64 lük bloklar gibi.

Blokları adreslerken doğru yerden başlamak gerekiyor.
Örneğin blok 8 li ise
0-7
8-15
16-23

gibi adresi doğru yerden başlatıp doğru yerde bitirmek gerekiyor.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.