F

illegal opcode

Başlatan Forumkurdu22, 08 Mayıs 2014, 21:42:32

Forumkurdu22

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [Sedat SARIGÜL]                                   *
'*  Notice  : Copyright (c) 2014                                *
'*          : All Rights Reserved                               *
'*  Date    : 26.02.2014                                        *
'*  Version : 1.0                                               *
'*  Notes   : Mini SUMO ROBOT                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F628
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT
@ DEVICE pic16F628, MCLR_OFF

CMCON=7
VRCON=0
say var Word


'------ GİRİŞLER-----------------------------------------;
Input PORTA.2' 17. PİN / 1. CNY
Input PORTA.3' 18. PİN / 2. CNY
Input PORTB.4' 10. PİN / SOL SHARP
Input PORTB.5' 11. PİN / SAG SHARP

'-------ÇIKIŞLAR-----------------------------------------;
Output PORTB.0 ' 6. PİN / SOL MOTORLAR İLERİ
Output PORTB.1' 7. PİN / SOL MOTORLAR GERİ
Output PORTB.2 ' 8. PİN / SAG MOTORLAR İLERİ
Output PORTB.3 ' 9 PİN / SAG MOTORLAR GERİ

'------ DEĞİŞKENLER--------------------------------------;
Symbol SOLSHARP=PORTB.4
Symbol SAGSHARP=PORTB.5
Symbol SOLCNY=PORTA.2
Symbol SAGCNY=PORTA.3
Symbol SOLMI=PORTB.0
Symbol SOLMG=PORTB.1
Symbol SAGMI=PORTB.2
Symbol SAGMG=PORTB.3
'-------ANA DÖNGÜ --------------------------------------- ;
bekle:
For say=1 To 5
PORTB.0=0
PORTB.1=0
PORTB.2=0
PORTB.3=0
PORTB.6=1
pause 500
PORTB.0=0
PORTB.1=0
PORTB.2=0
PORTB.3=0
PORTB.6=0
pause 500
Next

basla:

If SOLSHARP=0 And SAGSHARP=0 And SOLCNY=1 And SAGCNY=1 Then GoSub DUZGIT
If SOLSHARP=1 And SAGSHARP=1 Then GoSub DUZGIT
If SOLSHARP=1 Then GoSub SAGAGIT
If SAGSHARP=1 Then GoSub SOLAGIT
If SOLCNY=0 Then GoSub SAGGERIDON
If SAGCNY=0 Then GoSub SOLGERIDON
GoTo basla
End

DUZGIT:
SAGMI=1
SOLMI=1
SAGMG=0
SOLMG=0
GoTo basla
End

SOLAGIT:
SOLMI=1
SOLMG=0
SAGMI=0
SAGMG=0
GoTo basla
End

SAGAGIT:
SOLMI=0
SOLMG=0
SAGMI=1
SAGMG=0
GoTo basla
End

GERIDON:
SOLMI=1
SAGMG=1
SOLMG=0
SAGMI=0
GoTo basla
End

SAGGERIDON:
SOLMI=0
SOLMG=1
SAGMI=0
SAGMG=1
pause 300       
SOLMI=1
SOLMG=0
SAGMI=0
SAGMG=1
pause 450
GoTo basla
End

SOLGERIDON:
SOLMI=0
SOLMG=1
SAGMI=0
SAGMG=1
pause 300   
SOLMI=0
SAGMG=0
SAGMI=1
SOLMG=1
pause 450
GoTo basla
End


Bu programda illegal opcode ve found label after column hatası alıyorum yardımcı olursanız sevınırım.

MS_59

programı MPASM ile derlemeye çalışıyorsun
view menüsü altında compile and program options menüsündeki assembler sekmesi altındaki mpasm işaretini kaldır

ben derledim sorun yok
mehmet

Forumkurdu22

o zamanda C:/pbp/pm.exe programı 64 bit sürümüyle uyumsuzdur diyor.Onu nasıl halledebiliriz.

MS_59

aşağıdaki linkte ete hoca ayrıntılı olarak anlatmış

http://etepic.com/index.php/topic,300.0.html
mehmet

Tesla Coil

windows8 64bit e kurarken epey zorlandım ben. Aşağıda attığım linkteki programları yukarıda arkadaşında dediği gibi ETE hocamın başlangıç yazısındaki gibi kurarsan sıkıntısız çalışıyor. İndirdiğim onca sürümden sonra son olarak aşağıdakiler kurtardı beni saygılar.




http://www.dosyasitesi.com/download.php?file=dddc5f3a1fd852c5c580180f340995de

ete

64 bit makinada PM assembler (pm.exe) çalışmıyor. Onun yerine MPASM nin assemlerinin kullanılması gerekiyor.
Yapılması gereken tek şey MCS de View menüsünde Compile and Program Options seçilip gelen menüde Assembler seçilerek sağdaki MPASM kutusu işaretlenecek. tabiiki orada ayrıca geçerli bir MPASM adresininde gösterilmesi gerekiyor. Proteus klasörü içinde Tools kalsörü var onun içinde mevcut orayı manuel olarak gösterirseniz sorun kalmayacak.
Ama sigorta ayarları vs. ninde 64 bite göre yapılması gerekiyor an iyisi  Forumda "Önemli Bilgiler " başlığı altındaki Basice başlama ile ilgili konu başlığını dikkatlice okumak her şey orada detaylı açıklanmış vaziyette.

Ete

Forumkurdu22



sigorta ayarlarını bu şekilde yaptım (@ __config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF)
yalnız şimdide (overwriting previous address contents) diye bir hata geldi önceki adres üzerine yazıyorsunuz gibi bişeymi demek istedi tam olarak anlamadım.

ete

Ya okuduğunu anlamıyorsun yada özellikle okumanı istediğim konu başlığını okumamakta ısrar ediyorsun. Çok mu zor geliyor okumak. Orayı okusaydın, PBP klasörü içinde yer alan ve  16F628.INC  dosyası içinde alt satırlarda yer alan ve senin düzenlediğin sigorta satırına benzeyen bir satır olduğunu görecek ve o satırın başına  ( ; )  işareti koyup satırı kapatmış olacak ve geri kayıt edeceğini anlayacaktın. Böylece derleyicide derleme esnasında o inc dosyasını kullandığı için iki defa sigorta ayarı derlemeye çalışmayacak yalnızca senin programdaki satırı değerlendirecek idi.

Ete

Forumkurdu22

evet anlamıyorum saol !!!!!!!! okuduk yaptık arkadasım tekrar hata verdı işte 16f62x.ınc degıstrıp kayıt ettık ama olmadı sızın o muhtesem zamanınızı alarak hatada ettık bu sekıılde harıka ısler yaparısınız emınım. bu sekılde formu baya yararlı kullanıslı oldugunu anladık kendını bsy sanan ınsanlar harıkasınız..........................

ete

Hemen de bozulup içindekileri ortaya dökmeyide pek seviyorsun anlaşılan.
Bütün bunları söylemeden önce biraz düşünseydin belkide yalnızca teşekkür ederdin.

Sana yol gösterdim ama gösterdiğim yoldan gittiğini zannediyorsun ama ya beceremiyorsun yada gittiğini sanıyorsun.
Bahsi geçen hata,  yalnızca ve yalnızca 16F628.INC dosyasında yer alan ve ,
;        __config _XT_OSC & _WDT_ON & _PWRTE_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF
şeklinde kapatılmış olması gerekirken kapatılmayıp,

        __config _XT_OSC & _WDT_ON & _PWRTE_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF

şeklinde kalmış olması halinde ortaya çıkacak bir hatadır.

Kullandığın işlemcinin birde 16F628A modeli vardır belkide bununla derliyorsundur. Her ikisinde de ilgili satırın kapatılıp geri kayıt edilmesi sonra derleme işlemnin yapılması gerekirdi.

Bunun başka yolu yok iken böyle bir hatanın çıkmış olmasını ben başka neye yorumlayabilirimki. Adım gibi eminimki o bahsi geçen INC dosyalarını yeniden açtığın zaman kapatılmamış olduklarını göreceksin.

Bak gördünmü biz kendimizi bir şey sanmıyoruz eşeleyerek elde ettiğimiz bu bilgiler sayesinde biz bir şeyiz zaten. Sen bir şey değilsin sorun burada.

Ete


Forumkurdu22



kullandığım ayarlarda bunlar @  __config _MCLR_OFF & _INTRC_OSC_NOCLKOUT_

bu şekilde hem a yı hemde diğerini kayıt ettim bunu yapmak için az vaktiniz olunca haliyle insan sinirleniyor .

bu şekilde değil mi cidden ben anlamıyorum o zaman.

ete

Gördünmü bak yanlış yaptığın apaçık ortada.
Açıklamalarda ne yazıyor bir kez daha vereyim,
1. C ana klasöründe yer alan (işlemci adı.INC) dosyası MCS içinde yüklenecek.  O halde Micro Code Studio da sanki bir BAS dosyası açarmış gibi C ana klasörü içinde yer alan PBP klasörü içinde 16F628.INC dosyasını yükleyeceksin.
Ekrana şu dosya gelecek;
'----------------------------------------------------------------------------------------------------------------------------------------------------------------
;****************************************************************
;*  16F628.INC                                                  *
;*                                                              *
;*  By        : Leonard Zerman, Jeff Schmoyer                   *
;*  Notice    : Copyright (c) 2002 microEngineering Labs, Inc.  *
;*              All Rights Reserved                             *
;*  Date      : 09/27/02                                        *
;*  Version   : 2.43                                            *
;*  Notes     :                                                 *
;****************************************************************
        NOLIST
    ifdef PM_USED
        LIST
        include 'M16F62x.INC'   ; PM header
        device  pic16F628, xt_osc, wdt_on, pwrt_on, mclr_on, lvp_off, protect_off
        XALL
        NOLIST
    else
        LIST
        LIST p = 16F628, r = dec, w = -302
        INCLUDE "P16F628.INC"   ; MPASM  Header
;        __config _XT_OSC & _WDT_ON & _PWRTE_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF
        NOLIST
    endif
        LIST
'--------------------------------------------------------------------------------------------------------------------------------------------------------------
Alttan 4. satır başına ; koyularak kapatılmış sende aynısını yapacaksın ve SAVE tuşuna tıklayıp geri kayıt edeceksin.

Sen ne yapmışsın !!, gidip PBP klasöründe yer alan INC klasörünü açıp içindeki  M16F62x.INC dosyasını yüklemişsin. Alakasız bir satırıda kapatmışsın. Hata burada. Bu yüzden okumadın yada okuduğunu anlamadın diyordum haklıymışım.

Umarım bu sefer doğru yaparsın. Yüklemen gereken dosya adı 16F628.INC dosyasıdır.

Ete

Forumkurdu22

ya usta kusura bakma cidden çok acildi gerginliğime ver değil okuduğumu baktığımı göremiyorum saolasın.
Son bir şey daha var şimdi ben daha önce pc de

@ DEVICE pic16F628
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT
@ DEVICE pic16F628, MCLR_OFF

koyuyordum şimdi @ __config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF bu kod burdakilerin hepsini kapsiyor değilmi?

ete

Kapsıyor fazlası bile var

Ete

Forumkurdu22

çok teşekkürler tekrar kusura bakmayın.

Powered by EzPortal