MPLAB x IDE v3.10 Derleme Hatası

Başlatan ds01, 17 Ekim 2015, 20:31:33

ds01

4 5 gün oldu başlayalı pic assembly öğrenmeye çalışıyorum.Microchip in sitesinden MPLAB x IDE v3.10  idesini indirdim.Fakat program derlerken hep aşağıdaki gibi hata veriyor. 5 6 7 8 9 10 11 satırlarda kodların yeri yanlış gibi birşey diyor.Aynı programı mplab 8.92 ide de denedim hata vermedi.Hata neden kaynaklı olabilir.Bu MPLAB x 3.10 un arayüzü hoşuma gittiği için bırakmakta istemiyorum.Nasıl halledebilirim.Yardımlarınızı bekliyorum şimdiden teşekkür ederim.asm dosyası linker files içinde gibi görünsede source files içindedir.



Gökhan BEKEN

Hata mesajını kopyalayıp olduğu gibi ekler misiniz?
Özel mesaj okumuyorum, lütfen göndermeyin.

tekosis

BASLA dan sonra : koymamışsınız sanırım ondan. etiket olarak görmüyor gibi.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

ds01

BASLA nın sonuna ":" koydum yine düzelmedi.


GELEN HATA ŞU
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/Murat/MPLABXProjects/m.X'
make  -f nbproject/Makefile-default.mk dist/default/production/m.X.production.hex
make[2]: Entering directory 'C:/Users/Murat/MPLABXProjects/m.X'
make[2]: *** [build/default/production/d.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
"D:\Program Files (x86)\Microchip\MPLABX\v3.10\mpasmx\mpasmx.exe" -q -p16f84 -l"build/default/production/d.lst" -e"build/default/production/d.err" -o"build/default/production/d.o" "d.asm" 
Error[150]   C:\USERS\MURAT\MPLABXPROJECTS\M.X\D.ASM 5 : Labels must be defined in a code or data section when making an object file
Error[152]   C:\USERS\MURAT\MPLABXPROJECTS\M.X\D.ASM 6 : Executable code and data must be defined in an appropriate section
Error[152]   C:\USERS\MURAT\MPLABXPROJECTS\M.X\D.ASM 7 : Executable code and data must be defined in an appropriate section
Error[152]   C:\USERS\MURAT\MPLABXPROJECTS\M.X\D.ASM 8 : Executable code and data must be defined in an appropriate section
Message[302] C:\USERS\MURAT\MPLABXPROJECTS\M.X\D.ASM 9 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[152]   C:\USERS\MURAT\MPLABXPROJECTS\M.X\D.ASM 9 : Executable code and data must be defined in an appropriate section
Error[152]   C:\USERS\MURAT\MPLABXPROJECTS\M.X\D.ASM 10 : Executable code and data must be defined in an appropriate section
Error[152]   C:\USERS\MURAT\MPLABXPROJECTS\M.X\D.ASM 11 : Executable code and data must be defined in an appropriate section
Error[152]   C:\USERS\MURAT\MPLABXPROJECTS\M.X\D.ASM 12 : Executable code and data must be defined in an appropriate section
nbproject/Makefile-default.mk:95: recipe for target 'build/default/production/d.o' failed
make[2]: Leaving directory 'C:/Users/Murat/MPLABXProjects/m.X'

ds01


kudretuzuner

Merhaba,
Sakıncası yok ise asm dosyanızı özelden de olsa verirseniz bakıp çözmeye çalışayım.Muhtemelen eksik veya yanlış işaret kullanmaktasınız.
Not:asm yazılımlarında ":" ben hiç kullanmadım ne kadar doğrudur bilemem ama örneğin yazılımızda size hatırlatıcı bilgi içermek için ; noktalı virgülü kullanabilirsiniz.
BASLA;--------------OPTO  1 BURADAN BAŞLAR
Amatör

Tagli

MPLAB X'in kurulum klasöründe yer alan template dosyasını denemeni tavsiye ederim. Yolu benim bilgisayarda mpasmx/templates/Code şeklinde, muhtemelen sende de buna benzerdir.

Bir diğer nokta kodun absolute olup olmaması. Anladığım kadarıyla sen kodu absolute yazacaksın ama MPLAB X asm'nin varsayılan ayarı absolute değil. Bunu proje ayarlarından değiştirmen gerekebilir. Ama ilginçtir ki, yukarıda bahsettiğim template kodu iki türlü de hatasız derlendi.
Gökçe Tağlıoğlu

ds01

Alıntı yapılan: kudretuzuner - 19 Ekim 2015, 13:38:37
Merhaba,
Sakıncası yok ise asm dosyanızı özelden de olsa verirseniz bakıp çözmeye çalışayım.Muhtemelen eksik veya yanlış işaret kullanmaktasınız.
Not:asm yazılımlarında ":" ben hiç kullanmadım ne kadar doğrudur bilemem ama örneğin yazılımızda size hatırlatıcı bilgi içermek için ; noktalı virgülü kullanabilirsiniz.
BASLA;--------------OPTO  1 BURADAN BAŞLAR

kudretuzuner hocam öylesine bir deneme kodu öğrenmek için başlamıştım bir gizliliği yok yani .Bilmiyorum sütunları mı denk getiremiyorum ondan mı olmuyor.Asm dosyası : http://dosya.co/jmfje2qwbusw/d.asm.html


Alıntı yapılan: Tagli - 19 Ekim 2015, 14:59:38
MPLAB X'in kurulum klasöründe yer alan template dosyasını denemeni tavsiye ederim. Yolu benim bilgisayarda mpasmx/templates/Code şeklinde, muhtemelen sende de buna benzerdir.

Bir diğer nokta kodun absolute olup olmaması. Anladığım kadarıyla sen kodu absolute yazacaksın ama MPLAB X asm'nin varsayılan ayarı absolute değil. Bunu proje ayarlarından değiştirmen gerekebilir. Ama ilginçtir ki, yukarıda bahsettiğim template kodu iki türlü de hatasız derlendi.

Tagli hocam absulute olayını pek anlayamadım.Ama dediğiniz gibi temp dosyası içindeki 16F84 lü örneği başarıyla derledi.Nerde sıkıntı var anlayamadım

ds01

#8
sonunda çözebildim sorunu sıkıntısı org 0x00 koymamamdan kaynaklanıyormuş  yardımlarınız ve ilgileriniz için teşekkür ederim.Ama org 0x00 neden kullandık Ben şöyle düşündüm kullanılan komutlar(movlw,bsf gibi)  tek tek  eepromdaki adreslere sırasıyla kaydediliyor hangi adresten başlatmak istiyorsak o adresle başlatıyoruz org yardımıyla  doğru mu acaba?.birde dediğiniz asmdeki absulute ayarı nedir ne işe yarıyor bunları açıklarsanız çok sevinirim.

Doğru Kod

  LIST   P =  16F84  
PORTB  equ   0x06
STATUS equ   0x03 
TRISB  equ   0x86 
        org  0x00
BASLA
	        
        clrf  PORTB 
	bsf   STATUS,5 
	movlw 0xFA 
	movwf TRISB 
	bcf   STATUS,5 
	movlw 0x05
	movwf PORTB 
	end

Tagli

Absolute kodda, komutların bellekte nereye yerleşeceğini programcı ORG ifadeleri ile belirler. Değişkenlerin yerleşmesi de benzer mantıkla kullanıcı tarafından yapılır. Küçük projeler için kolaylık sağlayabilir ama içinde birçok yazılım modülü bulunan büyük projeler için uygun değildir. Diğer seçenek olan relocatable kodda ise kullanıcı bu bilgileri vermez ve bellek yerleşimini büyük oranda linker'a bırakır. Ama bu durumda yazılım tarafında bazı önlemler almak ve daha dikkatli kod yazmak gerekir. Örneğin hangi değişkenin hangi bank'a yerleşeceğini bilemediğiniz için banksel gibi özel ifadeler önem kazanır. Program yerleşiminde de özellikle PCLATH ile ilgili işlemlerde program parçacıklarının page sınırlarından geçip geçmediği gibi ayrıntılara dikkat etmek gerekir.
Gökçe Tağlıoğlu

ds01

Alıntı yapılan: Tagli - 20 Ekim 2015, 00:21:26
Absolute kodda, komutların bellekte nereye yerleşeceğini programcı ORG ifadeleri ile belirler. Değişkenlerin yerleşmesi de benzer mantıkla kullanıcı tarafından yapılır. Küçük projeler için kolaylık sağlayabilir ama içinde birçok yazılım modülü bulunan büyük projeler için uygun değildir. Diğer seçenek olan relocatable kodda ise kullanıcı bu bilgileri vermez ve bellek yerleşimini büyük oranda linker'a bırakır. Ama bu durumda yazılım tarafında bazı önlemler almak ve daha dikkatli kod yazmak gerekir. Örneğin hangi değişkenin hangi bank'a yerleşeceğini bilemediğiniz için banksel gibi özel ifadeler önem kazanır. Program yerleşiminde de özellikle PCLATH ile ilgili işlemlerde program parçacıklarının page sınırlarından geçip geçmediği gibi ayrıntılara dikkat etmek gerekir.

Tagli hocam çok teşekkür ederim...