Pic basic pro device komutlarını hata veriyor

Başlatan yasargunaydin, 04 Haziran 2019, 22:45:01

yasargunaydin

İyi akşamlar
pic16f628 de basit bir LCD ekran çalışmam var.Daha önce kullandığım microcode studio da derlerken  @ DEVICE komutlarında hata vermiyordu.Yeni versiyondan heralde  aşağıdakilerin hepsini hata veriyor.
LCD de çalışmıyor .Ne yapmam gerekiyor.

@ DEVICE pic16F628 'işlemci 16F628
@ DEVICE pic16F628, WDT_ON 'Watch  Dog timer açık
@ DEVICE pic16F628, PWRT_ON  'Power  on timer açık
@ DEVICE pic16F628, PROTECT_OFF 'Kod  Protek kapalı
@ DEVICE pic16F628, MCLR_off            'MCLR pini kullanılMIYOR.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak




Proğram bu.

TRISA=%11111111
TRISB=%00000010

DEFINE OSC 4
DEFINE LCD_DREG      PORTA   'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT      0      'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG      PORTA   'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT      7      'LCD Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG   PORTA   'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT   6      'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS      4      'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES   2      'LCD Kaç sıra yazabiliyor




 
portb=%00000100
CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
INTCON=%11000000

'PAUSE 200  ' LCD nin kullanıma hazır hale  gelebilmesi için gerekli süre
'LCDOUT $FE,1  ' Ekran silindi


BASLA:
    LCDOUT $FE,$84,"ANT"
    LCDOUT $fe,$C0,"GIR="
  portb=%00000100
  PAUSE 100

 
GOTO BASLA

ete

#1
Yeni version derken şayet 3,x versiyonlardan birisi ise sigorta ayarları #CONFIG. Komutu altına alt alta dizilerek veriliyor. Sigorta satırları ;
_config şbaresi ile başlıyor.
Sonunda, #ENDCONFIG ile bitiriliyor.
Tek satır halinde de verilebilir sigortalar,
#CONFIG
  __config _BODEN_ON & _BOREN_ON & _CP_ON & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT
#ENDCONFIG

Ete

yasargunaydin

Hocam,
dediğiniz gibi yaptım yine hata verdi.Amacım Pic16f6278a ekrana yazı yazdırmak.Proğram hata veriyor.device komutları silince hata vermiyor fakat ekranda yazı çıkmıyor. Microcode studio version 4.0.0.0   bunu yeni indirdim ve kurdum.Öncekilerde device komutlarını yazınca hata vermiyordu.






yasargunaydin


İlginç,pic16f84a çalıştı..device komutsuz.Sorun 16f628de.osc 4   ile mi alakalı acaba

TRISA=%11111111
TRISB=%00000011



DEFINE LCD_DREG      PORTB   'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT      0      'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG      PORTB   'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT      5      'LCD Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG   PORTB   'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT   4      'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS      4      'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES   2      'LCD Kaç sıra yazabiliyor

DEFINE OSC 4
'-------------------------------------------------------------------------
portb=%00000100



BASLA:

    LCDOUT $FE,$80,"ANT"
    LCDOUT $fe,$C0,"GIR=" 
  portb=%00000100
  PAUSE 100

 
GOTO BASLA

yasargunaydin

Çözdüm,rs ve e bacaklarını ra6 ve ra7  clk bacaklarına bağlıydı.değiştirdimçalıştı.B portuna aldım bütün bacakları.Yalnız benim eski projelerimde var, clk a6 ve ra7 bacaklara bağlı olmasına rağmen ekranı çalıştırmışım...

ete

BAsic derleyicileri sigorta ayarı vermeden sorunsuz derleme yapabilir. Ancak sigortalar eksik kalırsa program çalışmayabilir.

Basic versiyonuna göre hem MCS versiyonu hemde sigorta ayarı verilme şekli değişmektedir.
PBP2.60 ile birlikte MCS versiyon 4.0 ile birlikte sigorta verilme şekli makinanın 32 bit yada 64 bit olmasına göre değişiyor.
32 bit makinalarda,

@ DEVICE pic16F628 'işlemci 16F628
@ DEVICE pic16F628, WDT_ON 'Watch  Dog timer açık
şeklinde verilirken 64 bit makinalarda,
@ __config _BODEN_ON & _BOREN_ON & _CP_ON & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT
şeklinde verilir.

PBP versiyon 3.x serisinde MCS versiyon 5.0 kullanılır ve sigorta ayarları,
#config
   __config _BODEN_ON & _BOREN_ON & _CP_ON & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT
#endconfig
şeklinde verilir.

Gelelim PORTA.6 ve PORTA.7 nin kullanım şekline,
Söz konusu pinler aslında Osilatör pinleridir. Bu pinlere harici kristal bağlanır.
Ancak Pic de (16F628A) şayet dahili Osilatör kullanılır ise bu bacakları normal input/output pini olarak kullanabilmeniz mümkün olur. Tabiiki yine sigorta ayarlarından gerekli ayarlamayı yaptıktan sonra bunu yapabilirsiniz. _INTRC_OSC_NOCLKOUT  komutu dahili osilatörü kullanır ve OSC pinlerinden CLK çıkışını da iptal ettiği için PORTA.6 ve PORTA.7 pinlerini giriş çıkış işlemlerinde kullanmanıza imkan tanır.
Bu şekilde bir işi bilerek yapmak kolaylaştıracaktır.
Pic 16F84A da dahili osc olmadığından PORTA.6 ve PORTA.7 pinlerini başka amaçlarla kullanmanız mümkün değildir.
Ayrıca 16F628A ile 16F84A aynı kılıf yapısında olduklarından programları ufak tefek farklarla birbirlerinde çalışabilir. Ama aralarındaki farklara dikkat etmek gerekiyor.
628A da komparatör vardır F84A da yoktur.
628A da dahili OSC vardır, 84A da yoktur.

Ete


yasargunaydin

#6
Erdal bey verdiğiniz bilgiler için çok teşekkürler,fakat yine bir hata var ekte resimde görebilirsiniz, 2 saattir uğraşıyorum bulamadım.Bilgisayarım 64bit.Pic basic pro 2.60 kurmuşum.Microcode studio dosya sürümü 4.0.0.0  Mplap tools V8.15a  Bu kadar uzattığım içinde konuyu çok üzgünüm.
Peki Hocam sanırım Mpasm ayarları ile ilgili.Çünkü  15 ağustos 2011 tarihinde Quantum adlı üyenizde benzer sorunla karşılaşmış ve siz senin için gerekli düzeltmeyi yaptım  ve MPASM de şimdi sorunsuz derleniyor yazmışsınız.MPASM klasörü içinde yer alan P16F84A.INC dosyasını açtım burada e düzeltmesi yapacağımı bilemedim.



ete

Öncelikle aşağıdaki linkte yazılanları dikkatlice okuyup orada önerilenleri yerime getirmen gerekiyor.

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

Gördüğüm hata sigorta ayarlarının hem program içinden verilmesi hemde işlemciye ait olan ve MPASM klasörü içinde yer alan işlemciye ait xxxx.INC dosyası içindeki sigorta ayarlarını işlemeye çalışıyor ve bu nedenle görülen hata meydana geliyor. Bu hatayı düzeltmenin tek yolu işlemciye ait olan ve MPASM klasörü içinde yer alan xxx.INC dosyasındaki sigorta ayarlarının başına ";" koyularak ilgili satırların kapatılması ve yeniden geri kayıt edilmesi gerekiyor. Verdiğim linkte bunun detayları anlatılmıştır.

Ete 

Powered by EzPortal