Picproje Elektronik Sitesi

DERLEYİCİLER => Microchip MPLAB C serisi => Konuyu başlatan: Digimensch - 29 Ocak 2006, 15:14:40

Başlık: MPLAB ile su asm kodunu bir türlü derleyemiyorum
Gönderen: Digimensch - 29 Ocak 2006, 15:14:40
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

Başlık: MPLAB ile su asm kodunu bir türlü derleyemiyorum
Gönderen: z - 29 Ocak 2006, 15:25:41
Hata mesajı söylüyor zaten sorunu.

Sözkonusu kodu C:\ Derle gibi klasöre koyarsan derlemesi lazım.
Başlık: mplap hatasi
Gönderen: ipek - 29 Ocak 2006, 15:47:09
selam kullandigin mplab version install language tool dan
mpasmwin yanlis bir diektoryden cagiriyorsun
dosyayi derledim kusursuz    kolay gelsin
Başlık: MPLAB ile su asm kodunu bir türlü derleyemiyorum
Gönderen: aYe - 29 Ocak 2006, 15:51:27
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...
Başlık: MPLAB ile su asm kodunu bir türlü derleyemiyorum
Gönderen: Digimensch - 29 Ocak 2006, 15:54:21
Tamam hallettim sorunu sağol(http://img151.imageshack.us/img151/9500/dilimdilim2ge7ak5.jpg) (http://imageshack.us) un arkadaslar.
Başlık: MPLAB ile su asm kodunu bir türlü derleyemiyorum
Gönderen: z - 29 Ocak 2006, 16:00:31
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.
Başlık: MPLAB ile su asm kodunu bir türlü derleyemiyorum
Gönderen: aYe - 29 Ocak 2006, 16:04:19
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ş.
Başlık: MPLAB ile su asm kodunu bir türlü derleyemiyorum
Gönderen: aYe - 29 Ocak 2006, 16:19:32
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
Başlık: MPLAB ile su asm kodunu bir türlü derleyemiyorum
Gönderen: ilker_32 - 08 Şubat 2007, 01:16:02
asm dosyasının adını kısalt. kodda sorun yok.