CCS nin 91 sayısına olan garezi !!!

Başlatan mihri, 01 Nisan 2008, 12:37:28

mihri

Program son derece basit. doldur adındaki dizi RAM'de 0x05 nolu adresten başlayarak RAM'e yerleştirildi. Basit bir for döngüsü ile bu dizinin elemanlarına 1 sayısı yazılıyo bu işembaşarı ile gerçekleştiriliyor. Ama
doldur[90]=2; dediğimde doldur[90]'nın içeriği 2 oluyor.  
doldur[91]=2;
dediğim zaman ccs bu işlemi yapmıyor.



Yorumlarınızı bekliyorum.
"Eppur si muove!"

mucitotomasyon

aslında bu kadar saçma bir şey kesinlikle yapmaması lazım belki ccs sürümünde kaynaklanabilir.

mihri

V4.068 kullanıyorum şu an ama 4.058 4.065 bu versiyonlarda da var aynı durum.
"Eppur si muove!"

mihri

CCS diyorki ben derleyince bu kodları üretirim



Ama proteusta diyorki bana gelen kodlar böyle;



0x60 oldu 0xf60 ne iş ?
"Eppur si muove!"

mihri

Kullandığım işlemci 18f4620 işlemcinin 0x5f ram aderisine kadar veri yazmak için aşağıdaki kod parçası kullanılabiliyor.
Mesela 0x5f adresine 0x34 sayısını yazmak için;

movlw 0x34

movwf 0x5f

kodu kullanılabilir.

Ama 0x60 adresine sayı yazmak için yukarıdaki kodları kullanamayız, onun yerine;

movlw 0x34

movff W,0x60

yazmamız gerekiyo.

CCS 0x60 ve 0x7f arasındaki ram bölgesine ilk kod örneğindeki gibi yazmaya çalıştığı için olmuyo.

Peki 0x60 adresinin 0x5f adresinden farkı nedir? movwf komutu neden adreslerin birinde çalışırken diğerinde çalışmaz.
"Eppur si muove!"

mucitotomasyon

ccs nin de eksik tarafları var bundan  once asm ile basladım bu işe
derleyici kodu derler ama calışmaz cünkü o alana ulasamaz  diger ram alanına ulaşmak istiyosan   program satırını o alana göndermen gerekir  ccs bu işi  yapmıyodu  senin kullandıgın sürümden once sinde bende karsılaşmıstım onun icin olana  gitmen gerekir ccs sin help bakarsan görürsün

mihri

mucitotomasyon ne demek istediğini anlamadım biraz daha açıklayabilirmisin?
"Eppur si muove!"

aliveli

yaptığın bütün program kodunu yazda bakalım belki yazılımda hata vardır

mihri

"Eppur si muove!"

Ziya

Bug tespit etmişseniz bildirin. İlgileniyorlar. Kodun tamamını gönderin bildirim yaparken.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

aliveli

ilk olarak header dosyasında portb trisb vs gibi gereksiz eklemelerde bulunmuşsun o eklentilere gerek yok, #include <18F4620.h> ile zaten bütün giriş çıkış birimleri otomatik olarak ayarlanır

ikinci olarak #locate yerine hemen hemen aynı işlevi yerine getiren #byte kullanmanı tavsiye ederim çünkü locate çalışma zamında kısıtlamalara sınırlandırmalara neden olabilir

üçüncü olarak pic ile devre tasarlarken isis mplab gibi simülasyon programlarına güvenip iş yapmayın derim çünkü bu programlar temel olan şeylerin basit simülasyonlarını yapabilir. Aynı şekilde simülasyonda çalışan programın devrede çalışmayabilir sonra daha çok sıkıntı çekersin. Bu nedenle devrelerini board üzerinde tasarla ve çalışmasını kontrol et

son olarakda aşağıda gördüğün üzere isis belli kalıplar haricinde herşeyi simüle edemiyor. Kodda yapılan biraz değişiklik ile aslında programın çalıştığını görebilirsin


mihri

aliveli senden oraya for döngüsü yerine sadece;

doldur[91]=2;

yazmanı ve daha sonra doldur[91] içeriğinin ne olduğuna bakmanı istiyorum.
"Eppur si muove!"

aliveli

dostum bende sana isisde değil gerçek devre üzerinde dene diyorum

z

Sorunuzun cevabi asagidaki dokumanin 314. (Pix100) sayfasinda.

http://ww1.microchip.com/downloads/en/DeviceDoc/39626d.pdf

Note: Enabling the PIC18 instruction set
extension may cause legacy applications
to behave erratically or fail entirely.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

bymrz

yani hangi komutta uzama var sorun tam olarak neymiş?