MPLAB ile su asm kodunu bir türlü derleyemiyorum

Başlatan Digimensch, 29 Ocak 2006, 15:14:40

Digimensch

MPLAB ile su asagidaki kodu bir türlü derleyemiyorum.Hep "Source file path may not exced 62 charecters"
Acaba sorunu nasil asabilirim?

list	p=16f84

	#include "P16F84.INC" ; Include header file
	#define	bank0	bcf	STATUS, RP0
	#define	bank1	bsf	STATUS, RP0

	#define ileri 	0x05	; 00000101
	#define geri  	0x0A	; 00001010
	#define saga  	0x06	; 00000110
	#define sola  	0x09	; 00001001
	#define dur  	0x00	; 00000000

sayac1	EQU     H'000c'
sayac2	EQU     H'000d'
sessur	EQU     H'000e'
depo	EQU     H'000f'
pbmask	equ	h'0010'
ledsay	equ	h'0011'
eepsay	equ	h'0012'
eskib	equ	h'0013'
flag	equ	h'0014'
sesfrek	equ	h'0015'
ldrval	equ	h'0016'
sagval	equ	h'0017'
solval	equ	h'0018'
timer	equ	h'0019'
flag2	equ	h'0020'
timsay	equ	h'0021'
statemp	equ	h'0022'
wtemp	equ	h'0023'


	org	0

start	clrf	INTCON
	goto	main
	nop
	nop

intvec	movwf   wtemp           ; save off current W register contents
	movf	STATUS,w        ; move status register into W register
	movwf	statemp       	; save off contents of STATUS register


       	btfss  	INTCON,T0IF    	; Timer0 interrupt?
       	goto   	pop
	bcf    	INTCON,T0IF    	; Clear the Timer0 interrupt flag
	banksel	PORTB	
	incf	timsay
	btfsc	STATUS,Z
	incf	timer
pop	
	movf    statemp,w     	; retrieve copy of STATUS register
	movwf	STATUS          ; restore pre-isr STATUS register contents
	swapf   wtemp,f
	swapf   wtemp,w         ; restore pre-isr W register contents

	retfie

main
	banksel TRISB
	movlw	b'11111110'	; PORTB giriþ, -- 7. biti çýkýþ (ses için)
	movwf	TRISB

	movlw	b'00000000'	; PORTA çýkýþ
	movwf   TRISA

	call	init

	banksel	PORTB

	clrf	PORTB
	bcf	OPTION_REG,7	; Enable portb pullups

	clrf	flag

;****************************

;****************************
	
basadon	
aprog	




isikara
sagsol	call	carptimi


	movlw	saga
	movwf	PORTA
	call	azbekle
	movlw	dur
	movwf	PORTA
	call	azbekle
	call	ldrbak
	movwf	sagval

	call	carptimi

	movlw	sola
	movwf	PORTA
	call	azbekle
	movlw	dur
	movwf	PORTA
	call	azbekle

	call	carptimi

	movlw	sola
	movwf	PORTA
	call	azbekle
	movlw	dur
	movwf	PORTA
	call	azbekle
	call	ldrbak
	movwf	solval

	call	carptimi

	movlw	saga
	movwf	PORTA
	call	azbekle
	movlw	dur
	movwf	PORTA
	call	azbekle

	call	carptimi

	movfw	sagval
	subwf	solval,0
	btfss	STATUS,C
	goto	salak

solak	btfsc	flag,1
	call	gitgit
sol1	bsf	flag,2
	bcf	flag,1
	movlw	sola
	movwf	PORTA
	call	azbekle
	movlw	dur
	movwf	PORTA
	call	azbekle

	call	carptimi

	call	snd
	call	snd
	goto	sagsol

salak	btfsc	flag,2
	call	gitgit
sag1	bsf	flag,1
	bcf	flag,2
	movlw	saga
	movwf	PORTA
	call	azbekle
	movlw	dur
	movwf	PORTA
	call	azbekle

	call	carptimi

	call	snd
	goto	sagsol


gitgit	movlw	ileri
	movwf	PORTA
	call	bekle
	call	bekle
	movlw	dur
	movwf	PORTA
	call	bekle
	return

;****************************
init	movlw  	0x8F           ; Set the timer prescaler.
	banksel OPTION_REG
       	movwf  	OPTION_REG
	banksel	TMR0
	movlw  	0x00
       	movwf  	TMR0
       	bsf    	INTCON,T0IE    ; Enable the timer interrupt.
       	bsf    	INTCON,GIE     ; Enable global interrupts.
	return
;****************************
bibibip	call	snd
	call	bekle
	call	snd
	call	bekle
	call	snd
	call	bekle
	return
;****************************
carptimi
	btfss	PORTB,2
	call	sagcarp

	btfss	PORTB,1
	call	solcarp	
	return
;****************************
ldrbak
	banksel	TRISA
	bcf	TRISA,4		; RA4 output
	banksel	PORTA
	bcf	PORTA,4		; discharge capacitor	
	nop
	nop

	banksel	TRISA
	bsf	TRISA,4		; RA4 input
	banksel	PORTA

	movlw	0
	movwf	ldrval
testet	
	movfw	ldrval
	sublw	d'255'
	btfss	STATUS,2
	incf	ldrval,1

	btfsc	PORTA,4
	goto	birdir
	goto	testet
birdir	bcf	STATUS,0
	rrf	ldrval,1
	bcf	STATUS,0
	rrf	ldrval,1
	bcf	STATUS,0
	rrf	ldrval,1

	movfw	ldrval
	sublw	d'255'

	andlw	b'00011111'
	movwf	ldrval
	return
;-----------------------------------------
sagcarp	movlw	d'100'
	call	efekt
	movlw	geri
	movwf	PORTA
	call	bekle
	call	bekle
	movlw	sola
	movwf	PORTA
	call	bekle
	call	bekle
	return
;-----------------------------------------
solcarp	movlw	d'100'
	call	efekt
	movlw	geri
	movwf	PORTA
	call	bekle
	call	bekle
	movlw	saga
	movwf	PORTA
	call	bekle
	call	bekle
	return
;-----------------------------------------

;-----------------------------------------
efekt	
	movwf	sessur

efktlop	
	movfw	sessur
	movwf	sesfrek

	bsf 	PORTB,0

slop1	incfsz	sesfrek
        goto  	slop1

        bcf 	PORTB,0

slop2	incfsz	sesfrek
        goto  	slop2

	decfsz	sessur
	goto	efktlop
	return
;-----------------------------------------
snd	movlw	0ffh
	movwf	sessur
	
sndlop	bsf 	PORTB,0
	call	lbek

        bcf 	PORTB,0
	call	lbek

	decfsz	sessur
	goto	sndlop
	return

lbek	movlw	0xf1
	movwf	sesfrek
	
lbek2	nop
	nop
	nop
        incfsz	sesfrek
        goto  	lbek2
	return



azbekle	movlw	d'70'
	movwf	sayac2
	movlw	d'255'
	movwf	sayac1

azbek1	decfsz	sayac1
	goto	azbek1

	decfsz	sayac2
	goto	azbek1
	return


bekle	bsf	PORTA,4
	clrf 	sayac1

loop1   clrf 	sayac2

loop	incf 	sayac2
        nop
        nop
	nop
        btfss 	sayac2,7
        goto  	loop
	nop
	nop
	nop
	incf  	sayac1
	btfss 	sayac1,7		
	goto 	loop1
	bcf	PORTA,4
        return


	end

z

Hata mesajı söylüyor zaten sorunu.

Sözkonusu kodu C:\ Derle gibi klasöre koyarsan derlemesi lazım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ipek

selam kullandigin mplab version install language tool dan
mpasmwin yanlis bir diektoryden cagiriyorsun
dosyayi derledim kusursuz    kolay gelsin

aYe

Alıntı yapılan: "bunalmis"Hata mesajı söylüyor zaten sorunu.

Sözkonusu kodu C:\ Derle gibi klasöre koyarsan derlemesi lazım.

Bunalmis hocam sizce MPLAB'i yazan arkadaşlar dosya'nin bulunduğu yer bilgisine 62 karakter sinirlaması koyup, böyle de bir uyarı eklerken sebep ne olabilir? Yani sinir koymak ve uyarı vermek için extradan kod yazmişlar, bunlar boşbeleş adamlar olamaz. Ama benim aklıma geçerli bir sebep de gelmedi. Bir fikriniz yada bilginiz varsa rica edeyim...
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

Digimensch

Tamam hallettim sorunu sağol un arkadaslar.

z

Kullandığım pek çok programda benzer sorun var. Sağolsun windowsun bazı klasörlerin de öyle bir ismi varki içine bir klasörde sen koydunmu programda öngörülen string limiti aşılıveriyor.

Neden sorusunun cevabını bilmiyorum.

Cut-copy ile eski programları revizyondan geçirmişlerdir ne bileyim.
Dos zamanından kalmadır. :D  

Uzun string kabul edecek tipte program yazılsa bile giren bilginin boyunu ölçüp karşılaştırmak ve hata vermek her zaman iyidir.

Mazallah kodların içine dalıverirler.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

aYe

Benim anladığım sanırım bunalmis hocam'ın da demek istedigi;

Dosyanın bulunduğu klasör bilgisi 62'den fazla karakter içeriyormuş

Ör: C:\Program Files\IAR Systems\Embedded Workbench Evaluation 4.0\m16c\tutor\Release\Exe\tutor.mot

Şekindeki gibi derleyeceğin kodun olduğu dosya bilgisindeki toplam harf sayisi 62'yi geçmeyecekmiş.
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

aYe

Cevap için teşekkürler, ancak;

Alıntı yapılan: "bunalmis"Uzun string kabul edecek tipte program yazılsa bile giren bilginin boyunu ölçüp karşılaştırmak ve hata vermek her zaman iyidir.

Mazallah kodların içine dalıverirler.

Buna katilmiyorum. Bir örnekle sebebini izah edeyim;

Yahoo messenger da böyle birşey vardi. Her yazdiğiniz mesaj için 256 karakter sinirlama getirmişler. Siz 256'yi geçerseniz mesajın devamını yazılım otomatik olarak kesip karşı tarafa sadece ilk 256'lik kısmını yolluyordu. Lakin web adresleri bir bütündü kesilemez bölünemez biçilemezdi, bir karakter dahi eksik olsa bütünü anlamsız hale geleceği için kesinti yapılamazdı diye düşündüm. Sonra denedim bir arkadaşa "www.fdfdfddfd(256'yi aşan sayida karakter)ssds.com" şeklinde adres gönderdim. Sonuç karşı taraftaki messenger çöktü. Sonraları ben bunla fazla oynayınca yahoo farkedip (sanirim kendi serverlarina da etki ediyordu ki farkettiler) açığını yamadı. Şimdi de gerçekten 256 karakterden uzun ismi olan bir web sitesi varsa yahoo messenger ile bunu karşı tarafa iletmeniz mümkün değil. Yazilim geliştirme esnasında bir çözüm getirirken bunun ileride daha büyük sorunlara dönüşmemesi için çok düşünmek lazim kanısındayım. Dolayısıyla her zaman iyidir diyemiycem. En azından henüz ikna olmadım :D

Bir de nedir bu kodların içine dalıvermek? String ile kod'un içine nasıl dalınıyor? Şimdi bu da takılır benim aklıma :?: Rica etsem detaylarına girermisiniz? Hatta gerekiyorsa yeni bir başlık açın, burda konunun çok dışına çıkıcak gibi :D
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

ilker_32

asm dosyasının adını kısalt. kodda sorun yok.