Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Assembler hatası

Başlatan QuantuM, 14 Ağustos 2011, 10:08:03

QuantuM

Merhaba,

Deneme amaçlı yazdığım çok basit bir program var pic16f84A'da. Tuşa basınca led yanacak, basılı tutulduğu süre yanmaya devam edecek,tuşu bırakınca da led sönecek. Programı yazdıktan sonra compile ederken assembler hatası ile karşılaşıyorum. hata kodu ve açıklaması : error[108]c\program files\....test.asm 72 :Illegal character(&). Program olarak MicroCode studio,assembler olarak ise MPASM kullanıyorum. Bu hatayı pic'in fuse ayarlarını yaptığım satırda alıyorum. Neden olduğunu çözemedim.Yardımcı olursanız sevinirim. Şimdiden teşekkürler.

Kod:

@__CONFIG_WDT_ON &_PWRT_ON &_XT_OSC &_PROTECT_OFF

PORTB=0
TRISB=%00000001

SYMBOL TUS=PORTB.0
SYMBOL LED=PORTB.1

START:
IF TUS=1 THEN
TOGGLE LED
WHILE TUS=1
WEND
ENDIF
GOTO START
END

M_B


@__CONFIG_WDT_ON &_PWRT_ON &_XT_OSC &_PROTECT_OFF

Satırında biraz ara verip denermısın.
Komutlar bir birine karısmıs gıbı.

Ornek:
@__CONFIG     _WDT_ON &   _PWRT_ON &   _XT_OSC &  _PROTECT_OFF

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

QuantuM

Dediğiniz gibi yaptığımda da aşağıdaki error'ları aldım :

-Warning[205] c:\......test.asm72: Found directive in column1.(__CONFIG)
-error[113]c:\....test.asm 72:Symbol not previously defined(_PWRT_ON)
-error[113]c:\....test.asm 72:Symbol not previously defined(_PROTECT_OFF)
-error[118]c:\...test.asm 72: Overwriting previous address contents(2007)

ipek

ete hocadan hatırladığım kadarı ile 18Fxx serisi değilse
mcs nin editor ayarlarından mpasm tick'ini kaldırman icap ediyor
view başlığı altında
Compile and program option
altında asemmbler başlığı
Use Mpasm buradaki tick

QuantuM

MPASM tikini kaldırınca program PM assemble yapmaya başlıyor, fuse ayarlarını da PM dilinde yazınca sorun ortadan kalktı, teşekkür ederim. Ama hala kafama takılan MPASM assemble diline uygun bir biçimde config ayarlarını düzenlememe rağmen hata vermesi, yani bu durumda 18FXX bir pic kullandığımda gene aynı sorun ortaya çıkacak çünkü PM 18FXX desteklemiyor. Yardımlarınız için çok teşekkürler.

ete

Conifg ayarlarını MPASM formatına uygun vermemişsin.
Öncelikle MPASM klasörü içinde yer alan P16F84A.INC dosyasını aç (MCS içinde açabilirsin)
Orada config ayarlarının neler olduğunu "Configuration  bits" başlığı altında görebilirsin.

Ayrıca PBPxxx klasörü içinde yer alan 16F84A.INC dosyasını açarsan içinde MPASM için config formatını görebilirsin.

Ben senin için gerekli düzeltmeyi yaptım ve MPASM de şimdi sorunsuz derleniyor. Unutmadan söyleyeyim, MPASM de derleme yapacaksanız öncelikle PBPxxx klasörü içinde yer alan işlemciye ait INC dosyası içinde yer alan MPASM config ayarlarını kapatmak gerekir. Aksi halde şu hatayı alırsınız;
"Owerwriting previous address contents"

Düzeltilmiş Config ayarı şöyle olmalı;

@ __CONFIG _WDT_ON & _PWRTE_ON  & _XT_OSC & _CP_OFF
Bu formatta yer alan boşlukların hepsinin  önemi vardır. Bu nedenle yazılışa dikkat etmek gerekiyor.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

QuantuM

Ete hocam teşekkürler, verdiğiniz gibi yapınca config ayarlarını hata düzeldi. yalnız bir sorum daha olacak size; MPASM config ayarlarını kapatmak gerekir aksi halde hata alırsınız demişsiniz, bu ayarları nasıl kapatabilirim acaba ?