avatar_Mucit23

Pic Mikrodenetleyicilerde Program hafızası kullanımı

Başlatan Mucit23, 06 Ağustos 2012, 15:09:57

Mucit23

Merhabalar Ete hocam.

Pic Mikrodenetleyicilerinde program hafızasına Pic Basic dili ile nasıl data gömerim? Data dediğim düşük boyutlu değil. Örneğin 1-2kb boyutlarında.

Bi arkadaş grafik ekran projesinde resim datalarını bas dosyasına çeviirip sonra programa dahil ederek işlemcinin program hafızasına gömmüş

İçeriği bu şekilde
;D:\top_secret\resim\picproje.bmp (128 x 64)
$00,$00,$00,$00,$00,$00,$FC,$FC,$FC,$FC,$FC,$7C,$7C,$7C,$7C,$FC,$FC,$FC,$F8,$F0,$00,$00,$FC,$FC,$FC,$FC,$FC,$FC,$00,$00,$F8,$FC,$FC,$FC,$FC,$3C,$3C,$3C,$3C,$FC,$FC,$FC,$F8,$00,$00,$00,$FC,$FC,$FC,$FC,$FC,$7C,$7C,$7C,$7C,$FC,$FC,$FC,$F8,$F0,$00,$00,$FC,$FC,$FC,$FC,$FC,$7C,$7C,$7C,$FC,$FC,$FC,$F8,$F0,$00,$00,$00,$F0,$F8,$FC,$FC,$FC,$7C,$7C,$7C,$FC,$FC,$FC,$F8,$F0,$00,$00,$00,$00,$00,$00,$00,$00,$3C,$3C,$3C,$FC,$FC,$FC,$FC,$00,$00,$00,$F0,$F8,$FC,$FC,$FC,$FC,$3C,$3C,$3C,$3C,$3C,$3C,$38,$00,$00,$00,$00,$00,$00_
$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$F8,$F8,$F8,$F8,$FF,$FF,$7F,$7F,$3F,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$FF,$FF,$FF,$FF,$FF,$80,$80,$80,$80,$C0,$C0,$C0,$C0,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$F8,$F8,$F8,$F8,$FF,$FF,$7F,$7F,$3F,$00,$00,$FF,$FF,$FF,$FF,$FF,$F8,$F8,$F8,$FF,$FF,$FF,$7F,$3F,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$80,$80,$80,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$FE,$FE,$FC,$FC,$F8,$80,$80,$80,$FF,$FF,$FF,$FF,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$9E,$9E,$9E,$9E,$9E,$9E,$0C,$00,$00,$00,$00,$00,$00_
$E0,$E0,$E0,$60,$E0,$E0,$6F,$EF,$6F,$6F,$EF,$E0,$60,$E0,$E0,$60,$E0,$E0,$60,$60,$E0,$E0,$6F,$6F,$6F,$EF,$6F,$6F,$60,$60,$63,$67,$6F,$6F,$6F,$6F,$6F,$6F,$6F,$6F,$6F,$67,$63,$60,$60,$60,$EF,$EF,$EF,$0F,$0F,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0F,$00,$00,$01,$0F,$0F,$0F,$0F,$0E,$00,$00,$00,$03,$07,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$07,$03,$00,$00,$00,$07,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$07,$00,$00,$00,$03,$87,$CF,$CF,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$07,$00,$00,$00,$00,$00,$00_
$FF,$FF,$06,$0D,$0B,$16,$2F,$4A,$B5,$2F,$4B,$BD,$2D,$D2,$B4,$4B,$D2,$F4,$EB,$F3,$FC,$FD,$FF,$FE,$FF,$FF,$FF,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$00,$00,$00,$80,$C0,$A0,$F0,$D0,$FC,$54,$FB,$D7,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$80,$E0,$F0,$F0,$F8,$FC,$FC,$FE,$7E,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$FE,$FC,$F0,$C0,$0E,$0E,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C0,$E0,$E8,$C6,$A6,$7F,$6B,$6B,$35,$34,$1B,$1F,$0F,$17,$FF,$FF,$98,$98,$DE,$F8,$E8,$E0,$E0,$E0,$E0,$C0,$00,$80,$80,$00,$00_
$FF,$FF,$80,$00,$00,$00,$00,$00,$00,$01,$03,$04,$3D,$5F,$FE,$3F,$7F,$FF,$FF,$FF,$FF,$FF,$FF,$3F,$BF,$FF,$FF,$77,$EB,$BF,$9E,$93,$D1,$D7,$54,$FA,$5F,$FE,$57,$BF,$DF,$CB,$F7,$E7,$C3,$81,$00,$FF,$FF,$00,$00,$00,$00,$E0,$F0,$FF,$FF,$FF,$FF,$FF,$FF,$0F,$03,$01,$00,$00,$00,$01,$03,$0F,$3F,$FF,$FF,$FF,$8F,$07,$01,$00,$00,$00,$00,$01,$0F,$1F,$7F,$F8,$F0,$C0,$00,$00,$00,$00,$30,$30,$E0,$C0,$00,$F7,$E3,$C1,$C1,$C0,$E0,$E0,$E0,$F6,$FE,$38,$3C,$3C,$FE,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$7F,$7F,$1C,$08,$0B,$06,$02_
$FF,$FF,$0F,$1F,$3F,$7F,$FF,$FF,$F8,$F4,$64,$E8,$DA,$A3,$61,$81,$83,$02,$05,$0F,$1D,$12,$02,$11,$17,$13,$12,$92,$92,$92,$12,$1A,$0E,$07,$07,$EB,$DD,$2F,$FF,$BF,$FF,$7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$3E,$7F,$7F,$0F,$07,$03,$00,$01,$07,$1F,$3E,$78,$E0,$C0,$80,$00,$00,$00,$00,$00,$00,$07,$0F,$3F,$F8,$F0,$E0,$00,$00,$00,$00,$00,$00,$01,$03,$07,$00,$00,$00,$10,$FC,$FC,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$3F,$3F,$00,$00,$40,$38,$30,$31,$03,$03,$03,$03,$81,$41,$F0,$FA,$F7,$F7,$C3,$00,$00,$00,$00_
$FF,$FF,$00,$80,$40,$60,$18,$1F,$FC,$61,$E1,$E1,$81,$01,$01,$FE,$01,$01,$01,$01,$A1,$F1,$79,$FD,$FF,$FD,$F9,$F3,$E3,$E1,$C0,$80,$00,$00,$00,$7F,$80,$7F,$FF,$7C,$FD,$09,$E6,$F5,$9B,$9F,$2F,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$C0,$E0,$F8,$FC,$FF,$FF,$FF,$FF,$FC,$F8,$F0,$80,$80,$00,$80,$C0,$E0,$F8,$FF,$FF,$FF,$FE,$F8,$E0,$C0,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$07,$0F,$17,$7F,$7F,$03,$E1,$E1,$E0,$E0,$00,$E0,$E0,$E0,$E0,$00,$78,$F8,$F8,$F8,$E6,$1F,$1F,$7F,$7E,$39,$03,$07,$03,$00,$00,$00,$00_
$FF,$FF,$D1,$D9,$CC,$C6,$E3,$E1,$D0,$D8,$C8,$C7,$E7,$DB,$DC,$DF,$CC,$C0,$C0,$C0,$C1,$C3,$C1,$C7,$C7,$DF,$DF,$FF,$FF,$EF,$D7,$CB,$E5,$F0,$D8,$D8,$C1,$C3,$C3,$C6,$CF,$DF,$FE,$FF,$FE,$FF,$FC,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$07,$0F,$0F,$1F,$3F,$3F,$3F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$3F,$3F,$3F,$1F,$1F,$0F,$07,$07,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$07,$0F,$0F,$00,$00,$0F,$0F,$0F,$0F,$00,$00,$03,$03,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00_


Ben resim gömmeyeceğim ama farklı fontlarda karakter matrisi gömmeyi düşünüyorum. Bildiğiniz bir yöntem mevcutmudur.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Hiç denemediğim bir yöntem. İki ayrı komut güzküyor bunu yapmak için.
Birincisi WRITECODE ADRES,SAYI şeklinde kullanılıyor. Tehlikeli bir komut yanlışlıkla program hafızasına ayzarsan alet kilitlenecektir.
Bu komut runtime yazma ve okumaya müsaade eden 16F87x serisinde kullanılabiliyor. Yeni nesillerde buna dahilmi bilemiyorum. En iyisi denemek sanırım.

Diğer komut POKECODE (Address),değer,değer,değer. Genelde program hafızası içinde tablo oluşturmak için kullanılıyormuş.
Özelliği ise işlemciyi programlarken belirtilen değerler adres verilirse o adresten itibaren hafızaya yerleştiriliyormuş.
Adres değeri verilmez ise ana programın bittiği yerden hemen sonra verilen datalar hafızaya sırası ile yerleştiriliyormuş.
Kullanım şekli olarak karışıklığı önlemek amacı ile programınızı yazın sonra en sonuna bir end koyun ve end satırından sonra
POKECODE xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx...........xx şeklinde datalarınızı yerleştirin diyorlar.
Bunların okunması  ise PEEKCODE adress, değer  olarak yapılıyor.

Ete


Mucit23

Anladım hocam. Proton bu konuda çok iyi aslında. Program hafızasını birçok şekilde kullanımına izin veriyor.

Bi kayan yazı sistemi tasarlamaya çalışıyorum. USB yi işte burada kullanmam gerekiyor. Çözersem eğer mükemmel olacak.
Daha önce hiç uğraştınızmı acaba bilmiyorum ama birde aşağıdaki bluetooth modüllerinden aldım.
http://www.ebay.com/itm/HC-05-Wireless-Bluetooth-to-Serial-Module-RS232-TTL-Master-Slave-Module-/170878687709?pt=BI_Electrical_Equipment_Tools&hash=item27c929d9dd#ht_3008wt_1037
Çok ucuzlar, ebayde 6-7 dolar arası seyrediyor. Bende yeni sipariş ettim kullanımı fazla zor değil. Eğer kullanabilirsem USB yede gerek kalmaz ve PC üzerindeki Bluetooth ile dataları gönderirirm. Hatta Android tabalı bir telefon için yazacağım program ile telefon üzerindeki bluetooth yardımıyla datalarımı gönderirim. Zor görünmüyor (Aslında USB kullanımını yine çözmek istiyorum, Bu konuda Pic tarafında biraz desteğe ihtiyacım var)

Dediğim gibi hafızaya font gömeceğim. Sizde bilirsiniz daha önce font datalarını lookup tablosuyla alıyorduk. Fakat lookup tablosunda açıkçası biraz kendimi kısıtlı hissediyorum. Çünkü max 255 adet data alabiliyor. Bu komutun işini görebilecek başka alternatif arıyorum şimdilik.

Hocam kayan yazıda aklıma gelen diğer bir yöntem ise dataları matrix olarak kaydetme. Sanırım bu şekilde yaparsam font dosyasına kısmende olsa gerek kalmayacak. Eğer Bilgisayar tarafında girilen string karakterleri matrislere çevirirsem harf ve rakamlar font dosyasında nasıl matris şeklinde duruyorsa bende o şekilde işlemciye gönderip eeproma kaydettiririm. Örneğin 100 karakterli bir yazı girilsin. Her karakterin 6 byte tuttuğunu düşünürsek (5Data 1 Boşluk) toplamda 600 byte lık bir alana ihtiyaç duyulur. Bu dataları anlık olarak eepromda kaydedebilirim. Sonra yazıyı kaydırırken sırayla okuyup ekranda gösteririm. Bu şekilde Kullanıcı sadece harf rakam değil, İstediği bir karakteri pc tarafında çizip ekranda kaydırabilir.

Şimdi ben yine font dosyasıyla uğraşmak istiyorum. Acaba Lookup tablosuna alternatif önerebileceğiniz bir yöntem varmı( Şimdilik eeprom kullanmak istemiyorum)
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Lookup alternatifi yok gibi. Düşüncelerin güzel gelişmeleri bekliyorum.

Ete

Powered by EzPortal