avatar_mc_no_fear

programlı kombi termostatı yardım

Başlatan mc_no_fear, 04 Ocak 2015, 22:23:33

mc_no_fear

win8.1 64 bit kullanıyorum.
ayarları yaptım.
Sıfırdan program yazdığımda hata almadan derleyebiliyorum.

rambili

Programın Başındaki Device ları

;@ DEVICE PIC16F876                      'işlemci 16F876                                ;
;@ DEVICE PIC16F876, WDT_on              'Watch Dog timer açık
;@ DEVICE PIC16F876, PWRT_ON             'Power on timer açık
;@ DEVICE PIC16F876, PROTECT_OFF         'Kod Protek kapalı
;@ DEVICE PIC16F876, XT_OSC              'XT osilatör kullanılacak
;@ DEVICE pic16F876, BOD_ON             ' Brown-Out Detect


olarak apat.
pbp içinden 16F876.bas dosyasını aç. ve __Config  le başlayan satırının önüne ; işareti koy. ve ve __Cofig satırını al programın daşına koy. (tabi ki ; işaretini kaldır.)

MSPAM seceneği complarir da işaretli olacak. ondan sonra derleyebilirsin.


Veya bir başka çözüm yolu VMWare Player kurarsın. XP kur. Win8.1 deki dosya dizinini paylaştır. Xp den o nun yolunu verirsen ağa bulabilirsin tüm denemelerini orada yapar ve derlersin.

Ben işyerinde öyle yapıyorum. Evdeki PC Win7thin yüklü..
Zaman su gibidir.
Bazen deli bir ırmak, bazende durgun akar.

ete

#32
Verici isimli programda ADRES isimli değişken program içinde kullanılmakta ancak değişken tanımlamalarında adı geçmemektedir. Kısaca bu tanımlanmamış değişkendir ve derleme esnasında bu yüzden hata vermektedir.
Değişkeni ADRES olarak tanımlasanız bile bu seferde başka bir hata çıkacaktır. Çünki ADRES ismi derleyici tarafından yasaklanmış değişken isimleri listesinde yer almaktadır.  Bu nedenle bu ismi ADRES şeklinde değilde ADRESS şeklinde kullanmanızı öneririm.

Buraya program koyarken derlemeden koymayın lütfen.

Ete


mc_no_fear

ETE hocam süpersiniz.
Dediğiniz değişiklikleri yaptım.
ADRESS olarak ismini değiştirdim ve ADRESS değişkenini atadım. Derleme yapıldı.  8)
Kaç günlerdir bu sorunla uğraşıyordum.Teşekkürler. ;)

mc_no_fear

#34
ETE hocam yaptığım derlemeyi pic'e yüklediğimde çalışmıyor. MicroCodeStudio ek-teki gibi bir hata veriyor.
Nette yaptığım araştırmalar sonucunda önemsiz diyenler var. Bu hatayı dikkate almayın diyenler var. HEX kodu oluşuyor ancak pice yüklediğimde program çalışmıyor. PC de simülasyonda çalışıyor. :-[

ete

MCS nin verdiği hata değil ikazdır. Pic program hafızası 2048 byte lık bloklardan oluşur. Her bir bloğu ayrı bir hafıza entegresi gibi düşünebilirsiniz. Programı ASM de yazarsanız her bir blok aşımında blok seçimi yaparak diğer hafızaya geçmeniz gerekirdi. Basic de ise bazı komutlar (BRANCH) bu blok seçimi yapılarak çalıştırılmalıdır. Geri kalanları Basic kendisi otomatik ayarlamaktadır. Kısaca söz konusu olan ikaz programın çalışmasına engel değildir. Yalnızca sizi ikaz ederek kullandığınız komutlara dikkat etmenizi sağlamak için verilir bu ikaz.

Program simulasyonda çalışp gerçek devrede çalışmıyorsa sorunu başka yerlerde aramak gerek. Bunun olası sebeplerini aşağıdaki linkte açıklamıştım.

http://etepic.com/index.php/topic,1670.0.html

Ete

mc_no_fear

#36
Arkadaşlar ekte vermiş olduğum şema ve program şuanda sorunsuz bir şekilde çalışıyor. Şimdi sisteme sim900 gsm modülünü ekleyeceğim.  ?EVISI diye mesaj attığımda program kesme uygulayarak bana o anki ortam sıcaklığını, ?KMBISI diye mesaj attığımda bana o anki çalışma modunu ve istenen ısı derecesini, GNDISI=24 diye mesaj attığımda gündüz set değerini 24 derece olarak ve GCISI=22  diye mesaj attığımda gece set değerini 22 dereceye ayarlayıp atılan numaraya OK cevabını göndermesini istiyorum. AT komutlarını hyperterminal ile kullanabiliyorum. pic'ede entegre edebilirim. Ancak sıkıntım STR değerlerini kıyaslamasını bilmiyorum. yanı if EVISI then HSEROUT ........
bu sorguyu nasıl yapabilirim? 1 yada iki karakter yapabiliyorum. Ancak sorgulatmak istediğim karakter sayısı artınca ne yapmam gerektiğini bilmiyorum? Yardımcı olabilirmisiniz???

enginkanat

sorduğun soru için bende çok uğraştım. microcode studio picbasic ile istediğin işlem çok fazla karmaşık, bir dizin oluşturup o dizinin içine tek tek eklemen gerekiyor
gelen var byte[6]
gibi burada gelen dizisine 7 adet karakter atabilirsin.
HSERIN [Str gelen\6] gibi.
if gelen="merhaba" then kullanarak karşılaştırırsın

bir sorun ise bu şekilde kullanımda kullanacağın işlemciye göre değişen bir sınır var. mesela ben 16f628a kullandım 3 farklı dizi oluşturmak istedim dizi boyu 80 karakterle sınırlandı.

micro basic dilinde string ifadeleri çok daha kolay tanımlayıp işlemler yapabiliyorsun ancak bu programında ücretsiz versiyonunda uzun kodlar yazamıyorsun belli bir satır sınırı var. basicten başka diller de de bu durum için destek mevcut JAL da mesela

ete

#38
Gelen bilgiyi nasıl alacağınızı belirtmemişsiniz. Öncelikle karşılaştırılacak karekter sayısını en uzun karektere göre ayarlayıp hepsini aynı boya getirin bu size kullanımda kolaylık sağlayacak.
Daha sonra gönderilmiş bilgiyi. WAITSTR gelen\x  , (x burada alınacak karekter sayısını belirliyor), komutu ile alın. Bu aşamadan sonra karşılaştırma işlemine geçebilirsiniz.
ESIT=1
For I=0 to x
   Lookup I,["KMBISI"],temp
   If temp!=gelen[I] then
        ESIT=0
        Exit
   Endif
Next
If ESIT=0 ise eşit değil
IF EST=1 ise eşit demektir
Ete

mc_no_fear

#39
Sayın ete hocam. Öncelikle ilginiz için teşekkür ederim. verdiğiniz kod
ESIT=1
For I=0 to 6
   Lookup I,["KMBISI"],temp
   If temp!=gelen then
        ESIT=0
        Exit
   Endif
Next
If ESIT=0 ise eşit değil
IF EST=1 ise eşit demektir

Benim yazdığım:

SORU    VAR BYTE[6]
ESIT      VAR BYTE
KYSL     VAR BYTE[6]


ESIT=1
HSERIN [STR SORU\6]
For I=0 to 6
   Lookup I,["KMBISI"],KYSL
   If KYSL==SORU then
        ESIT=0
   Endif
Next
If ESIT=0 THEN HSEROUT ["DOGRU",10,13]
IF ESIT=1 THEN HSEROUT ["YANLIS",10,13]

K yada M yada B yada I yada S harflerinden herhangi birisine 6 kere basarsam kabul ediyor. Ben biryerde hatamı yapıyorum? Kelimenin tamamını kıyaslatmak istiyorum. harf harf değil. Yani  "KMBISI" kelimesinin tamamını
K+M+B+I+S+I  doğru
L+M+B+I+S+I  yanlış

ete

6 harfli kelime için 7 defalık döngü kuruyorsun. Kusur bu.
Ete

mc_no_fear

ESIT=1
HSERIN [STR SORU\6]
For I=0 to 5
   Lookup I,["KMBISI"],KYSL
   If KYSL==SORU then
        ESIT=0
   Endif
Next
If ESIT=0 THEN HSEROUT ["DOGRU",10,13]
IF ESIT=1 THEN HSEROUT ["YANLIS",10,13]

bu şekilde düzenledim hocam. Ancak sorunum yine aynı. 6 defa K harfine bassamda KMBISI değerinide yazarsam sonuç aynı. 6 defa K ye basınca hata verecek. sadece KMBISI yazınca doğru diyecek. Bunun dışındakilerde harf hatasıda olsa yanlış demesini istiyorum...

ete

#42
If KYSL==SORU then      şeklinde olmaz.
If KYSL==SORU[I] then  şeklinde olmalı

ete

mc_no_fear

hocam ne farkı var? sizin yazdığınız komut ile benim yazdığım komutun :-\

ete

Kod tag içine almayınca benim yazdıklarımın bir kısmı çıkmamış.senin yadığında soru isimli değişken ındex ile birlikte kullanılmadığı için hep soru(0) değişkenine karşılık gelen karşılaştırıluyor idi. Bu şekilde yazılınca index değeri ile seçilen harf karşılaştırılmış olacaktır.
Ete

Powered by EzPortal