Picbasic DTMF yardım

Başlatan nazima, 01 Ekim 2006, 23:43:42

nazima

Merhaba arkadaşlar;

Proton ile Pic 16f84 kullanarak  kullanıcı tarafından pic eeproma girilen numarayı otomatik olarak arayan bir devre yapmak istiyorum.bununla ilgili olarak ustaların yardımına ihtiyaçım var.

bir şeyler yazdım kodu inceleyip eksik taraflarını bildirirseniz sevinirim.

Not:numara girişi bitince kullanıcı * tuşluyor.

device 16f84

DIM VAR1 as BYTE
dim sec as byte
dim dtmf As Byte
sec = 0

if porta.1 = 0 then otoara

main:

sec = sec + 1
VAR1 = INKEY      
DELAYMS 50        
EWRITE sec , [var1]
goto main

otoara:

SEC = SEC + 1  
dtmf = EREAD sec
if dtmf = "*" then ara
DELAYMS 50      
dtmfout PORTA.0 , 500 , 100 ,[dtmf] ' Dtmf out var1
goto otoara

ara:

VAR1 = INKEY      
DELAYMS 50        
dtmfout PORTA.0 , 500 , 100 ,[VAR1]

goto ara

end
Cevabın bir parçası değilsen,sorunun bir parçasısın demektir..  Rafi Eitan

aslan_korhan

PIC'den iyi bir DTMF sinyali almak istiyorsan kristalin en az 10MHz olmak zorunda.

Bu işlemler için ayrı bir DTMF Ton entegresini kullanırsan daha iyi sonuç verir.

Örneğin TP5088
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

Veli B.

device 16f84
DIM VAR1 as BYTE
dim sec as byte
dim dtmf[15] As Byte
DIM I AS BYTE
symbol OT_ARA=PORTA.1
sec = 0 
main:
VAR1 = INKEY
IF VAR1<>13 THEN
    DELAYMS 50
    GOSUB YAZ
ENDIF
if OT_ARA= 0 then otoara
goto main
'***************************
YAZ:
EWRITE sec , [var1]
VAR1=13
INC SEC
RETURN

otoara:
FOR I=0 TO 15
    dtmf[I] = EREAD I
    if dtmf[I] = 11 then ara
NEXT I
goto MAIN
ara:
I=0
'HAT_AC=1 ' DTMF SİNYALLERİNİ HATTA BASMADAN ÖNCE YOL VERMEN LAZIM EĞER TELLİ HAT KULLANIYORSAN...
'DELAYMS 1000 ' 1 SN KADAR BEKLEMEN LAZIM
dtmfout PORTA.0 , 500 , 100 ,[dtmf[0],dtmf[1],dtmf[2],dtmf[3],dtmf[4],dtmf[5],dtmf[6],dtmf[7],dtmf[8],dtmf[9],dtmf[10],dtmf[11],dtmf[12],dtmf[13]] ' Dtmf out var1
'ARAMADAN SONRA YAPTIRACAĞIN BAŞKA İŞLEMLER VAR İSE ONLARI BURADA YAPTIRABİLİRSİN
'HATTI KAPATMAN LAZIM
goto MAIN

end

Mantık için yazılmıştır.Gerekli düzeltmeleri kendi programına göre yaparsın.Bence bir hayli düzeltme yapman gerekli.
-Kaç farklı numara girilecek?
-İlk çalıştırmada numara girilip, hafızaya alınmış mı kontrol edilmeli! (hafızada numara yoksa ve otoara istenirse ne olacak)
-Arama yapıldıktan sonra karşı taraftan bir tepki almalı ve buna göre gerekli işlemleri yapmalı.
-Kristal 20 Mhz ve filitre katı kesinlikle olmalı.Telli hat kullanılacaksa hat empedansı ile uyum sağlanmalı ve gerekli AC/DC korumalar eklenmeli.
-Hatta sinyal bindirmeden önce hat açılmalı ve arama ve işlemler bittikten sonra kapatılmalı.
-Arama sonucunda karşı tarafın açamayacağı/meşgul olabileceği ihtimalleri gözönüne alınarak gerekli tedbirler alınmalı.
Aklıma hemen gelenler bunlar.

Andromeda

dtmf entegresi kullan.bu arada birşey hatırlatayım.
pic le doğrudan aramaların sırasında pic yeterli kalitede sinyal üretemeyeceği için yanlış numaraları durmadan arama ihtimali var.
20 mhz değilse özellikle.
sende program çalışmıyor zannedersin.karşıdaki kişide deli olabilir.
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"