warning 207 error 122hatası bitirme tezim için yardım

Başlatan zemberek, 17 Mart 2015, 11:38:42

zemberek

iyi günler
bitirme tezi olarak pic programlamayla servo motor kontrolü yapıcam.fakat daha kod kısmında sorun yaşıyorum.yetiştirme konusunda endişeliyim.devrim çamoğlunun setini kullanıyorum yeni başladım.pic16F88 adlı microişlemciyi kullanmam gerek.aşağıdaki kodları yazıyorum fakat iki tane hata alıyorum.

'Dahili osilatör kullanılacak..................................................
@ Device  pic16F88, INTRC_OSC_NOCLKOUT
@ Device  pic16F88, MCLR_OFF
OSCCON=%01101110   '4MHz Osilatör hızı.........................................
'ADC tanımları ve Konfigürasyonları............................................
ADCON1=%00000000              'Sonuç sola yaslı................................
ANSEL=%00000010               'Al portu analog giriş...........................
TRISA=%01010010               'PortA nın 1,4,6.pini giriş......................
TRISB=%01010010               'PortB çıkış.....................................
'Değişkenler,Sabitler ve Semboller.............................................
ADCDeger VAR BYTE             'Sonuç 8 bit olacak..............................
ServoNo VAR BYTE              'Servo no degişkeni..............................
SYMBOL ServoButon=PortA.6     'Servo seçme butonu..............................
SYMBOL KomutButon=PortA.4     'Komut Butonu....................................
Symbol Servo1=PORTA.2         'Servo 1 Sinyal..................................
SYMBOL Servo2=PORTA.3         'Servo 2 Sinyal..................................
SYMBOL Led1=PORTB.0           'İndikatör 1.....................................
SYMBOL Led2=PORTB.1           'İndikatör 2.....................................
Sayac VAR BYTE                'Döngü Sayacı....................................
Deger VAR WORD                'Deger Aralıgı...................................
AltDeger CON 100              '4MHzde,1Pulse = 10us............................
'10us x 100 = 1ms Servo 0 açısı : Başlangıç değeri.............................
ServoNo=1                     'Açılışta 1 nolu servo etkin.....................
Program:
ADCIN 1,ADCDeger              'ADC Değeri okuyalım.............................
Deger=(ADCDeger*58)/100       'Skala 150; 0-180 derece.........................
IF ServoButon=0 THEN PAUSE 30:ServoNo=ServoNo+1
IF ServoNo>2 THEN ServoNo=1   'Son servonun indeksi(2).........................
SELECT CASE ServoNO
CASE 1:Led1=1:Led2=0
CASE 2:Led1=0:Led2=1
END SELECT
IF KomutButon=0 THEN PAUSE 30:GOSUB Servo
GOTO Program
Servo:   'Servo hızına göre tekrar sayısı...................................
FOR Sayac=0 TO 40  'Alt Değer+Skala 150 =1ms/2ms..............................
  SELECT CASE ServoNo
   CASE 1:PULSOUT servo1,deger+AltDeger
   case 2:PULSOUT Servo2,deger+AltDeger
  END SELECT
  PAUSE 19 'Min gecikme degeri, Hitec HS311 Standard
NEXT                         'Servo ile test edilmiştir.......................
RETURN

aldığım hatalar warning207 ve error 122 bunlardan 2 şer tane hata alıyorum.
ete hocam yardım edin lütfen.

ete

Programda bir hata yok.
Hata sayfasında yazılanların hepsini görmek gerek. Hata kodu bana bir şey ifade etmiyor maalesef.
Aşağıdaki sorularıda cevaplayın;
1. Kullandığınız PC 64 bit mi 32 bitmi dir.?
2. PBP derleyicisi hangi versiyon kullanıyorsunuz
3. MCS içinde View menüsüne tıklayın  ve Compile & Program Options seçeneğini seçin. Açılan ekranda ortada yer alan Assembler butonuna tıklayın. Ekranda sağ tarafta görülen MPASM kutusu seçilimi değilmidir belirtin

ete


zemberek

64 bit
2.60 pbp
microcode studio version 5.0.0.5
assembler tarafındaki mpasm seçili
önce ki yorumlarınızın çoğunu okudum aynı hatayı aldım
üstteki 2 kodu silince yükledi bu kodlar devremi etkilermi
@ le başlayan 2 kod
pıc16f88 le çalışıyorum.
bunu yapmam lazım
hatalarda illegal opcode (pic16f88)
2. hata found label after column. (device1)

@ Device  pic16F88, INTRC_OSC_NOCLKOUT
@ Device  pic16F88, MCLR_OFF
sildiğim kodlar bunlar.
ete hocam bitirme tezim için yardım lütfen.

ete


zemberek

Abi şimdi sadece kodun başına ; koyunca kaydedince iş düzelmedi.Daha detaylı anlatırmısın.Benim kodlarım kalcakmı.dediğin ınc dosyasına girdim.
#CONFIG
    ifdef PM_USED
        device  pic16F88, hs_osc, wdt_on, lvp_off, protect_off
    else
        __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
    endif
#ENDCONFIG
bu kodu başa yapıştırıdım eski kodu sildim.kabul etti ama program bozulurmu??
eski kodlar kalıp

sadece bu kodun başına ; koydum aynı hataları verdi
__config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
yardım abi

ete

Ya söylediğim linkleri satır satır okumuyorsun yada okuduğunu anlamıyorsun. Ne yaptığını tahmin edebiliyorum. Satır atlayarak yalnızca göz gezdiriyorsun. Dikkatlice okusan sana ait olan bilgiler olarak şunları görecek idin.
1. C klasöründe yer alan PBP klasörü içinde bulunan 16F88.INC dosyasını mCS içinde açacaksın.
2. Altta yer alan ve MPASM ye ait olan sigorta satırını kopyalayacaksın.
3. Aynı satırın başına bir ; koyarak satırı pasif hale getirip geri dosyayı save edeceksin. Yani o satır kapatılmış oldu artık.
4. Programın başına kopyaladığın sigorta satırını yerleştirip diğer sigorta ayarlarını sileceksin.
  Yerleştirdiğin satırın en başına bir @ karekteri koyarak o satırın bir ASM satırı olduğunu programa söylemiş olacaksın.
5. Mcs , view menüsnde yer alan compile & Program options  seçeneğini seçip ortadaki Assembler butonuna tıklayarak açılan ekranda sağda yer alan MPASM kutusuna tıklayarak seçili hale getireceksin.
6. Hemen altta yer alan MPASM yolu (path) belli değil ise manuel find seçeneği ile Mpasm klasörünün yerini göstereceksin.
Buraya kadar olanları yaptıktan sonra artık derleme yapabilirsin.

Ete

zemberek

yeni kodum bu mu abi

#CONFIG
    ifdef PM_USED
        device  pic16F88, hs_osc, wdt_on, lvp_off, protect_off
    else
        __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
    endif
#ENDCONFIG
OSCCON=%01101110   '4MHz Osilatör hızı.........................................
'ADC tanımları ve Konfigürasyonları............................................
ADCON1=%00000000              'Sonuç sola yaslı................................
ANSEL=%00000010               'Al portu analog giriş...........................
TRISA=%01010010               'PortA nın 1,4,6.pini giriş......................
TRISB=%01010010               'PortB çıkış.....................................
'Değişkenler,Sabitler ve Semboller.............................................
ADCDeger VAR BYTE             'Sonuç 8 bit olacak..............................
ServoNo VAR BYTE              'Servo no degişkeni..............................
SYMBOL ServoButon=PortA.6     'Servo seçme butonu..............................
SYMBOL KomutButon=PortA.4     'Komut Butonu....................................
Symbol Servo1=PORTA.2         'Servo 1 Sinyal..................................
SYMBOL Servo2=PORTA.3         'Servo 2 Sinyal..................................
SYMBOL Led1=PORTB.0           'İndikatör 1.....................................
SYMBOL Led2=PORTB.1           'İndikatör 2.....................................
Sayac VAR BYTE                'Döngü Sayacı....................................
Deger VAR WORD                'Deger Aralıgı...................................
AltDeger CON 100              '4MHzde,1Pulse = 10us............................
'10us x 100 = 1ms Servo 0 açısı : Başlangıç değeri.............................
ServoNo=1                     'Açılışta 1 nolu servo etkin.....................
Program:
ADCIN 1,ADCDeger              'ADC Değeri okuyalım.............................
Deger=(ADCDeger*58)/100       'Skala 150; 0-180 derece.........................
IF ServoButon=0 THEN PAUSE 30:ServoNo=ServoNo+1
IF ServoNo>2 THEN ServoNo=1   'Son servonun indeksi(2).........................
SELECT CASE ServoNO
CASE 1:Led1=1:Led2=0
CASE 2:Led1=0:Led2=1
END SELECT
IF KomutButon=0 THEN PAUSE 30:GOSUB Servo
GOTO Program
Servo:   'Servo hızına göre tekrar sayısı...................................
FOR Sayac=0 TO 40  'Alt Değer+Skala 150 =1ms/2ms..............................
  SELECT CASE ServoNo
   CASE 1:PULSOUT servo1,deger+AltDeger
   case 2:PULSOUT Servo2,deger+AltDeger
  END SELECT
  PAUSE 19 'Min gecikme degeri, Hitec HS311 Standard
NEXT                         'Servo ile test edilmiştir.......................
RETURN


configten endconfige kadar olan kısımı yapıştırdım ınc dosyasından

sonra; ınc dosyasındaki kodu

#CONFIG
    ifdef PM_USED
       ; device  pic16F88, hs_osc, wdt_on, lvp_off, protect_off
    else
       ; __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
    endif
#ENDCONFIG

şeklinde kaydettim.
hex dosyası çıktı fakat devre çalışmadı
basit bir şey içinde denedim ledin yarım saniyede 1 yanıp sönmesi gerekti oda olmadı
ilk yazdığım mesajdaki kodlardan mcs ınc de yok
???? yardım abi
abi istanbulda oturuyosan yanına geliyim şu işi halledelim be güzel abim.
saygılar

zemberek


ete

Normalde verdiğim linkleri okumuş olsan bu sorunu kolaylıkla halletmen gerekirdi.
Hadi okuduğunu anlamayan bir kişisin dedim sana madde madde ne yapman gerektiğini anlattım.
Yine dediklerimi yapmayıp abuk subuk şeyler yatın. Ben ne yapayım? Sen kendin yapmak istemiyorsun. Bu nasıl bir iş anlamadım bütün sene yattınmı hiçmi ilgilenmedin bu program işi ile bir program bileşenlerinden haberin yok henüz.  Bu sitede bir çok kişi var hepsi birer amatör bu işin dersinide almıyorlar ben dahil bu konuyu sular seller gibi biliyoruz senin ders konun ve sen hiç bir şey bilmiyorsun neden.. Bu adil değil. Oturup çalışacaksın. Yazdığım mesajları en baştan yeniden oku özellikle son mesajıma dikkat et. Yazılanları adım adım uygula.
Sana inc dosyası içinde altta yer alan ve mpasm ye ait olan satır diyorum sen orada ne var ne yok hepsini kopyalıyorsun. Olmaz böyle şey. Bu forumun önemli bilgiler bölümündeki konuları dikkatlice oku. Zaman ayır bu işe ezberle bir yere varamazsın.

Ete
not:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Yine yanlış yapacağını düşünerek bu sefer uygulamalı açıklıyorum;

bak 16F88.INC dosyasında neler var
        INCLUDE "P16F88.INC"   ; MPASM  Header
        __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
Adam yazmış MPASM Header diye açıklamasına ama sen hepsini kopyalayıp almışsın.
Sadece ;
        __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
satırını kopyalayacaktırn. Sonra  satırın başına ; koyup geri kayıt edecektin.
;        __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF          şeklinde.

Daha sonra  programın başına bu satırı yapıştırıp diğer sigorta ayarlarını silecektin.
Satırın başınada @ ekleyecektin Şöyle;
@  __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
buda senin sigorta ayar satırın olacak idi.
Bu anlattıklarımı anlamak çok mu zor acaba. Tane tane anlattım. Yine anlatıyorum hemde bu sefer uygulayarak umarım yaparsın artık.


zemberek

ABİ dediklerini yaptım. hex dosyasını elde ettim fakat devre çalışmadı.ledin yarım saniyede 1 yanıp sönmesi gerekiyordu.
acaba benim şu en baştaki yorumdaki ilk 2 kodu kullanabileceğim başka bir program yokmudur.

@ Device  pic16F88, INTRC_OSC_NOCLKOUT
@ Device  pic16F88, MCLR_OFF

bu sigortaları silmeden de yapılamazmı .
bence sıkıntı bu kodları silince oluyo.

basit led programı şu şekilde;

@  __config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF

TRISB = %11110111

SYMBOL Led =PORTB.3

Program:

   LOW Led
   PAUSE 500
   HIGH Led
   PAUSE 500

GOTO Program

hexini alıp 16f88'e atıyorum.devrem çalışmıyo bence içindeki kodlarda sıkıntı var.
üstteki iki kod önem arzediyor bence siz ne düşünüyorsunuz.

acaba chipe atma işleminimi yanlış yapıyorum;

ilkönce pickkiti usb ile bağlıyorum
sonra chipi kite birleştirip pickkit2 v2.61 programını açıp içindekileri erase sembolüyle siliyorum
sonra file/ımport hex  e gelip programı seçiyorum
sonra write komuduyla yazıyorum.
programı kapatıp usbyi çıkarıyorum entegreyi devreye yerleştiriyorum.

not : cdnin içinde pickkit 3 programıda var.

abi elektronikçi değilim. elektrik müh. okuyorum.
elektrik motorlarında uzmanlaşmak istiyorum.
tezimde motor kontrol etmek.
pıc setini alıp bunu yapabileceğimi düşünüyordum.
temel elektronik elemanları biliyorum. pıc ilk deneyiimim.
kitap anlaşılır şekilde anlatıyor ama nerde hata yaptığımı bilmiyorum.
o yüzden baştan başladım.(led gibi)
lütfen sabrederek bana yardım edin.başınızı ağrıttıysamda kusuruma bakmayın.

ete


Sigorta ayarı verdim ama sırf hata vermeden derleniyormu diye bakmak için rastgele bir ayar verdik.
Anlaşılan elinde yapılmış birde devre var. Öyle anlıyorum.
Bu devrede her halde kristal yada rezonatör kullanmıyorsun. O halde sigorta ayarın şöyle olmalı;


@  __config _CONFIG1, _INTRC_IO  & _WDT_ON &  _LVP_OFF & _CP_OFF & _MCLR_OFF

diğer satırı sil yerine bunu yaz yeniden derle ve dene bakalım.
Ete

Powered by EzPortal