CEP TEL. AKILLI EV PROJESİ acil yardım

Başlatan kaysal, 05 Ekim 2007, 12:16:33

betüll

merhaba arkadaslar bi sorum olacaktı jal dilinde bi program yazdım ancak derlerken hata veriyo hatayı ise kodda "delay_20s"yazdığım satırda gösteriyo.bu satırı yazmazsam derlerken herhangi bi sorun oluşmuyo .
ancak bu kodu mutlaka kullanmam lazım.
bunun neden kaynaklanıyor olabilir?
kod ise şöyle:
include 16f84_4
include jlib

include dtmf

disable_a_d_functions

port_a_direction = all_input

pin_b0_direction = output
pin_b1_direction = output
pin_b2_direction = output
pin_b3_direction = output

pin_b4_direction = input
pin_b5_direction = input
pin_b6_direction = input
pin_b7_direction = input


var byte x = 0 , dt

port_b = 0

forever loop
      delay_20s // hataya sebep olan kod...???
      pin_b0 = ! pin_b0
  if dtmf_oku ( dt ) then
     if      x == 0 & dt == "1" then x = x + 1
       elsif x == 1 & dt == "2" then x = x + 1
       elsif x == 2 & dt == "3" then x = x + 1
       elsif x == 3 & dt == "4" then x = x + 1
       elsif x == 4 & dt == "#" then x = 0
       elsif x == 4 & dt == "1" then pin_b1 = ! pin_b1
       elsif x == 4 & dt == "2" then pin_b2 = ! pin_b2
       elsif x == 4 & dt == "3" then pin_b3 = ! pin_b3

       elsif x == 4 then delay_500ms
     else    x = 0
     end if

     while dtmf_std_pin == high loop end loop
end if
end loop
ideallerim neredeyse ben oradayım..

birkan

delay_20s olan satırı delay_20ms olarak değiştirip dener misiniz.

prof_81

#17
delay_1s (20) şeklinde yazarsan hata almazsın. Ama oradaki 20sn gecikmeye anlam veremedim 20ms olabilir. Serkan Ayyıldız'ın kitabındaki örnek mi bu?

kreek

DTMF biraz ilginç olur kanımca. Bence GSM modem(veya telefon) vasıtası ile çok güzel bir proje ortaya çıkabilir. Biraz NMEA kodlarını(AT) araştırıp, sms vasıtası ile kontrol edilebilir. Çıkışlar da daha kontrollü olur, çoklanabilir.
İyi çalışmalar.

betüll

delay_20s komutunu ms olarak değistiremem.cünkü 20 saniyelik bi gecikmeye ihtiyacım var.20 saniye bekleyip hatta bağlı olan role enerjılenecek ama galiba hatamı buldum.delay_1s (20) yazmam lazım.
bilgileriniz için tesekkür ederim...kodu bide böyle deneyeceğim..
ideallerim neredeyse ben oradayım..

prof_81

delay_1s (20) kullanabilirsin benim paylaştığım proje dosyalarını da bir incele istersen jal dili ile yazmıştım.

https://www.picproje.org/index.php/topic,21158.0.html

takıldığın bir yer olursa belirt yardımcı olabilirim.



betüll

hocam ben devreyi bastım benimki de yaklaşık böyle bi devre 20saniyenin amacı şu:hat 5 calma sinyalinden sonra acılsın istiyorum bu 5 calma sinyali 20saniyeye denk geliyo bende ha 5 defa caldırmışım ha 20sn beklemişim diye üşündüm hem böylelikle optocoupler e ihtiyacım da olmayacak bakalım devreyi bastık lehim asamasında insallah calışır.
bilgileriniz için tesekkürler...
ideallerim neredeyse ben oradayım..

prof_81

bir kerede çalsa açılacak  20sn sonra , hattı ne zaman kapatacak onuda hesapladın mı? kodları inceledim çalışır büyük ihtimal bana sanki biraz eksik gibi geldi. yap bir çalıştır sonrada bizi bilgilendir çalıştı mı çalışmadı mı öğrenelim :)

betüll

arkadaslar merhabalar;
yazmakta olduğum bi jal kodum var.derlemede bi hata verdi ancak hatanın sebebini anlayamadım.bana yardımcı olur musunuz?..şimdiden tesekkürler... kod ise şu:
include 16f84_4
include jlib
include dtmf
pin_b0_direction = output                    -- hat_rolesi
pin_b1_direction = output                    -- role_1
pin_b2_direction = output                    -- role_2
pin_b3_direction = output                    -- role_3
pin_b4_direction = output
pin_b5_direction = output
pin_b6_direction = output
pin_b7_direction = input                     -- puls_sayan_giris
port_a_direction = all_input                 -- tus bilgisinin geldigi portlar

var byte x = 0 , dt , SAY = 0x50 , sure = 20
port_b = 0

procedure hat_ac is

assembler
local A , B , C
A : BTFSC port_b , 7
     GOTO A
     GOTO B
B : MOVLW H'50'  ///hatayı burda gösteriyo ...???
     MOVWF SAY
     DECF SAY , 1
C : BTFSS port_b , 7
     GOTO C
     GOTO A
end assembler
if pin_b7 == low & SAY == 0 then pin_b0 = high end if
while pin_b7 == low loop end loop
sifre_control
end procedure

procedure sifre_control is                   -- bu alt program telefon sifreleme
  if dtmf_oku ( dt ) then                     -- bilgisini icerir...
     if      x == 0 & dt == "1" then x = x + 1
       elsif x == 1 & dt == "2" then x = x + 1
       elsif x == 2 & dt == "3" then x = x + 1
       elsif x == 3 & dt == "4" then x = x + 1
       elsif x == 4 & dt == "#" then pin_b0 = low
       x = 0
       SAY = 0x50
       sure = 20
       elsif x == 4 & dt == "1" then pin_b1 = high
       elsif x == 4 & dt == "2" then pin_b2 = high
       elsif x == 4 & dt == "3" then pin_b3 = high
     end if
     while dtmf_std_pin == high loop end loop
end if
end procedure

procedure hat_kapat is                                    -- bu alt program 20saniye
if pin_b0 == high & pin_a0 == low then      -- tus bilgisi gelmediginde hatti  kapatir...
sure = sure - 1
delay_1s                                 end if
if sure == 0 then pin_b0 = low
SAY = 0x50
x = 0
sure = 20
end if
if pin_a0 == high then
x = 0
SAY = 0x50
sure = 20 end if
end procedure

forever loop
hat_ac
hat_kapat
sifre_kontrol
end loop
ideallerim neredeyse ben oradayım..

betüll

jal içinde asm komutlarını kullanma imkanımız var bunu assembler ..... end assembler bloğu içinde kullanabiliyoruz yazdığım kod da asm dilinde hata vermemesi gerekır kaldı kı oldukca basit kodlardan olusmus.neden hata verdiğini anlamadım...?
ideallerim neredeyse ben oradayım..

justice_for_all

sizin programınız sadce assembly kodunda hata vermiyor assembly kodunu cıkarınca baska satırlardada hata gosteriyor...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

betüll

asm satırını cıkarıp denemedim ama kodun hata vermemesi lazım hatalı olan hangi kod hocam suanda bulunduğum bilg.de jal yok buyüzden asm satırını cıkarıp derleyemiyorum hatanın nerde olduğunu söylermisiniz?
ideallerim neredeyse ben oradayım..

justice_for_all

 procedure sifre_control sanirim bu satirda da hata veriyodu bunun nedeni su olabilir sifre_kontrol fonksiyonunu tanitmadan once fonksiyonu cagirmissin..

jalda prototip olarak tanitma var mi acaba??
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

betüll

hımm hatanın sebebi şu sanırım biz alt program kullnacaksak bunu  forever loop..... end loop bolmesinde tekrar cagırıyoruz ama bi sartla program içinde tekrar cagırmayacaksak.(yanlış biliyorsam lütfen düzeltin )bende sifre_kontrol alt programını program satırında bi yerde tekrar cağırıyorum.dolayısıyla forever loop end loop bloğundan bu satırı cıkarırsam hata da giderilmiş olacaktır diye tahmin ediyorum...
zaten burda hata verir diye düşünüyodum ama beni esas düşündüren asm kodlarını kullandığım satır.burdaki hatayı hala çözmüş değilim  ???
ideallerim neredeyse ben oradayım..

dombilik

Jal dilinden anlamam ama;
Assembler kısmında derleyicinizin
kendine has bazı assembly uygulamaları olabilir.
Zira;
assembler
 local A , B , C
 A :BTFSC port_b , 7
     GOTO A
     GOTO B
 B :MOVLW H'50'  ///hatayı burda gösteriyo ...
     MOVWF SAY
     DECF SAY , 1
 C : BTFSS port_b , 7
     GOTO C
     GOTO A
 end assembler


A,B,C labellarından sonraki ":" karakterlerinin
olmaması lazım.
A 
   BTFSC port_b , 7
   GOTO A
   GOTO B
 B 
   MOVLW H'50'  ///hatayı burda gösteriyo ...
   MOVWF SAY
   DECF SAY , 1
 C 
   BTFSS port_b , 7
   GOTO C
   GOTO A

gibi olmalı..
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40