Illegal Opcode hatası

Başlatan Kefran, 25 Nisan 2013, 00:19:56

Kefran

@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_ON
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
;__config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF
DEFINE OSC 4
trisb=0
portb=0
trisa=255
CMCON=7
basla:
if porta.0=1 then
gosub ondon
else
portb=0
endif
if porta.1=1 then
gosub arkadon
else
portb=0
endif
if porta.2=1 then
gosub sagdon
else
portb=0
endif
if porta.3=1 then
gosub soldon
else
portb=0
endif
goto basla


ondon:
portb=%00000101
pause 5
return

arkadon:
portb=%00001010
pause 5
return

sagdon:
portb=%00001001
pause 5
return

soldon:
portb=%00000110
pause 5
return

arkadaşlar derleme yaptığımda ıllegal opcode hatası veriyo yardımcı olursanız çok sevinirim
Kef to Easy A.K.A

erhan673

yazılımsal bir hata gözükmüyor kendi derleyicimde denedim çevirdi... derleyicini silip baştan kur istersen

F®T

#2
hiç bir sorun yok.sen mutlaka use asm seçenekleri açık derleme yapıyorsun.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

umiter

#3
Merhaba,

Derleyici sürümü hakkında bilgi verirmisin ?

Hatanın kaynağından biri sigorta tanımının pic'e göre uyarlanmamasından kaynaklanır.

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

ete

Sigorta ayarlarını @ Device komut satırı ile birlikte verirsen ve derlemeyide MPASM kullanarak yaparsan hem illegal opcode hemde found label after column1 hatasını verir.
Ya derlemeyi tamamen PBP da yapacaksın yada o sigorta satırlarını kapatıp altta yer alan ve kapalı olan sigorta satırının başına @ işareti koyu birde boşluk verdikten sonra sigorta satırını devam ettireceksin.
Tabiiki derlemeyi Mpasm de yapıyorsan PBP kalsöründe yer alan 16f628A.inc dosyasındaki altta yer alan sigorta satırını başına ; koyarak kapatıp geriye kayıt etmen gerekiyor.

Ete

umiter

#5
Merhaba

Kodunuzdaki tüm sigorta tanımlarını kaldırıp aşağıdaki şekilde sigorta tanımlarını yaparsanız.
PBP 3 üzeri sürümlerinde kodunuzu derleyebilirsiniz.

Açıklama

' Name          : 16f628A_fuse.pbp
' Compiler      : PICBASIC PRO Compiler 3.0.6.1
' Assembler     : PBP3
' Target PIC    : PIC16F628A
' Hardware      : No Testing, fuse test
' Oscillator    : 4MHz
' Keywords      : FUSE3x
' System        : W7/64B
' Description   : PICBASIC PRO program fuse setting, compiling error(s).'



Sigorta Tanımları

@ __CONFIG _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _LVP_OFF & _CP_OFF

Watchdog Timer Enable bit : _WDT_ON 
Power-up Timer Enable bit : _PWRTE_ON
RA5/MCLR/VPP Pin Function Select bit : _MCLRE_OFF
Low-Voltage Programming Enable bit : _LVP_OFF
Flash Program Memory Code Protection bit : _CP_OFF


Diğer;
Oscillator Selection bits : _XT_OSC ( Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN )
Brown-out Detect Enable bit : _BOREN_OFF
Data EE Memory Code Protection bit : _CPD_OFF veya DATA_CP_OFF



Aşağıdaki kodunuzu siliniz.

@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_ON
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
;__config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF


NOT :
+Sigorta tanımlarında Code Protect kullanılmıyor.
+PBP Derleyici klasörü altındaki DEVICE klasöründeki dosyalarda değişiklik yapmayınız.

Derlenen kodu ekte indirebilirsiniz.


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

Kefran

öncelikle : ete hocam makinem windows 8 ve mpasm tikini işaretlemeden derleme yapılamıyor.ayrıyetten dediğiniz 16f628A.inc önüne ; de koydum tekrar aynı hatayı aldım

sayın ümiter , sizede çok teşekkür ederim ilgilendiğiniz için yanlız derlemeyi pbp klasörü olarakda koyabilirmisiniz. anlamam daha rahat olucak. bide ricam olucak sizin kullandığınız pro basic indirme linkini gönderebilirmisiniz :) herkese teşekkür ederim..
Kef to Easy A.K.A

umiter

Alıntı yapılan: Kefran - 29 Nisan 2013, 21:38:23
öncelikle : ete hocam makinem windows 8 ve mpasm tikini işaretlemeden derleme yapılamıyor.ayrıyetten dediğiniz 16f628A.inc önüne ; de koydum tekrar aynı hatayı aldım

sayın ümiter , sizede çok teşekkür ederim ilgilendiğiniz için yanlız derlemeyi pbp klasörü olarakda koyabilirmisiniz. anlamam daha rahat olucak. bide ricam olucak sizin kullandığınız pro basic indirme linkini gönderebilirmisiniz :) herkese teşekkür ederim..

Sayın Kefran;

Forumu kullanarak gönderilen kodda ki sigorta tanımlarında yapılacak değişiklileri ayrıntılı olarak belirttim. Biraz dikkat edersiniz alacağınız sonuç olumlu olacaktır.
PBP derleyicisini kendi sitesinden 15 günlük olarak indirip kullanabilirsiniz. Öğrenci iseniz size uygun indirilimli lisansı mevcuttur.


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

ete

#8
Yaptığım öneriyi denedim. Sorunsuz olarak derledi. Kusur ya sende yada kullandığın pbp sürümünde.
Ete

Kefran

sayın ümiter dediğiniz sürüm bu olmalı heralde ?

ama bu hatayı aldım ama hatada complier ayarlarından olduğunu düşünüyorum ama bu bana fazla yabancı

resimler eklenti olarak aşağıda verdim .
teşekkür ederim.

Kef to Easy A.K.A

umiter

Merhaba,

Gönderdiğiniz resimlerden anladığım sizin sistemde kurulu MPLAB IDE vx.xx sürümü yok,
Kurulumu var ise kontrol ediniz, yoksa kurulumu yapınız.

Siz PBP internet sitesinden sadece derleyici kısmını indirmişsiniz. İsterseniz MPLAB ile birlikte olan paketi indirip kurunuz.
Bu işlemden sonra kodunuzu derleyebilirsiniz, yalnız bir noktaya dikkatinizi vermenizi önermek istiyorum. Şöyleki;

Sigorta tanımlarını gösterdiğiniz şekilde yapabilirsiniz bundan sonra HEX dosyasını mikrodenetleyiciye yazmak istediğinizde birkaç uyarı yapacak, bunları aldığınızda olası kod çalışmayacaktır. PBP temiz bir kurulum ister bu sebeple burayı aşmanız biraz zaman ister. Bu kısmı hızlı geçmek için ETE hocamızın belirttiği gibi önce PBP3 klasörü altındaki DEVICE klasöründe bulunan mikrodenetleyici dosyasında bulunan #CONFIG satırları arasındaki sigorta satırların önüne ; koyun ve dosyayı kaydedip çıkın. Bu işlemleri yaparken PBP ( MicroCode Studio ) kapalı olsun.

Sonra MPASM Suite klasörü altındaki mikrodenetleyici dosyasını bulup açın ve içerisinden sigorta tanımlarına bakın ve kodunuza uygun olanları yerleştirin.

MicroCode Studio tekrar açıp kodunuzu yükleyin, MPASM ile kodunuz derlenecek ve sorunsuz bir şekilde mikrodenetleyicide çalışacaktır.

NOT : Sigorta parametleri ile derlediğiniz HEX kodu münkünde ISIS te test edin.

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

bygece

#11
merhabalar konuyu hortlattım fakat aynı hata bendede var

picbasic pro 2.60 mplab 815 mcs 4.0 kurulumunu yaptım makinem win7 home pre 64bit



Basic'e nasıl başlanır, Gerekli programlar ve kurulumlar  burdaki konuyu iyice inceledm harfiyen yaptım


pbp klasöründeki dosyada degişiklik yaptım
;        __config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF

; ekledim

mcs de klasörleri gösterdim ama derleyemedim bir türlü hata bendemi pcdemi code demi


code um

@ DEVICE pic16F628A                                                   
@ DEVICE pic16F628A, WDT_OFF             
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT             
@ DEVICE pic16F628A, PROTECT_ON         

  TRISB=%11111111
  TRISA=%00000000
  PORTA=0
  PORTB=0
 
  CMCON=7             
 
  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    '

 
  b1 VAR BYTE
  b2 VAR BYTE
  b3 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

   


@ __CONFIG _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _LVP_OFF & _CP_OFF sigorta tanımlamalarınıda ekledim yine derleyemedim

ete

Bu açıklamayı defalarca yaptım dilimde tüy bitti. Gerçekten merak ediyorum acaba!!!!! O, önemli bilgiler başlığı altındaki sigorta ayarlarının nasıl yapılacağını açıklayan mesajım çokmu anlaşılmaz. Olabilir çünki bilen adam bazen karşısındakininde bir şeyler bildiğini varsayarak yazar. Bende öylemi yazdım diye düşünüyorum gerçekten.

Gelelim sorununa;
64 bitlik makinada derleme yaptırabilmek için sırası ile aşağıdakileri yapman gerekiyor. Bir kısmını yapmışsın ama doğru yanlış ne olduğuna bakmıyorum. Sende bakma sırası ile bu yazdıklarımı uygula bakalım.
Bütün bu yazılanların doğru olabilmesi ve derlemeeninbaşarılı olabilmesiiçin makinanda C ana klasörü altında bir PBP klasörü yer alması gerekiyor. Bu yok ise öncelike bir derleyici ayarayıp makinaya kurman gerekir.
1. Öncelikle PBP klasöründe yer alan 16F628A.INC dosyasını microCodeStudio arayüz içinde sanki bir BAS dosyası açıyormuş gibi açacaksın.
Altta yer alan;
;        __config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF komut satırını bulacaksın Benim yaptığım gibi başına ; koyup tekrar SAVE edeceksin.

2. Programın başında yer alan;
@ DEVICE pic16F628A                                                   
@ DEVICE pic16F628A, WDT_OFF             
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT             
@ DEVICE pic16F628A, PROTECT_ON
satırlarını sileceksin. Bu satırlar 38 bit makinaya ait derlemede kullanılan sigorta ayarlarıdır.
Onun yerine aşağıdaki satırı kullanacaksın.
@ __config _BODEN_ON & _BOREN_ON & _CP_ON & _DATA_CP_ON & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT

3. MCS , üstte yer alan seçeneklerden View seçeneğne tıklayacaksın. Açılan pencerede ;
Compile and Program Options seçeneğini seçeceksin.
Açılan Pencerede ortada yer alan Assembler seçeneğine tıklayacaksın.
Sağ tarafta yer alan Use MPASM kutusuna tıklayıp seçili hale getireceksin.
Şimdi iş artık bir MPASM klasörü bulmaya kalıyor.  Aynı pencerede yer alan Find Manually butonuna tıklayarak MPASM kaslröünün yerini göstereceksin. Var ise makinanda Proteus klasörü içinde yer alan Tools alt klasörü için bir MPASM klasörü yer almaktadır. Onu gösterirsin. Yada Find Automatically seçersen oda zaten aynı yeri bulur otomatikman.
Bunuda yaptıktan sonra artık programın derlenecek hale gelmiş olur. Derleme butonuna basıp derleyebilirsin.

Ete

bygece

hay allah razı olsun eski satırları silmemiştim ben yani eski sigorta ayarlarını silmeden yapuyordum şimdi derleme yaptı aa pic e atarken hata veriyor bu seferde :(

bygece

#14
bişey daha soracam hocam naptıysam olmadı burdaki dökümanda bildiginiz gibi role acıp kampama kodları fakat bunu ben hazır devreye uygulamaya calısıyorumaşagıdaki kod çalışmadı


  SIFRE_1 var  PORTB.1    '
  SIFRE_2 var  PORTB.0    '

KOD daki bu satırlarıda böyle yaptım gene röleler acmıyor

hatam nerde anlayamadım

böyle denedim


  TRISB=%10011111
  TRISA=%00000000
  PORTA=0
  PORTB=0
 
  CMCON=7             
 
  STD var  PORTB.3    '1 STD  8870)TONE enable
  E1  var  PORTB.7    'Q1 du 8870
  E2  var  PORTB.6    'Q2 du 8870
  E3  var  PORTB.5    'Q3 du 8870
  E4  var  PORTB.4   'Q4 du 8870

  SIFRE_1 var  PORTB.1    '
  SIFRE_2 var  PORTB.0    '

 
  b1 VAR BYTE
  b2 VAR BYTE
  b3 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


     
     
   


çalışmadı

böyle denedim yine yok

@ __config _BODEN_ON & _BOREN_ON & _CP_ON & _DATA_CP_ON & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT      
   
 
  TRISB=%10011111
  TRISA=%00000000
  PORTA=0
  PORTB=0
 
  CMCON=7             

     
     
   

Powered by EzPortal