symbol not previusly defined nedir??

Başlatan re3ii, 10 Ocak 2008, 23:55:45

re3ii

arkadaşlar 16f628 ile kesme devresi yapıyoruz ve ben hex ceviremiyorum symbol not previusly defined yazısı cıkıyor bunu gibi 40 tane ne yi nasıl yapmam gerekir acaba?

buda ete hocanın notlarından bulduk ( sadece ogrenmek amaçlı hex cevirmeye calısıyoruz zaten hazır hex ders notlarının içinde var)
PORTA=0
TRISB=%00000001   'PortB.0 giriş diğerleri çıkış yapıldı.
TRISA=%00000000   'A portu tamamı çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628                      'işlemci 16F628                                
@ DEVICE pic16F628, WDT_on              'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628, MCLR_OFF             'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
ON INTERRUPT GoTo KESME   'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%0000000    'dahili Pull up dirençleri aktif edildi ayrıca pullup direncine gerek yok.
INTCON=%10010000  'Kesmeler aktif ve RB0/INT kesmesi aktif

CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'OPTION_REG.7=1  'portB deki dahili PULL-UP lar iptal edildi.
'-----------------------------------------------------------------
SYMBOL TUS=PORTB.0
SYMBOL LED=PORTA.0

'-------------------------------------------------------------------
BASLA: 'Ana program bölümünde program bir şey yapmayacak
     pauseus 100
     goto basla
 
DISABLE  'yeniden kesme oluşması önleniyor  
KESME: 'program buraya geldiğinde kesme oluşmuş demektir.
      TOGGLE LED  'LED konum değiştirdi
      PAUSE 1
      INTCON.1=0  'RB0/INT Bayrağı (flag) silindi.
      Resume      'geldiğin yere dön.
      Enable      'kesmeler yeniden aktif.
End

ayhani

Sembol daha önce tanımlanmamış demektir.

Yani programında kullandığın sembolleri önce tanımlamalısın.

Tabi bu konuda pic basic pro  ile program uzmanı arkadaşlar daha iyi yanıt vereceklerdir.
En iyi bildiğim şey hiçbir şey bilmediğimdir.

re3ii

symbol not previusly defined (TRISA)
BURDA
tanımlanmıs değil mi ? sizce

aslan_korhan

@ DEVICE pic16F628 'işlemci 16F628
@ DEVICE pic16F628, WDT_on 'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF 'Kod Protek kapalı
@ DEVICE pic16F628, MCLR_OFF 'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak


Bu kısmı kaldırırsan derler.

Değerleri artık manual olarak pic'i programlarken gireceksin.
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

ete

Muhtemelen işlemci olarak 16F628A seçiyorsunuzdur. Programda define edilen ise 16F628 . AYnı gibi gözükmesine rağmen birisi A serisi olduğunu görebiliyorsunuz.
Program içinde yazılı olan ile yukarıda seçilen pic aynı olmalı.

Buna dikkat edin ve yeniden yapın.
Sırf merakımdan kopyaladım ve derledim sorunsuz derlendi.
Ama pici 16F628A yaptım bu sefer aşağıdaki mesajları verdi;

......ASM 57:[225] undefined symbol'pic16f628'

bunun gibi alt alta 6 adet satır çıkıyor. Sanırım sizinkide böyle bir şey

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

re3ii

@ DEVICE pic16F628 'işlemci 16F628
@ DEVICE pic16F628, WDT_on 'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF 'Kod Protek kapalı
@ DEVICE pic16F628, MCLR_OFF 'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak


bunları kaldırdım oldu fakat ete hocanın dedigini yaptım yine aynı hataları veriyor yukarıdaki kod gibi islemcinin 16f628 olarak sectim yine aynısın gosterdi

peki bunları yazmasam ne gibi sorunlar karşıma cıkabilir?

aslan_korhan

Daha önce dediğim gibi,
bu ayarları entegreyi programlarken manuel olarak girmen gerekecek.
"Fuse" ayalarından ayarlayacaksın.

Bunları ayarlamazsan programın standart değerleri kullanacaktır.
Mesela WDT'yi kapatman gerekir genelde. Ayar yapmazsan açık olarak programlanır ve devren çalışmaz...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.