TRISB instruction is deprecated for PIC16628 hatası

Başlatan tayyar, 05 Kasım 2010, 16:20:30

tayyar

[IMG]http://img261.imageshack.us/img261/7277/hatax.jpg[/img]

Uploaded with ImageShack.us

Bu şekilde bir hata alıyorum. Devreyi henüz fiziksel olarak denemedim.


devre kod ve sim. dosyaları ekte
http://www.dosyaupload.net/987cozucu.rar

Nedeni ne olabilir bu hatanın ?
--EGEMENLİK KAYITSIZ ŞARTSIZ MİLLETİNDİR--

Tagli

TRIS komutu eski PIC'lerde kullanılan ve TRIS register'larını yüklemek için kullanılan bir komut. Bu modellerde TRIS register'ları hafızada adreslenmediğinden onlara ulaşmanın tek yolu bu. Bu komut her ne kadar yeni PIC'lerin datasheet'lerinde gözükmese de hâlâ varlığını sürdürüyor ancak kullanılması tavsiye edilmiyor. Ancak sanırım bazıları tarafından tek komutla işi bitirdiği için tercih ediliyor.

Hangi derleyiciyi kullanıyorsun? Belki derleyicinin versiyonu eskidir ve bu komutu kullanmayı tercih etmiştir. Ama bu hata değil de uyarı gibi gözüküyor. PIC'in bu şekilde de sorunsuz çalışması gerekir.
Gökçe Tağlıoğlu

tayyar

--EGEMENLİK KAYITSIZ ŞARTSIZ MİLLETİNDİR--

Tagli

Soruna sebep olan yer programındaki bu satır:
set_tris_b(0xCA);
Çünkü bunu assembly kodu olarak şöyle ifade etmiş derleyicin:
0080:  MOVLW  CA
0081:  TRIS   6
Bunu cozucu.lst dosyasında görebilirsin.

CCS bilmediğim için set_tris_b() fonksiyonu yerine ne kullanılır bilmiyorum, ama TRISB = 0xCA yazmayı deneyebilirsin.
Gökçe Tağlıoğlu

tayyar

hocam tris komutunun ccs deki kullanım şekli bu

help dosyasındada kitapta da bu şekilde kullanılıyor

--EGEMENLİK KAYITSIZ ŞARTSIZ MİLLETİNDİR--

JKramer

Tagli'nın dediği gibi, herhangi bir sorun yok. CCS'in yardım dosyasında yazdığı gibi, TRIS komutunun kullanılması sizi rahatsız ediyorsa:

CCS'in ide'sini kullanıyorsanız Tools-->Device Editor-->MCU Parts-->Other Features--> TRIS 'i False yapıp kaydettikten sonra tekrar derlerseniz şu hale gelecek:
....................    set_tris_b(0xCA); 
0081:  MOVLW  CA
0082:  BSF    03.5
0083:  MOVWF  06


Komut satırı derleyiciyi kullanıyorsanız aynı sonuca şu şekilde de ulaşabilirsiniz:

...
#byte TRISB=0x86
...
TRISB=0xCA;


Eğer asm olarak kodu yazsaydınız, aynı kodu ileride daha ileri düzey bir mikrodenetleyicide kullansaydınız TRIS komutlarını değiştirmek zorunda kalacaktınız. Ama zaten c'de yazıyorsunuz, o yüzden bir sorun yok.

tayyar

Dediğiniz gibi yaptım hocam artık o uyarıyı vermiyor. İlgilenenlere teşekkürler.
--EGEMENLİK KAYITSIZ ŞARTSIZ MİLLETİNDİR--