Hex Dosyası Yapamıyorum

Başlatan rayman, 02 Mayıs 2021, 20:29:16

rayman

Micro Code Studio programında pbp uzantılı dosyamda isim değiştirip hex. koduna çevirmek istiyorum. Ayarlarımı layığı ile yaptım fakat %100 çevirildi diyor errır yazıyor . Mpaswin hex kodunuda üretemiyorum ondada hata veriyor.. Sanırım bu çalışma farklı dilde yazılmış ondan mı pek bilemiyorum. Daha önce farklı dosyada yapmıştım '' sadece ekranda ENGİN GEZİCİ yazmasını istemiştim :
' PicBasic Pro program to measure voltage (0-5VDC)
' and display on LCD with 2 decimal places
'
' This program uses the */ operator to scale the
' ADC result from 0-1023 to 0-500.  The */ performs
' a divide by 256 automatically, allowing math which
' would normally exceed the limit of a word variable.
'
' Connect analog input to channel-0 (RA0)

' Define LOADER_USED to allow use of the boot loader.
' This will not affect normal program operation.
'Define LOADER_USED 1
@ DEVICE pic16F877, HS_OSC
DEFINE OSC 20 
' Define LCD registers and bits
DEFINE  LCD_DREG PORTB 'LCD Data Bağlantı Portu
DEFINE  LCD_DBIT 4 'LCD Data Yolu Başlangıcı
DEFINE  LCD_RSREG PORTB 'LCD Reset Bağlantı Portu
DEFINE  LCD_RSBIT 3 'LCD Reset Bağlantı Yolu 
DEFINE  LCD_EREG PORTB 'LDC Enabel Bağlantı Poru
DEFINE  LCD_EBIT 2 'LCD Enabel Bağlantı yolu
define LCD_LINES 2 

' Define ADCIN parameters
DEFINE  ADC_BITS        10    ' ADC Çıkışı Çözünürlüğü (Bit)
DEFINE  ADC_CLOCK      3    ' Saat kaynağı (rc = 3)
DEFINE  ADC_SAMPLEUS    50    ' Örnekleme zamanı uS

ADCIN0 VAR WORD ' ADC0 Çıkışı Alınan Değişken
ADCIN1 VAR WORD ' ADC1 Çıkışı Alınan Değişken
ADCIN0F VAR WORD ' ADC0 Çıkışı Alınan Değişken
ADCIN1F VAR WORD ' ADC1 Çıkışı Alınan Değişken
FSVOLT0 VAR BYTE                ' ADC Full Scala Voltajı Kanal 0 (0-255)
FSVOLT1 VAR BYTE                ' ADC Full Scala Voltajı Kanal 1 (0-255)
OLDDSP0    VAR BYTE
OLDDSP1    VAR BYTE
TRISA = %11111111 ' PORTA nın tümü girdi
TRISC = %11111111 ' PORTA nın tümü girdi
      ADCON1 = %10000010 ' PORTA analog and right justify result
        Low PORTB.1 ' LCD R/W Hattı sıfır (Yazma modu)(W)

        Pause 50      ' 5 Saniye Bekle
LCDOUT $FE, 1 'EKRANI TEMİZLE
' *******************
' EKRANA LOGO YAZMA        
' *******************
LCDOUT $FE, $80 'BİRİNCİ SATIR BAŞI
LCDOUT "ENGİN GEZİCİ"
' LCDOUT $FE, $C0 'İKİNCİ SATIR BAŞI
' LCDOUT "MANYETİK MİXER"
FSVOLT0 = 50 'LCD de ölçülecek FULL SCALA Volt
FSVOLT1 = 11 'LCD de ölçülecek FULL SCALA Volt

pause  1000
LCDOUT $FE, 1 'EKRANI TEMİZLE
OLDDSP0=32767
OLDDSP1=32767
OKU0:
ADCIN 0,ADCIN0 ' Read channel 0 to adcval (0-1023)
if adcin0<>olddsp0 then
if ADCIN0>1000 then
LCDOUT $FE, $80  'BIRINCI SATIR BASI
LCDOUT "  YUKSEK VOLT  "    'DEC ADCIN0H,",",DEC ADCIN0L
            else
ADCIN0F=((ADCIN0*FSVOLT0)/10)

' *******************
' EKRANA YAZMA        
' *******************
LCDOUT $FE, $80  'BIRINCI SATIR BASI
LCDOUT " ",DEC2(ADCIN0F/100),",",DEC2(ADCIN0F)," - ","VOLT  "'DEC ADCIN0H,",",DEC ADCIN0L
        endif
olddsp0=adcin0
endif

ADCIN 1,ADCIN1 ' Read channel 1 to adval (0-1023)
if adcin1<>olddsp1 then
if ADCIN1>1000 then
LCDOUT $FE, $C0  'BIRINCI SATIR BASI
LCDOUT "  YUKSEK AMPER  "    'DEC ADCIN0H,",",DEC ADCIN0L
        else
ADCIN1F=(ADCIN1*FSVOLT1)/10

' *******************
' EKRANA YAZMA        
' *******************
LCDOUT $FE, $C0  'BIRINCI SATIR BASI
LCDOUT " ",DEC2(ADCIN1F/100),",",DEC2(ADCIN1F)," - ","AMPER  "'DEC ADCIN0H,",",DEC ADCIN0L
endif
olddsp1=adcin1
endif
Pause 200      ' Wait .1 second
GoTo OKU0      ' Do it forever
End

ete

Program PBP da yazılmış ve sorunsuz derlenebiliyor.
Ete

rayman

Tamam ama Micro Code Studio  da neden compile yapınca hex vermiyor ?

ete

Hex PBP yada BAS uzantılı dosyanın olduğu klasörde oluşur. Ancak derleme işi hata ile sonuçlanırsa hex de oluşmaz tabiiki. Derleme sonrası sol alt köşede "Success :721 Words used" şeklinde bir ibare çıkmış olması gerekir.
Tavsiyem şu program içinde bir sigorta satırı mevcut. O satırı başına noktalı virgül koyarak kapat sonra derlemeye çalış bakalım sonuç ne olacak?
Derleme başarılı olur ve hex dosyasını ilgili yerde görürsen bir şekilde o sigorta satırı açık şiken o derlemeyi yaptırmak gerekecek. Bu aşamayı ayrıca konuşmamız gerekecek. Zira kullandığın MCS versiyonu (Help butonuna tıklayarak ardından About seçeneğini seçerek versiyonu görebilirsin.), kullandığın derleyici versiyonu gibi bilgileri bilmemiz gerekiyor. Zira sorun sigorta ayarı ise o sigorta ayarını derleyici versiyonuna uydurmak gerekecek.
Zaten derlemede bir hata çıkıyor ise onunda resmini çekip buraya koymanda yarar var böylece hatanın hangi satırda meydana geldiğini kolaylıkla anlayabiliriz.


Ete

rayman

Aynen oldu . Hata vermedi yukardaki Success oldu. Bu işaretlediğim hs yazan osc kısmının başına ; koydum. Oldu.. Ama masa üstündeki klasörün içinde Hex oluşmadı.


rayman

Ete hocam yaptım sadece bir hata var.. 2. satırdaki yazı çıkmıyor. Video çektim  https://dosya.co/jk49fcslyooj/20210503_124718.mp4.html

ete

Video daki sonuç gösteriyorki kullandığın derleyici versiyonu ile programda gösterdiğin sigorta versiyonu bir birini tutmuyor. Dolayısıyla sigorta gösterim yada yazılım şeklini derleyici versiyonuna uydurmak gerekecek. Bunun için bazı şeyler daha istemiştim onları vermemişsin. Verseydin çözümü burada söylerdim.

Şimdi sigorta ayarını kapatıp oluşturduğun hex dosyasında gerçek devrede sıkıntılar olabilir. Bu nedenle o sigorta ayarı açılıp öyle derleme yapılmalıdır ama dediğim gibi sigorta ayarının verisyona uydurulması şartı ile.

Simulasyonda LCD ekranda altta çıkmayan yazıya gelince, dikkat edersen o çıkmayan yazının komut satırında yazının nereye yazılacağına dair bir bilgi verilmemiş. Yanlızca LCDOUT "MANYETIK MIXER" şeklinde verilmiş komut.
Bu satırı, LCDOUT $FE,$C0,"MANYETIK MIXER"  şeklinde değiştir istediğin olacaktır.
Diyeceksinki ilk satırda da direk komut yazılmış. Ama o komutun öncesinde yazılmış olan,
LCDOUT $FE, $80 'BİRİNCİ SATIR BAŞI  satırı nereye yazılacağını belirliyor. Aynı şey ikinci satır içinde var ama onu kapalı tuttuğun için yazı ekrana gelemedi. İster benim yazdığım gibi yaz ister kapalı olan şu satırı açık hale getir, LCDOUT $FE, $C0 'İKİNCİ SATIR BAŞI

Sigorta ayarlarını düzeltmek için aşağıdaki linkteki açıklamalarımı okursan bir çözüme ulaşırsın diye düşünüyorum.

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

Ete

rayman



Buda oldu ama  , amper yazıyor iki satırdada

ete

Ne olduğunu anlamak zor. Buraya simulasyonuda koymadığın için üşenmedim basit bir şey hazırlayıp denedim bende birinde volt diğerinde amper çıkıyor. Bu programı kim yazmış ise ona danışman lazım olacak. Zira iki satırada amper yazdıracak bir komut yok benim gördüğüm kısmında.

Ete

rayman

Sizi yaptığınız hexi buraya atabilirmisiniz simülasyonda bende deneyeyim

ete

Ben her şeyi sildim kaldırdım. Sen asıl kullandığın dosyayı buraya koy ki neden her iki satırda da Amper yazdığına bakalım.

Ete

rayman

Ete hocam gerek kalmadı. Çok iyi çalışıyor sağol.. YAni halletim herşeyi. Ancak ikinci satır olayını halledemedim onada gerek kalmadı :D

Powered by EzPortal