M

16F877 için illegal opcode hatası ve found label after column1. ( device ) uyarı

Başlatan meakdogan, 20 Mayıs 2013, 20:19:11

meakdogan

merhaba
windows 7 64 bıt BİGİSAYARIMA  pro basıc (PBP) 2.60 , mikro code studio ve MPLAB IDE 8.15 pragramlarını yukledım.

codumu PBP DA derleyeceğim. MCS de ana ekranda , View menüsünde "Compile & Program Options" kısımındakı düzenlemeleri yaptım. ete3 ve ete4 teki ektedir.

16F877 için pbp dekı ınc dosyasındakı config önüne ; virgül koyup kayıt ettım . resim ete2 de mevcuttur. sonra config satırını ana ekranada yerleştirdirdim oda ete1 resmindekı ektedır. ama bunları yapmama rağmen ete hocamın forum sıtelerındekı önerılerını de yaptım ama hala
illegal opcode hatası  alıyorum.  başka bir pc dede kurdum windows 7 64 bıtlı pc gıne aynı hataları  verdi .

bunların dışında ne eksık yapmışım bu konuda bilgilendirirseniz sevınırım. şimdiden teşekurler

ete

Sigorta satırlarıı en sondaki hariç kapat. Öyle derle. Bu hata hala sigorta satırlarının pm.assembler formatında verildiğini gösteriyor. Bu konu ile ilgili yazıları yeniden oku. Özellikle mpasm de sigorta formatı ne olmalı onu yeniden keşfetmelisin. Hepsi yazılarda mevcut.
Ete

elektromanyaq

@ __config _XT_OSC & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF
sadece bunu dene dıgerlerını sıl

meakdogan

teşekurler ete hocam ve elektro hocam sigortaları silip derleyınce sadece @ __config _XT_OSC & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF  yazınca haloluyor ve hex dosyasını elde ettım. gözumden kaçmış ayrıntı bilgi için teşekurler :)


umiter

Alıntı yapılan: meakdogan - 21 Mayıs 2013, 00:32:01
teşekurler ete hocam ve elektro hocam sigortaları silip derleyınce sadece @ __config _XT_OSC & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF  yazınca haloluyor ve hex dosyasını elde ettım. gözumden kaçmış ayrıntı bilgi için teşekurler :)

Merhaba,

HEX yaptıktan sonra simulasyonda yada kendi devresinde denediniz mi ? Bazen derlemiş olmasına rağmen kod çalışmıyor, sonra hata nerde diye döndürüp duruyor :)

Bilginiz olsun, kolay gelsin.

Saygılarımla.

Bilgi elde edilmesi zor,  tüketilmesi kolay bir bulamaçtır.

meakdogan

evet hocam  derledım proteus ta simule ettım çalışıyor. kendı devreme daha aktaramadım inş problem çıkmaz :)

bide sevgili hocalarım projem için mg995 servo motor kullanıyorum. motorun puls aralığını bulmaya çalışıyorum codumu yazdım simule ederken sıkıntı var.

servo motorun puls aralığını bulmak için ilk etepta 500 mıkrosonıye verdım ve her seferınde 50 mıkro sanıye artmasını istiyorum artırdıktan sonra led yanıp sönmesini istiyorum kı motor  çalışmaya başladıktan sonra kaç kere yanıp sönerse 50 ile çarpıp puls aralığını bulmayı hedeflıyorum .

ama simule ederken ıstediğimi alamıyorum led bır kez yanıyor motorda -90 derece yanıp duruyor. acaba nerde hata yapıorum yardımcı olabılırmısınız ? pıc basıc pro kodum aşağıda kı gibidir. 16F877A kullanıyorum .


PORTB=0:TRISB=%00000000         
'-----------------------------------------------------------------
@ __config _XT_OSC & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF
'-----------------------------------------------------------------

A VAR BYTE
Y VAR BYTE
A= 500

PAUSEUS 200
'-----------------------------------------------------------------
BASLA:
For Y=0 To 39     
       
HIGH PORTB.1

Pauseus a

LOW PORTB.1

Pauseus 20000 - A 

PortB.0 = 1

Pauseus 500   

A = A + 50
Next
goto BASLA




umiter

meakdogan;

Picbasic te puls işine bakan pulsin ve count komutları vardır. Bu komutlar sanırım sizin işinizi görecektir.

Devrenize bir LCD ekleyerek bu komutlar yardımı ile lede gerek duymadan akışı izleyebilirsiniz.

Saygılarımla.

Bilgi elde edilmesi zor,  tüketilmesi kolay bir bulamaçtır.

ibocakir06

Hocalarım arkadaşlarım ben de 16F877A kullanıyorum. Yardımınıza ihtiyacım var. Ne program yazarsam yazıyım error105 ve error113 alıyorum. Ancak derlerken 16F877 seçersem öyle bir hata vermiyor. Yukarıda yazanları uyguladım fakat ben mcs'de 16F877A.ınc dosyasını açtığım zaman aşşağıda confg satırı zaten yok. İstesem de kaldıramıyorum. PBP2.60 yüklü bilgisayar win7 64 bit. Şimdiden teşekkürler

ete

O zaman aşağıdaki satırları al ve 16F877A.INC olarak kayıt et.
Doğrusu budur. İlgili config satırıda kapaı durumdadır.

        NOLIST
    ifdef PM_USED
        LIST
        include 'M16F87xA.INC'  ; PM header
        device  pic16F877A, xt_osc, wdt_on, lvp_off, protect_off
        XALL
        NOLIST
    else
        LIST
        LIST p = 16F877A, r = dec, w = -302
        INCLUDE "P16F877A.INC"  ; MPASM  Header
;       __config _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
        NOLIST
    endif
        LIST


Ete

TA2AI

@ DEVICE pic16F628A                                                  
@ DEVICE pic16F628A, WDT_OFF              
@ DEVICE pic16F628A, PWRT_ON 
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT              
@ DEVICE pic16F628A, PROTECT_ON        
  
  TRISB=%11111111
  TRISA=%11110000
  PORTA=0
  PORTB=0            
  CMCON=7                                  '
  OPTION_REG.7=0
  STD var  PORTB.0    '1 STD  8870)TONE enable
  E1  var  PORTB.4    'Q1 du 8870
  E2  var  PORTB.3    'Q2 du 8870
  E3  var  PORTB.2    'Q3 du 8870
  E4  var  PORTB.1  'Q4 du 8870

  SIFRE_1 var  PORTA.0    ' 
  SIFRE_2 var  PORTA.1
  SIFRE_3 var  PORTA.2
  SIFRE_4 var  PORTA.3
  
  b1 VAR BYTE
  b2 VAR BYTE
  b3 VAR BYTE
  TEMP VAR BYTE
  b1=0
  b2=0
  b3=0
      
  c1  var BYTE  '1° code DTMF
  c2  var BYTE  '2° code DTMF
  c3  var BYTE  '3° code DTMF
  c4  var BYTE  '4° code DTMF
  Q1  var BIT
  Q2  var BIT
  Q3  var BIT
  Q4  var BIT
  
  READ 10,temp
  IF TEMP=10 THEN SIFRE_1=1
  IF TEMP=10 THEN SIFRE_2=1
    IF TEMP=10 THEN SIFRE_3=1
    IF TEMP=10 THEN SIFRE_4=1
    
BASLA:
DTMF1:    
            BUTTON STD,1,255,0,b1,1,DECODER1    
            PAUSE 20
            BUTTON STD,0,255,0,b2,1,RAZ          
              GOTO DTMF1
DECODER1:    
            Q1=E1        
            Q2=E2
            Q3=E3
            Q4=E4
            c1 =  Q1 + 2*Q2 + 4*Q3 +  8*Q4    
            GOTO DTMF2
          
DTMF2:    
            b3=0
            WHILE b3<75    
            BUTTON STD,1,255,0,b1,1,DECODER2    
              PAUSE 20
            b3=b3+1
            WEND
            GOTO DTMF1
DECODER2:    
            Q1=E1        
            Q2=E2
            Q3=E3
            Q4=E4
            c2 =  Q1 + 2*Q2 + 4*Q3 +  8*Q4    
            GOTO SIFRE
              
RAZ:  
      
            Q1=0
            Q2=0
            Q3=0
            Q4=0
              GOTO DTMF1
            END
SIFRE:    
          PAUSE 10    
            IF c1=8 AND c2=1 THEN  
          SIFRE_1=1
          WRITE 10,10:pause 10    
          ENDIF
          IF c1=9 AND c2=1 THEN  
          SIFRE_1=0
          WRITE 10,255:pause 10
          ENDIF          
          IF c1=7 AND c2=2 THEN  
          SIFRE_2=1
          WRITE 10,10:pause 10    
          ENDIF
          IF c1=6 AND c2=2 THEN  
          SIFRE_2=0
          WRITE 10,255:pause 10
          ENDIF          
          IF c1=12 AND c2=3 THEN  
          SIFRE_4=1
          WRITE 10,10:pause 10    
          ENDIF
          IF c1=11 AND c2=3 THEN  
          SIFRE_4=0
          WRITE 10,255:pause 10
          ENDIF          
          IF c1=12 AND c2=4 THEN  
          SIFRE_3=1
          WRITE 10,10:pause 10    
          ENDIF
          IF c1=11 AND c2=4 THEN  
          SIFRE_3=0
          WRITE 10,255:pause 10
          ENDIF
          IF c1=12 AND c2=10 THEN  
          SIFRE_1=1
          SIFRE_2=1
          SIFRE_3=1
          SIFRE_4=1
          WRITE 10,10:pause 10    
          ENDIF
          IF c1=12 AND c2=5 THEN  
          SIFRE_1=0
          SIFRE_2=0
          SIFRE_3=0
          SIFRE_4=0
          WRITE 10,255:pause 10
          ENDIF        
               
             
illegal opcode hatası alıuyorum nasıl düzenleye bilriim ayrdımcı olur msunuz





aRci

Sigorta ayarlarını kapatınca derleme yaptı.ilk olarak device satırlarını kaldırarak derlemeyi deneyin eğer çalışırsa sizdede c:\pbp klasöründe ilgili denetleyicinin ınc dosyasındaki sigorta ayarını kapatmalısınız. bunun için formda konu var acık okuyun

ete

Hangi derleyici versiyonu kullandığınızı belirtmemişsiniz. Sorun zaten versyon bağlı sigorta ayarları kullanım şekli.
Mevcut sigorta ayarlarını silip yerine aşağdakilerden birini deneyin. Sorun devam ediyor ise diğerini deneyin.

Ama aşağıdaki inkte yazılı olanlarıda okumanızı öneriyorum.

https://etepic.com/index.php/topic,1687.0.html

Ete


#CONFIG
 __config _BODEN_ON & _BOREN_ON & _CP_ON & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT 
#ENDCONFIG   

ASM
 __config _BODEN_ON & _BOREN_ON & _CP_ON & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT 
endasm 

TA2AI

Çalıştı teşekkür ederim. Diğer bir sorum devre şifreyi çoğaltınca 2 haneden 4 haneye çalışmıyor neşen kaynaklanır ekleme yapıyorum c1 c2 c3 c4 diye. Sonra tekrar eski haline alınca komple sistem çalışmıyor

TA2AI

Alıntı yapılan: aRci - 19 Ekim 2024, 17:43:07Sigorta ayarlarını kapatınca derleme yaptı.ilk olarak device satırlarını kaldırarak derlemeyi deneyin eğer çalışırsa sizdede c:\pbp klasöründe ilgili denetleyicinin ınc dosyasındaki sigorta ayarını kapatmalısınız. bunun için formda konu var acık okuyun
Sigorta ayarını kontrol etmiştim

Powered by EzPortal